Explorar el Código

私有应收根据保险公司搜索的时候,对保险公司查询管理的子公司和直系上级

手续费开票记录中有永诚但是搜不出来记录
lipf hace 1 mes
padre
commit
301f44ea37

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java

@@ -21,6 +21,12 @@ public class InvoiceRecordQueryVo extends PageRequest {
      */
     private String companyId;
 
+    /**
+     * 保险公司关联的保险公司,
+     * 保险公司以及其父保险公司的id, 以及其所有的子公司
+     */
+    private List<String> companyIds;
+
     /**
      * 开票类型
      */

+ 5 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordResult.java

@@ -40,6 +40,11 @@ public class InvoiceRecordResult extends PageRequest {
      */
     private String companyAllName;
 
+    /**
+     * 父级保险公司的名称
+     */
+    private String parentCompanyName;
+
     /**
      * 开票方
      */

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

@@ -2,6 +2,8 @@ package com.jzg.controller;
 
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.nacos.client.naming.utils.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jzg.commons.core.base.BaseController;
@@ -478,4 +480,21 @@ public class EsmInsCompanyController extends BaseController {
     public HttpResult<Map<String,EsmInsCompany>> queryAllCompanyMap(){
         return HttpResult.ok(esmInsCompanyService.queryAllCompanyMap());
     }
+
+    /**
+     * 查询保险公司关联的所有子公司和总公司
+     *
+     * @param companyId 保险公司的id
+     * @return HttpResult<List<String>>
+     * @author lipf
+     * @date 2026年7月31日09:29:26
+     */
+    @Operation(summary = "查询保险公司关联的所有子公司和总公司")
+    @GetMapping("/queryRelatedCompanyIds")
+    HttpResult<List<String>> queryRelatedCompanyIds(@RequestParam("companyId") String companyId){
+        List<String> companyIds = esmInsCompanyService.queryRelatedCompanyIds(companyId);
+        companyIds = companyIds.stream().distinct().toList();
+        log.info("查询保险公司关联的所有子公司和总公司: companyId=[{}], companyIds=[{}],companyIds.size=[{}]", companyId, JSONUtil.toJsonStr(companyIds), CollUtil.size(companyIds));
+        return HttpResult.ok(companyIds);
+    }
 }

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

@@ -161,6 +161,16 @@ public interface EsmInsCompanyService extends IService<EsmInsCompany> {
      * @date 2026/5/23 9:12
      */
     Map<String,EsmInsCompany> queryAllCompanyMap();
+
+    /**
+     * 保险公司以及其父保险公司的id
+     *
+     * @param companyId 保险公司的id
+     * @return HttpResult<List<String>>
+     * @author lipf
+     * @date 2026年7月31日09:29:26
+     */
+    List<String> queryRelatedCompanyIds(String companyId);
 }
 
 

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

@@ -2,6 +2,7 @@ package com.jzg.service.impl;
 
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -450,6 +451,50 @@ public class EsmInsCompanyServiceImpl extends ServiceImpl<EsmInsCompanyMapper, E
         return fullPath;
     }
 
+    /**
+     * 保险公司以及其父保险公司的id
+     *
+     * @param companyId 保险公司的id
+     * @return HttpResult<List<String>>
+     * @author lipf
+     * @date 2026年7月31日09:29:26
+     */
+    @Override
+    public List<String> queryRelatedCompanyIds(String 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);
+        for (EsmInsCompany esmInsCompany : esmInsCompanies) {
+            companyIds.add(esmInsCompany.getId());
+            LambdaQueryWrapper<EsmInsCompany> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(EsmInsCompany::getParentId, esmInsCompany.getId());
+            List<EsmInsCompany> childCompany = baseMapper.selectList(wrapper);
+            childCompany.stream().map(EsmInsCompany::getId).forEach(companyIds::add);
+        }
+        esmInsCompanies.stream().map(EsmInsCompany::getId).forEach(companyIds::add);
+        EsmInsCompany esmInsCompany = baseMapper.selectById(companyId);
+        if(esmInsCompany == null){
+           return companyIds;
+        }
+        companyId = esmInsCompany.getParentId();
+        if(StrUtil.isEmpty(companyId) || companyId.equals("0")){
+            return companyIds;
+        }
+        companyIds.add(esmInsCompany.getParentId());
+
+        esmInsCompany = baseMapper.selectById(companyId);
+        if(esmInsCompany == null){
+            return companyIds;
+        }
+        companyId = esmInsCompany.getParentId();
+        if(StrUtil.isEmpty(companyId) || companyId.equals("0")){
+            return companyIds;
+        }
+        companyIds.add(esmInsCompany.getParentId());
+        return companyIds;
+    }
 }
 
 

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

