Explorar el Código

修改bug:
bug表1144,私有应收-车险/非车结算明细 保司搜不出来结果

jiakai hace 2 semanas
padre
commit
f2c46eaddb

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementQueryVo.java

@@ -77,6 +77,9 @@ public class SettlementQueryVo extends PageRequest {
     @Schema(description = "开票类型集合")
     @Schema(description = "开票类型集合")
     private List<String> invoiceTypes;
     private List<String> invoiceTypes;
 
 
+    @Schema(description = "公司id集合")
+    private List<String> companyIdList;
+
     @Schema(description = "协议类型 1-平台协议 2-私有协议")
     @Schema(description = "协议类型 1-平台协议 2-私有协议")
     private String agreementType;
     private String agreementType;
 
 

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

@@ -5577,6 +5577,24 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("superviseSettlementDetailExcel:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         log.info("superviseSettlementDetailExcel:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         settlementQueryVo.setSystemCode(baseController.getSystemCode());
         settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = null;
         Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = null;
+
+        // 1. 一次性获取保险公司全量Map,全局复用
+        Map<String, EsmInsCompany> companyMap = getAllInsCompanyMap();
+        if (CollUtil.isEmpty(companyMap)) {
+            return exportSuperviseSettlementDetailExcelDtos;
+        }
+
+        // 查询当前公司下所有的子公司
+        if (StrUtil.isNotBlank(settlementQueryVo.getCompanyId())){
+            // 将全量数据按照 parentId 进行分组,key 是 parentId,value 是该 parentId 下的所有公司列表
+            Map<String, List<EsmInsCompany>> parentGroupMap = companyMap.values().stream()
+                    .filter(c -> c.getParentId() != null)
+                    .collect(Collectors.groupingBy(EsmInsCompany::getParentId));
+            List<String> allChildIdspOtimized = getAllChildIdsOptimized(settlementQueryVo.getCompanyId(), parentGroupMap);
+            allChildIdspOtimized.add(settlementQueryVo.getCompanyId());
+            settlementQueryVo.setCompanyIdList(allChildIdspOtimized);
+        }
+
         if (settlementQueryVo.getInvoiceTypes().contains("5") && settlementQueryVo.getInvoiceTypes().contains("6")) {
         if (settlementQueryVo.getInvoiceTypes().contains("5") && settlementQueryVo.getInvoiceTypes().contains("6")) {
             exportSuperviseSettlementDetailExcelDtos = baseMapper.getPlatFormSettlementDetailExcelDtos(page, settlementQueryVo);
             exportSuperviseSettlementDetailExcelDtos = baseMapper.getPlatFormSettlementDetailExcelDtos(page, settlementQueryVo);
         }else{
         }else{

+ 10 - 4
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -978,8 +978,11 @@
             <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
             <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
                 AND ipii.id = #{settlementQueryVo.invoiceId}
                 AND ipii.id = #{settlementQueryVo.invoiceId}
             </if>
             </if>
-            <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
-                AND ipi.partner_company_id = #{settlementQueryVo.companyId}
+            <if test="settlementQueryVo.companyIdList != null and settlementQueryVo.companyIdList.size() > 0" >
+                AND ipi.partner_company_id in
+                <foreach collection="settlementQueryVo.companyIdList" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
             </if>
             <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
             <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
                 AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
                 AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
@@ -1048,8 +1051,11 @@
             <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
             <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
                 AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
                 AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
             </if>
             </if>
-            <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
-                AND ipi.company_id = #{settlementQueryVo.companyId}
+            <if test="settlementQueryVo.companyIdList != null and settlementQueryVo.companyIdList.size() > 0" >
+                AND ipi.partner_company_id in
+                <foreach collection="settlementQueryVo.companyIdList" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
             </if>
             <if test="settlementQueryVo.contactPerson != null and settlementQueryVo.contactPerson != ''">
             <if test="settlementQueryVo.contactPerson != null and settlementQueryVo.contactPerson != ''">
                 AND ipii.contact_person = #{settlementQueryVo.contactPerson}
                 AND ipii.contact_person = #{settlementQueryVo.contactPerson}