Browse Source

保险公司查询的时候,可以查询到本公司及子公司的数据

lipf 1 month ago
parent
commit
53d4482e8f

+ 14 - 0
platform/src/main/java/com/jzg/controller/EsmInsCompanyController.java

@@ -497,4 +497,18 @@ public class EsmInsCompanyController extends BaseController {
         log.info("查询保险公司关联的所有子公司和总公司: companyId=[{}], companyIds=[{}],companyIds.size=[{}]", companyId, JSONUtil.toJsonStr(companyIds), CollUtil.size(companyIds));
         return HttpResult.ok(companyIds);
     }
+
+    /**
+     * 查询保险公司的所有子公司(含子子公司)以及保险公司本身
+     *
+     * @author lipf
+     * @date 2026/7/31 9:44
+     */
+    @GetMapping("/queryOwnAndSubCompandyIds")
+    HttpResult<List<String>> queryOwnAndSubCompandyIds(@RequestParam("companyId") String companyId){
+        List<String> companyIds = esmInsCompanyService.queryOwnAndSubCompandyIds(companyId);
+        companyIds = companyIds.stream().distinct().toList();
+        log.info("查询保险公司关联的所有子公司: companyId=[{}], companyIds=[{}],companyIds.size=[{}]", companyId, JSONUtil.toJsonStr(companyIds), CollUtil.size(companyIds));
+        return HttpResult.ok(companyIds);
+    }
 }

+ 9 - 0
platform/src/main/java/com/jzg/service/EsmInsCompanyService.java

@@ -171,6 +171,15 @@ public interface EsmInsCompanyService extends IService<EsmInsCompany> {
      * @date 2026年7月31日09:29:26
      */
     List<String> queryRelatedCompanyIds(String companyId);
+
+    /**
+     * 查询保险公司及其子保险公司
+     *
+     * @param companyId 公司id(可能是总公司,也可能是支公司)
+     * @author lipf
+     * @date 2026/8/5 9:45
+     */
+    List<String> queryOwnAndSubCompandyIds(String companyId);
 }
 
 

+ 33 - 0
platform/src/main/java/com/jzg/service/impl/EsmInsCompanyServiceImpl.java

@@ -495,6 +495,39 @@ public class EsmInsCompanyServiceImpl extends ServiceImpl<EsmInsCompanyMapper, E
         companyIds.add(esmInsCompany.getParentId());
         return companyIds;
     }
+
+    /**
+     * 查询保险公司及其子保险公司
+     *
+     * @param companyId 公司id(可能是总公司,也可能是支公司)
+     * @author lipf
+     * @date 2026/8/5 9:45
+     */
+    @Override
+    public List<String> queryOwnAndSubCompandyIds(String companyId) {
+        log.info("查询保险公司及其子保险公司(不断递归)companyId=[{}]",companyId);
+        List<String> companyIds = new  ArrayList<>();
+        companyIds.add(companyId);
+        LambdaQueryWrapper<EsmInsCompany> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EsmInsCompany::getParentId, companyId);
+        List<EsmInsCompany> esmInsCompanies = baseMapper.selectList(queryWrapper);
+        List<EsmInsCompany> childCompany = new ArrayList<>();
+        for (EsmInsCompany esmInsCompany : esmInsCompanies) {
+            companyIds.add(esmInsCompany.getId());
+            LambdaQueryWrapper<EsmInsCompany> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(EsmInsCompany::getParentId, esmInsCompany.getId());
+            childCompany = baseMapper.selectList(wrapper);
+            childCompany.stream().map(EsmInsCompany::getId).forEach(companyIds::add);
+        }
+        for (EsmInsCompany esmInsCompany : childCompany) {
+            companyIds.add(esmInsCompany.getId());
+            LambdaQueryWrapper<EsmInsCompany> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(EsmInsCompany::getParentId, esmInsCompany.getId());
+            List<EsmInsCompany> subChildCompany = baseMapper.selectList(wrapper);
+            subChildCompany.stream().map(EsmInsCompany::getId).forEach(companyIds::add);
+        }
+        return companyIds;
+    }
 }
 
 

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/client/EsmInsCompanyClient.java

