Procházet zdrojové kódy

Merge remote-tracking branch 'origin/dev_jzg_lipf_v20260622' into dev_jzg_lipf_v20260622

jiakai před 1 měsícem
rodič
revize
1f2dbd7d94

+ 12 - 1
commons/src/main/java/com/jzg/commons/util/OrderComponts.java → commons/src/main/java/com/jzg/commons/util/OrderComponents.java

@@ -4,7 +4,7 @@ package com.jzg.commons.util;
 import java.util.HashMap;
 import java.util.Map;
 
-public class OrderComponts {
+public class OrderComponents {
 
     public static Map<String, String> fillKeyNameMap(){
 
@@ -52,9 +52,20 @@ public class OrderComponts {
         nameMap.put("insFeeOrders.jqCommissionPremium","交强险手续费费用");
         nameMap.put("insFeeOrders.syCommissionPremium","商业险手续费费用");
         nameMap.put("insFeeOrders.jyCommissionPremium","驾意险手续费费用");
+
+        nameMap.put("costRatio.jyAdditionalRatio","驾意险加投比例");
+        nameMap.put("costRatio.syAdditionalRatio","商业险加投比例");
+        nameMap.put("costRatio.jqAdditionalRatio","交强险加投比例");
+        nameMap.put("insFeeOrders.syAdditionalPremium","商业险加投费费费用");
+        nameMap.put("insFeeOrders.jyAdditionalPremium","驾意险加投费费费用");
+        nameMap.put("insFeeOrders.jqAdditionalPremium","交强险加投费费费用");
+
         nameMap.put("insFeeOrders.signTime","签单时间");
         nameMap.put("order.dockingPerson","对接人姓名");
         nameMap.put("order.dockingPersonPhone","对接人手机号");
+
+
+
         return nameMap;
     }
 

+ 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;
+    }
 }
 
 

+ 2 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java

@@ -18,7 +18,7 @@ import com.jzg.commons.entity.vo.AdjustAllRefundVo;
 import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import com.jzg.commons.entity.vo.QuestionOrder;
 import com.jzg.commons.util.JsonDiffUtil;
-import com.jzg.commons.util.OrderComponts;
+import com.jzg.commons.util.OrderComponents;
 import com.jzg.quotation.commons.constant.SpElMapping;
 import com.jzg.quotation.commons.utils.SpElFieldExtractor;
 import com.jzg.quotation.summary.aop.aspect.OrderOperationLog;
@@ -279,7 +279,7 @@ public class OrderOperationLogAspect {
         if(CollUtil.isNotEmpty(diffMap)){
             List<String> oldItems = new ArrayList<>();
             List<String> newItems = new ArrayList<>();
-            Map<String,String> keyMap = OrderComponts.fillKeyNameMap();
+            Map<String,String> keyMap = OrderComponents.fillKeyNameMap();
             diffMap.forEach((path, values) ->{
                         System.out.println("路径: " + path + " -> 值1: " + values.get(0) + " | 值2: " + values.get(1));
                         oldItems.add(keyMap.getOrDefault(path,path)  + ": " + values.get(0));

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -490,7 +490,7 @@ public class QuoteVerificationAspect {
         }
 
         // 去税保费金额
-        BigDecimal taxablePremium = premium.divide(taxFactor,5,RoundingMode.HALF_EVEN);
+        BigDecimal taxablePremium = premium.divide(taxFactor,6,RoundingMode.HALF_EVEN);
 
         // 计算应付金额(保费 * 出口比例,保留2位小数)
         BigDecimal payable = premium.multiply(exportPercent.setScale(5, RoundingMode.DOWN)).setScale(2,RoundingMode.DOWN);

+ 2 - 2
tenant/organization/src/main/java/com/jzg/organization/aop/OrderOperationLogAspect.java

@@ -11,7 +11,7 @@ import com.jzg.commons.entity.orders.po.InsOrdersTrack;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
 import com.jzg.commons.entity.vo.QuestionOrder;
 import com.jzg.commons.util.JsonDiffUtil;
-import com.jzg.commons.util.OrderComponts;
+import com.jzg.commons.util.OrderComponents;
 import com.jzg.organization.client.InsOrdersClient;
 import com.jzg.quotation.summary.aop.aspect.OrderOperationLog;
 import org.aspectj.lang.ProceedingJoinPoint;
@@ -160,7 +160,7 @@ public class OrderOperationLogAspect {
             if(CollUtil.isNotEmpty(diffMap)){
                 List<String> oldItems = new ArrayList<>();
                 List<String> newItems = new ArrayList<>();
-                Map<String,String> keyMap = OrderComponts.fillKeyNameMap();
+                Map<String,String> keyMap = OrderComponents.fillKeyNameMap();
                 diffMap.forEach((path, values) ->{
                             System.out.println("路径: " + path + " -> 值1: " + values.get(0) + " | 值2: " + values.get(1));
                             oldItems.add(keyMap.getOrDefault(path,path)  + ": " + values.get(0));

+ 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

@@ -1052,6 +1052,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();
@@ -5636,6 +5637,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->{
@@ -5705,11 +5712,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);
         // 保留已开票的数据
@@ -5791,8 +5797,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