@@ -79,4 +79,11 @@ public interface EsmInsCompanyClient {
     @PostMapping("/esmInsCompany/getTopCompanyId")
     HttpResult getTopCompanyId(@RequestSingleParam("companyId") String companyId);
 
+    /**
+     * 查询保险公司关联的所有子公司和总公司
+     * @author lipf
+     * @date 2026/7/31 9:44
+     */
+    @GetMapping("/esmInsCompany/queryRelatedCompanyIds")
+    HttpResult<List<String>> queryRelatedCompanyIds(@RequestParam("companyId") String companyId);
 }

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

@@ -4837,6 +4837,13 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
         invoiceRecordQueryVo.setSystemCode(baseController.getSystemCode());
         Page<InvoiceRecordResult> invoiceRecordList = null;
+
+        // add by lipf 2026年7月31日09:36:12 支持通过子公司查询总公司的数据
+        String companyId = invoiceRecordQueryVo.getCompanyId();
+        if(StrUtil.isNotEmpty(companyId)){
+            HttpResult<List<String>> companyIds =  esmInsCompanyClient.queryRelatedCompanyIds(companyId);
+            invoiceRecordQueryVo.setCompanyIds(companyIds.getData());
+        }
         if (invoiceRecordQueryVo.getInvoiceTypes().contains("2") || invoiceRecordQueryVo.getInvoiceTypes().contains("4")){
             invoiceRecordList = baseMapper.getFollowInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
         }else if(invoiceRecordQueryVo.getInvoiceTypes().contains("1") || invoiceRecordQueryVo.getInvoiceTypes().contains("3")){
@@ -4884,6 +4891,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                     log.error("根据保险公司序号[{}]没有找到保险公司",action.getCompanyId());
                 }
                 action.setCompanyAllName(companyAllName);
+                if(StrUtil.isNotEmpty(companyAllName)){
+                    String parentCompanyName = companyAllName.split("/")[0];
+                    action.setParentCompanyName(parentCompanyName);
+                }
+
                 action.setSettlementStatus(settlementStatusName);
 
                 // 回款差额

+ 5 - 2
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -1526,8 +1526,11 @@
             <if test="invoiceRecordQueryVo.recordId != null and invoiceRecordQueryVo.recordId != ''">
                 AND ipii.id = #{invoiceRecordQueryVo.recordId}
             </if>
-            <if test="invoiceRecordQueryVo.companyId != null and invoiceRecordQueryVo.companyId != ''">
-                AND ipii.company_id = #{invoiceRecordQueryVo.companyId}
+            <if test="invoiceRecordQueryVo.companyIds != null and invoiceRecordQueryVo.companyIds.size() > 0">
+                AND ipii.company_id IN
+                <foreach collection="invoiceRecordQueryVo.companyIds" open="(" close=")" item="companyId" separator=",">
+                    #{companyId}
+                </foreach>
             </if>
             <if test="invoiceRecordQueryVo.invoiceNo != null and invoiceRecordQueryVo.invoiceNo != ''">
                 AND ipii.invoice_no like concat('%',#{invoiceRecordQueryVo.invoiceNo},'%')