@@ -86,4 +86,13 @@ public interface EsmInsCompanyClient {
      */
     @GetMapping("/esmInsCompany/queryRelatedCompanyIds")
     HttpResult<List<String>> queryRelatedCompanyIds(@RequestParam("companyId") String companyId);
+
+    /**
+     * 查询保险公司的所有子公司(含子子公司)以及保险公司本身
+     *
+     * @author lipf
+     * @date 2026/7/31 9:44
+     */
+    @GetMapping("/esmInsCompany/queryOwnAndSubCompandyIds")
+    HttpResult<List<String>> queryOwnAndSubCompandyIds(@RequestParam("companyId") String companyId);
 }

+ 11 - 7
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -1050,6 +1050,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * 优化:嵌套anyMatch改为HashMapID映射匹配,O(n²) -> O(n)
      */
     private List<InsPlyIncomeDto>  filterIncomeByInvoiceAndSettleCondition(List<InsPlyIncomeDto> incomeList, SettlementReportQueryVo queryVo) {
+        log.info("对查询条件进行转义:queryVo=[{}]", JSONUtil.toJsonStr(queryVo));
         String status = queryVo.getStatus();
         String invoiceStartTime = queryVo.getInvoiceStartTime();
         String invoiceEndTime = queryVo.getInvoiceEndTime();
@@ -5593,6 +5594,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("保险公司结算报表查询-区分租户并且按照日期进行过滤:systemCode=[{}],queryVo=[{}]", systemCode, JSONUtil.toJsonStr(queryVo));
         // 1. 先将有数据的保险公司进行汇总
         // 累计应收金额, 应收手续费(手续费)
+        if(StrUtil.isNotEmpty(queryVo.getCompanyId())){
+            HttpResult<List<String>> subCompanyIdRes = esmInsCompanyClient.queryOwnAndSubCompandyIds(queryVo.getCompanyId());
+            queryVo.setCompanyIdList(subCompanyIdRes.getData());
+        }
+
+
         List<CompanySuperviseSettlementReportDto> allCompaniesIncomeDatas = baseMapper.queryCumulativeAccountsReceivable(systemCode, queryVo);
 
 //        allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream().filter(action->{
@@ -5662,11 +5669,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             return HttpResult.ok(msg, Collections.emptyList());
         }
         // add by lipf, 前端保险公司的查询条件未生效,进行bug修复
-        // TODO 这里需要都支持
-        if(StrUtil.isNotEmpty(queryVo.getCompanyId())){
-            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream()
-                    .filter(action-> queryVo.getCompanyId().equals(action.getPartnerCompanyId())).toList();
-        }
+//        if(StrUtil.isNotEmpty(queryVo.getCompanyId())){
+//            allCompaniesIncomeDatas = allCompaniesIncomeDatas.stream()
+//                    .filter(action-> queryVo.getCompanyId().equals(action.getPartnerCompanyId())).toList();
+//        }
         // 2. 汇总后,计算得到已开票,未开票,已结算,未结算的数据
         allCompaniesIncomeDatas = this.calStatisAmount(allCompaniesIncomeDatas, queryVo, systemCode);
         // 保留已开票的数据
@@ -5748,8 +5754,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         // 已开票(跟单费)
 
         List<String> invoiceTypes = List.of("1","3");
-
-
         if("10".equals(queryVo.getAccountsReceivable())){
             invoiceTypes = List.of("1");
         }else if("20".equals(queryVo.getAccountsReceivable())){

+ 6 - 0
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -1992,6 +1992,12 @@
             <if test="vo.agreementType != null and vo.agreementType != ''">
                 AND ipi.agreement_type = #{vo.agreementType}
             </if>
+            <if test="vo.companyIdList != null and vo.companyIdList.size() > 0">
+                AND ipi.partner_company_id in
+                <foreach collection="vo.companyIdList" open="(" separator="," item="companyId" close=")">
+                    #{companyId}
+                </foreach>
+            </if>
             <if test="vo.status != null">
                 <if test="vo.status == 1">
                     AND ipi.settlement_time IS NOT NULL