Просмотр исходного кода

Merge branch 'master' into wrq_dev

wangrq 1 месяц назад
Родитель
Сommit
80caa7c9e7
15 измененных файлов с 272 добавлено и 210 удалено
  1. 11 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteResultsVo.java
  2. 4 4
      commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java
  3. 6 0
      platform/src/main/java/com/jzg/controller/AgreementAttributionController.java
  4. 8 0
      platform/src/main/java/com/jzg/service/PtlAgreementAttributionService.java
  5. 12 0
      platform/src/main/java/com/jzg/service/impl/PtlAgreementAttributionImpl.java
  6. 12 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  7. 51 149
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  8. 5 0
      tenant/organization/src/main/java/com/jzg/organization/client/OrgClient.java
  9. 4 0
      tenant/organization/src/main/java/com/jzg/organization/client/PlatformClient.java
  10. 6 0
      tenant/organization/src/main/java/com/jzg/organization/controller/PtlAgreementDispatchController.java
  11. 3 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementDispatchAfterActionMapper.java
  12. 6 0
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementDispatchService.java
  13. 66 13
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementDispatchServiceImpl.java
  14. 66 44
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java
  15. 12 0
      tenant/organization/src/main/resources/mapper/PtlAgreementDispatchAfterActionMapper.xml

+ 11 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteResultsVo.java

@@ -8,6 +8,7 @@ import com.jzg.commons.entity.quote.vo.ExpenseFactor;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.TaxInfoVo;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -150,6 +151,16 @@ public class QuoteResultsVo implements Serializable {
      */
     private String quoteTime;
 
+    /**
+     * 权益的
+     */
+
+    @Schema(description = "车主权益1:开启,0:关闭")
+    private String ownerRights;
+
+    @Schema(description = "PC端还是APP端可用1:PC,2:APP,3:PC+APP")
+    private String clientType;
+
     /**
      * 评分VO
      */

+ 4 - 4
commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java

@@ -78,7 +78,7 @@ public class PtlSchemeSaveVo {
     }
 
     public PtlSchemeSaveVo(PtlScheme ptlScheme,PtlSchemeInfo ptlSchemeInfo,
-                           List<PtlSchemeInsuranceVo> insurances,List<PtlSchemeInsuranceDrivingIntention> drivingIntentionList,
+                           List<PtlSchemeInsuranceVo> insurances, List<PtlSchemeInsuranceDrivingIntention> drivingList,
                            List<PtlSchemeRulesAttrLink> rulesAttrLinks,List<PtlAgreementUndwrtRulesAttr> agreementRulesVo){
         if(Objects.isNull(ptlScheme))
         {
@@ -99,8 +99,8 @@ public class PtlSchemeSaveVo {
             scheme.schemeInsuranceList.add(insurance);
         });
         //处理驾意险
-        drivingIntentionList.stream().filter(drivingIntention -> drivingIntention.getSchemeInfoId().equals(ptlSchemeInfo.getId())).forEach(drivingIntention -> {
-            scheme.drivingIntentionList.add(drivingIntention);
+        drivingList.stream().filter(drivingIntention -> drivingIntention.getSchemeInfoId().equals(ptlSchemeInfo.getId())).forEach(drivingIntention -> {
+            scheme.drivingList.add(drivingIntention);
         });
         //处理规则
         rulesAttrLinks.stream().filter(link -> link.getSchemeId().equals(this.id)).forEach(link->{
@@ -276,7 +276,7 @@ public class PtlSchemeSaveVo {
     public List<PtlSchemeInsuranceDrivingIntention> getPtlSchemeInsuranceDrivingIntentionList(){
         List<PtlSchemeInsuranceDrivingIntention> ptlSchemeInsuranceDrivingIntentionList = new ArrayList<>();
         for (Scheme scheme : schemeList) {
-            scheme.getDrivingIntentionList().forEach(drivingIntention -> {
+            scheme.getDrivingList().forEach(drivingIntention -> {
                 PtlSchemeInsuranceDrivingIntention ptlSchemeInsuranceDrivingIntention = new PtlSchemeInsuranceDrivingIntention();
                 ptlSchemeInsuranceDrivingIntention.setId(IdGenerate.nextId());
                 ptlSchemeInsuranceDrivingIntention.setSchemeInfoId(scheme.getId());

+ 6 - 0
platform/src/main/java/com/jzg/controller/AgreementAttributionController.java

@@ -56,6 +56,12 @@ public class AgreementAttributionController extends BaseController {
         return agreementAttributionService.getAgreementAttribution(id);
     }
 
+    @Operation(summary = "批量查询保险公司账号接口", description = "批量查询保险公司账号接口")
+    @PostMapping(value = "/getAgreementAttributionByIds")
+    public HttpResult<List<PtlAgreementAttribution>> getAgreementAttributionByIds(@RequestBody List<String> ids) {
+        return HttpResult.ok(agreementAttributionService.getAgreementAttributionByIds(ids));
+    }
+
     @Operation(summary = "查询保险公司账号列表接口", description = "查询保险公司账号列表接口")
     @PostMapping(value = "/getAgreementAttributionList")
     public HttpResult getActivityList(@RequestBody PtlAgreementAttributionQueryVo ptlAgreementAttributionQueryVo) {

+ 8 - 0
platform/src/main/java/com/jzg/service/PtlAgreementAttributionService.java

@@ -16,6 +16,14 @@ public interface PtlAgreementAttributionService extends IService<PtlAgreementAtt
 
     HttpResult<PtlAgreementAttribution> getAgreementAttribution(String id);
 
+    /**
+     * 批量查询保险公司账号
+     *
+     * @param ids 账号id集合
+     * @return 账号列表
+     */
+    List<PtlAgreementAttribution> getAgreementAttributionByIds(List<String> ids);
+
     /**
      * 查询保险公司账号列表接口
      *

+ 12 - 0
platform/src/main/java/com/jzg/service/impl/PtlAgreementAttributionImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -23,8 +24,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @author quchen
@@ -77,6 +80,15 @@ public class PtlAgreementAttributionImpl extends ServiceImpl<PtlAgreementAttribu
         return HttpResult.ok("",ptlAgreementAttribution);
     }
 
+    @Override
+    public List<PtlAgreementAttribution> getAgreementAttributionByIds(List<String> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return Collections.emptyList();
+        }
+        List<String> distinctIds = ids.stream().filter(StrUtil::isNotBlank).distinct().collect(Collectors.toList());
+        return listByIds(distinctIds);
+    }
+
 
     @Override
     public Page<PtlAgreementAttribution> getAgreementAttributionList(Page page, PtlAgreementAttributionQueryVo ptlAgreementAttributionQueryVo) {

+ 12 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -38,6 +38,7 @@ import com.jzg.commons.entity.quote.vo.underwriting.SpecialAppointmentsVo;
 import com.jzg.commons.entity.rights.dto.InsOrderRightsDto;
 import com.jzg.commons.entity.rights.dto.InsOrderRightsInfoDto;
 import com.jzg.commons.entity.rights.dto.InsOrderRightsPackageDto;
+import com.jzg.commons.entity.system.vo.SysSystemBusPermsVo;
 import com.jzg.commons.entity.vo.CompanyClauseVo;
 import com.jzg.commons.entity.vo.InsCompanyClauseVo;
 import com.jzg.commons.entity.vo.LotteryCountVO;
@@ -58,6 +59,7 @@ import com.jzg.quotation.summary.aop.QuoteVerification;
 import com.jzg.quotation.summary.aop.aspect.OrderOperationLog;
 import com.jzg.quotation.summary.async.AsyncGetPayLink;
 import com.jzg.quotation.summary.classifier.QuoteInfoParameterFilling;
+import com.jzg.quotation.summary.client.EsmInsCompanyClient;
 import com.jzg.quotation.summary.client.LocalLivingClient;
 import com.jzg.quotation.summary.client.UnifiedAccountClient;
 import com.jzg.quotation.summary.constants.QuoteNumberConstant;
@@ -186,6 +188,9 @@ public class UnifyOrderManager {
     @Autowired
     private UnifiedAccountClient unifiedAccountClient;
 
+    @Autowired
+    private EsmInsCompanyClient esmInsCompanyClient;
+
     @Autowired
     private ObjectMapper objectMapper;
 
@@ -355,6 +360,13 @@ public class UnifyOrderManager {
                 });
             }
 
+            // 权益权限
+            HttpResult<SysSystemBusPermsVo> sysSystemBusPermsVoHttpResult = esmInsCompanyClient.getBusPerms(baseController.getSystemCode());
+            if (sysSystemBusPermsVoHttpResult.getCode() == 200) {
+                quoteResultsVo.setOwnerRights(String.valueOf(sysSystemBusPermsVoHttpResult.getData().getOwnerRights()));
+                quoteResultsVo.setClientType(String.valueOf(sysSystemBusPermsVoHttpResult.getData().getClientType()));
+            }
+
             log.info("报价返回:{}", JSON.toJSONString(quoteResultsVo));
 
         } catch (Exception e) {

+ 51 - 149
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -312,9 +312,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     /**
      * 单个险种费用计算
      */
-    private static void calcInsuranceType(InsFeeOrders o, BigDecimal premium, PtlAgreementCostTypeVo ct,
-                                          BigDecimal commissionRatio, BigDecimal followRatio, BigDecimal taxFactor,
-                                          String type) {
+    private static void calcInsuranceType(InsFeeOrders o, BigDecimal premium, PtlAgreementCostTypeVo ct, BigDecimal commissionRatio, BigDecimal followRatio, BigDecimal taxFactor, String type) {
         if (ct == null || premium == null) {
             if ("jq".equals(type)) {
                 o.setJqReceivablePremium(BigDecimal.ZERO);
@@ -339,10 +337,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         BigDecimal receivable = taxable.multiply(commissionRatio.add(followRatio)).setScale(5, RoundingMode.HALF_EVEN);
         receivable = receivable.setScale(5, RoundingMode.HALF_EVEN); // 与旧代码保持一致:二次setScale
         BigDecimal follow = receivable.subtract(commission);
-        BigDecimal keepRate = BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(inlet, taxFactor), addThrow), export)
-                .setScale(5, RoundingMode.HALF_EVEN);
-        BigDecimal keepAmt = BigDecimalUtil.subtract(BigDecimalUtil.add(receivable, addAmt), payable)
-                .setScale(5, RoundingMode.HALF_EVEN);
+        BigDecimal keepRate = BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(inlet, taxFactor), addThrow), export).setScale(5, RoundingMode.HALF_EVEN);
+        BigDecimal keepAmt = BigDecimalUtil.subtract(BigDecimalUtil.add(receivable, addAmt), payable).setScale(5, RoundingMode.HALF_EVEN);
 
         switch (type) {
             case "jq":
@@ -506,9 +502,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
             insFeeAuditService.feeAuditAdd(insOrders, baseController.getSystemCode());
             // 发送订单状态变更消息
-            this.orderStatusMessage(insOrders,
-                    insOrdersCarInfo, insOrdersCosts,
-                    baseController.getToken(), MessageCodeEnum.TEMPLATE_9);
+            this.orderStatusMessage(insOrders, insOrdersCarInfo, insOrdersCosts, baseController.getToken(), MessageCodeEnum.TEMPLATE_9);
             if (nullOrders) {
                 InsOrders orders = insOrdersAdd.getInsOrders();
                 orders.setQuoteNo(insOrders.getQuoteNo());
@@ -563,9 +557,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
         userList.add(insOrders.getCreateBy());
         List<String> recerveLsit = new ArrayList<>(userList);
-        orderMessageTemplate.SendOrderStatus(insOrders.getId(), template.getTplName(), content,
-                recerveLsit,
-                token, tplCode);
+        orderMessageTemplate.SendOrderStatus(insOrders.getId(), template.getTplName(), content, recerveLsit, token, tplCode);
     }
 
     @Override
@@ -695,9 +687,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 InsOrdersTax existingTax = insOrdersTaxService.getById(quoteNo);
                 if (existingTax != null) {
                     // 存在则更新,只更新非空字段
-                    insOrdersTaxService.update(insOrdersTax,
-                            new LambdaUpdateWrapper<InsOrdersTax>()
-                                    .eq(InsOrdersTax::getOrderNo, quoteNo));
+                    insOrdersTaxService.update(insOrdersTax, new LambdaUpdateWrapper<InsOrdersTax>().eq(InsOrdersTax::getOrderNo, quoteNo));
                 } else {
                     // 不存在则插入
                     insOrdersTaxService.save(insOrdersTax);
@@ -724,9 +714,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
             InsOrdersExternalPolicy ordersExternalPolicy = ordersEnd.getInsOrdersExternalPolicy();
             ordersExternalPolicy.setOrderNo(String.valueOf(quoteNo));
-            policyService.update(ordersExternalPolicy,
-                    new LambdaUpdateWrapper<InsOrdersExternalPolicy>()
-                            .eq(InsOrdersExternalPolicy::getOrderNo, String.valueOf(quoteNo)));
+            policyService.update(ordersExternalPolicy, new LambdaUpdateWrapper<InsOrdersExternalPolicy>().eq(InsOrdersExternalPolicy::getOrderNo, String.valueOf(quoteNo)));
 
 
             // 返回成功信息,表示订单、车辆和用户信息修改成功
@@ -810,12 +798,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
 
         // 费用信息
-        InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>()
-                .eq(InsFeeOrders::getOrderNo, insOrdersVo.getInsOrders().getId()));
+        InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>().eq(InsFeeOrders::getOrderNo, insOrdersVo.getInsOrders().getId()));
         // 比例信息 分销员信息
         if (insFeeOrders != null) {
-            if (insFeeOrders.getFirstDistributorId() != null && insFeeOrders.getSecondDistributorId() != null &&
-                    insFeeOrders.getThirdDistributorId() != null) {
+            if (insFeeOrders.getFirstDistributorId() != null && insFeeOrders.getSecondDistributorId() != null && insFeeOrders.getThirdDistributorId() != null) {
                 HttpResult<SysUserJzgInfo> firstDistributor = orgClient.getUserInfoById(insFeeOrders.getFirstDistributorId());
                 HttpResult<SysUserJzgInfo> secondDistributor = orgClient.getUserInfoById(insFeeOrders.getSecondDistributorId());
                 HttpResult<SysUserJzgInfo> thirdDistributor = orgClient.getUserInfoById(insFeeOrders.getThirdDistributorId());
@@ -859,8 +845,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersVo.setInsOrdersPdfUrl(new InsOrdersPdfUrl());
         }
         // 驾意险信息
-        List<InsOrdersAccidentalDriving> insOrdersAccidentalDrivings = insOrdersAccidentalDrivingService
-                .list(new LambdaQueryWrapper<InsOrdersAccidentalDriving>().eq(InsOrdersAccidentalDriving::getOrderNo, id));
+        List<InsOrdersAccidentalDriving> insOrdersAccidentalDrivings = insOrdersAccidentalDrivingService.list(new LambdaQueryWrapper<InsOrdersAccidentalDriving>().eq(InsOrdersAccidentalDriving::getOrderNo, id));
         if (insOrdersAccidentalDrivings != null) {
             List<AccidentalDrivingVo> accidentalDrivingVos = new ArrayList<>();
             for (InsOrdersAccidentalDriving insOrdersAccidentalDriving : insOrdersAccidentalDrivings) {
@@ -883,8 +868,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersVo.setAccidentalDrivings(accidentalDrivingVos);
         }
         // 特约查询
-        List<InsOrdersClause> insOrdersClauseList = insOrdersClauseService
-                .list(new LambdaQueryWrapper<InsOrdersClause>().eq(InsOrdersClause::getOrderNo, id));
+        List<InsOrdersClause> insOrdersClauseList = insOrdersClauseService.list(new LambdaQueryWrapper<InsOrdersClause>().eq(InsOrdersClause::getOrderNo, id));
         if (insOrdersClauseList != null) {
             List<InsCompanyClause> companyClauseList = new ArrayList<>();
             for (InsOrdersClause insOrdersClause : insOrdersClauseList) {
@@ -956,12 +940,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
 
         // 费用信息
-        InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>()
-                .eq(InsFeeOrders::getOrderNo, insOrdersVo.getInsOrders().getId()));
+        InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>().eq(InsFeeOrders::getOrderNo, insOrdersVo.getInsOrders().getId()));
         // 比例信息 分销员信息
         if (insFeeOrders != null) {
-            if (insFeeOrders.getFirstDistributorId() != null && insFeeOrders.getSecondDistributorId() != null &&
-                    insFeeOrders.getThirdDistributorId() != null) {
+            if (insFeeOrders.getFirstDistributorId() != null && insFeeOrders.getSecondDistributorId() != null && insFeeOrders.getThirdDistributorId() != null) {
                 HttpResult<SysUserJzgInfo> firstDistributor = orgClient.getUserInfoById(insFeeOrders.getFirstDistributorId());
                 HttpResult<SysUserJzgInfo> secondDistributor = orgClient.getUserInfoById(insFeeOrders.getSecondDistributorId());
                 HttpResult<SysUserJzgInfo> thirdDistributor = orgClient.getUserInfoById(insFeeOrders.getThirdDistributorId());
@@ -992,8 +974,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersVo.setInsOrdersPdfUrl(new InsOrdersPdfUrl());
         }
         // 驾意险信息
-        List<InsOrdersAccidentalDriving> insOrdersAccidentalDrivings = insOrdersAccidentalDrivingService
-                .list(new LambdaQueryWrapper<InsOrdersAccidentalDriving>().eq(InsOrdersAccidentalDriving::getOrderNo, id));
+        List<InsOrdersAccidentalDriving> insOrdersAccidentalDrivings = insOrdersAccidentalDrivingService.list(new LambdaQueryWrapper<InsOrdersAccidentalDriving>().eq(InsOrdersAccidentalDriving::getOrderNo, id));
         if (insOrdersAccidentalDrivings != null) {
             List<AccidentalDrivingVo> accidentalDrivingVos = new ArrayList<>();
             for (InsOrdersAccidentalDriving insOrdersAccidentalDriving : insOrdersAccidentalDrivings) {
@@ -1008,8 +989,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersVo.setAccidentalDrivings(accidentalDrivingVos);
         }
         // 特约查询
-        List<InsOrdersClause> insOrdersClauseList = insOrdersClauseService
-                .list(new LambdaQueryWrapper<InsOrdersClause>().eq(InsOrdersClause::getOrderNo, id));
+        List<InsOrdersClause> insOrdersClauseList = insOrdersClauseService.list(new LambdaQueryWrapper<InsOrdersClause>().eq(InsOrdersClause::getOrderNo, id));
         if (insOrdersClauseList != null) {
             List<InsCompanyClause> companyClauseList = new ArrayList<>();
             for (InsOrdersClause insOrdersClause : insOrdersClauseList) {
@@ -1083,10 +1063,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         if (CollUtil.isEmpty(orderList)) {
             return;
         }
-        Set<String> orderNoSet = orderList.stream()
-                .map(OrderListVo::getNo)
-                .filter(Objects::nonNull)
-                .collect(Collectors.toSet());
+        Set<String> orderNoSet = orderList.stream().map(OrderListVo::getNo).filter(Objects::nonNull).collect(Collectors.toSet());
         if (CollUtil.isEmpty(orderNoSet)) {
             return;
         }
@@ -1102,13 +1079,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
 
 
-        Map<String, Map<String, List<OrderQuotationCompany>>> groupMap = insOrders.stream()
-                .collect(Collectors.groupingBy(
-                        OrderQuotationCompany::getQuoteNo,
-                        Collectors.groupingBy(
-                                OrderQuotationCompany::getOrderStatus
-                        )
-                ));
+        Map<String, Map<String, List<OrderQuotationCompany>>> groupMap = insOrders.stream().collect(Collectors.groupingBy(OrderQuotationCompany::getQuoteNo, Collectors.groupingBy(OrderQuotationCompany::getOrderStatus)));
         for (OrderListVo orders : orderList) {
             String orderNo = orders.getNo();
 
@@ -1159,20 +1130,11 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public void setUserAreaCode(QuoteVo quoteVo) {
-        HttpResult<PersonAreaVo> ownerAddress = orgClient.queryByAddress(
-                quoteVo.getOwnersInfo().getAddr(), quoteVo.getOwnersInfo().getIdentifyNumber());
+        HttpResult<PersonAreaVo> ownerAddress = orgClient.queryByAddress(quoteVo.getOwnersInfo().getAddr(), quoteVo.getOwnersInfo().getIdentifyNumber());
 
-        HttpResult<PersonAreaVo> insuredAddress = quoteVo.getOwnersInfo().getIdentifyNumber()
-                .equals(quoteVo.getInsuredPersonInfo().getIdentifyNumber())
-                ? ownerAddress
-                : orgClient.queryByAddress(quoteVo.getInsuredPersonInfo().getAddr(), quoteVo.getInsuredPersonInfo().getIdentifyNumber());
+        HttpResult<PersonAreaVo> insuredAddress = quoteVo.getOwnersInfo().getIdentifyNumber().equals(quoteVo.getInsuredPersonInfo().getIdentifyNumber()) ? ownerAddress : orgClient.queryByAddress(quoteVo.getInsuredPersonInfo().getAddr(), quoteVo.getInsuredPersonInfo().getIdentifyNumber());
 
-        HttpResult<PersonAreaVo> policyAddress = quoteVo.getPolicyHolderInfo().getIdentifyNumber()
-                .equals(quoteVo.getOwnersInfo().getIdentifyNumber())
-                ? ownerAddress
-                : quoteVo.getPolicyHolderInfo().getIdentifyNumber().equals(quoteVo.getInsuredPersonInfo().getIdentifyNumber())
-                ? insuredAddress
-                : orgClient.queryByAddress(quoteVo.getPolicyHolderInfo().getAddr(), quoteVo.getPolicyHolderInfo().getIdentifyNumber());
+        HttpResult<PersonAreaVo> policyAddress = quoteVo.getPolicyHolderInfo().getIdentifyNumber().equals(quoteVo.getOwnersInfo().getIdentifyNumber()) ? ownerAddress : quoteVo.getPolicyHolderInfo().getIdentifyNumber().equals(quoteVo.getInsuredPersonInfo().getIdentifyNumber()) ? insuredAddress : orgClient.queryByAddress(quoteVo.getPolicyHolderInfo().getAddr(), quoteVo.getPolicyHolderInfo().getIdentifyNumber());
 
         if (null != ownerAddress.getData()) {
             quoteVo.getOwnersInfo().setProvinceCode(ownerAddress.getData().getProvinceCode());
@@ -1241,9 +1203,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public List<EsmInsCompany> getExistCompany() {
-        List<InsOrders> insOrders = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>()
-                .select(InsOrders::getCompanyId)
-                .groupBy(InsOrders::getCompanyId));
+        List<InsOrders> insOrders = insOrdersMapper.selectList(new LambdaQueryWrapper<InsOrders>().select(InsOrders::getCompanyId).groupBy(InsOrders::getCompanyId));
         List<String> companyIds = insOrders.stream().filter(v -> !Objects.isNull(v) && StringUtils.isNotEmpty(v.getCompanyId())).map(InsOrders::getCompanyId).collect(Collectors.toList());
         String joined = String.join(",", companyIds);
         HttpResult<List<EsmInsCompany>> companyByIds = platformClient.getCompanyByIds(joined);
@@ -1283,9 +1243,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrders.setPayLink(orderStatusResultVo.getPaymentLink());
             insOrders.setPayTime(LocalDateTime.now());
             // 发送订单状态变更消息
-            this.orderStatusMessage(insOrders,
-                    insOrdersCarInfo, costs,
-                    baseController.getToken(), MessageCodeEnum.TEMPLATE_5);
+            this.orderStatusMessage(insOrders, insOrdersCarInfo, costs, baseController.getToken(), MessageCodeEnum.TEMPLATE_5);
         }
         if (orderStatusResultVo.getOrderStatus().equals(InsOrderStatusEnum.UNDERWRITED)) {
             // 电销组业务员的订单变更为已承保时,检查出入口比例是否已修改,未修改则跳过财务审核
@@ -1293,10 +1251,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             String realQuoteUserId = insOrders.getRealQuoteUserId();
             if (StrUtil.isNotBlank(realQuoteUserId)) {
                 HttpResult<SysUserJzgInfo> userResult = orgClient.queryUserByUserId(realQuoteUserId, systemCode);
-                if (userResult != null && userResult.getCode() == 200 && userResult.getData() != null
-                        && "8".equals(userResult.getData().getTypeAttr())) {
-                    InsFeeOrders feeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>()
-                            .eq(InsFeeOrders::getOrderNo, insOrders.getId()));
+                if (userResult != null && userResult.getCode() == 200 && userResult.getData() != null && "8".equals(userResult.getData().getTypeAttr())) {
+                    InsFeeOrders feeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>().eq(InsFeeOrders::getOrderNo, insOrders.getId()));
                     if (feeOrders == null || !Integer.valueOf(1).equals(feeOrders.getRatioModified())) {
                         skipFeeAudit = true;
                         log.info("电销组订单出入口比例未修改,跳过财务审核,订单号=[{}]", orderNo);
@@ -1314,9 +1270,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             // 更新父订单
             baseMapper.updateById(baseInsOrders);
             // 发送订单状态变更消息
-            this.orderStatusMessage(insOrders,
-                    insOrdersCarInfo, costs,
-                    baseController.getToken(), MessageCodeEnum.TEMPLATE_6);
+            this.orderStatusMessage(insOrders, insOrdersCarInfo, costs, baseController.getToken(), MessageCodeEnum.TEMPLATE_6);
         } else {
             insOrders.setErrorMessage(orderStatusResultVo.getErrorMsg());
         }
@@ -1431,12 +1385,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         Set<String> exportFields = new LinkedHashSet<>(Arrays.asList(exportDynamicFields.split(";")));
 
         // 调用动态导出
-        return exportBaseService.upLoadFileDynamic(
-                OrderListVo.class,
-                orderListVos,
-                exportFields,
-                "车险出单-订单管理-动态导出-" + Instant.now()
-        );
+        return exportBaseService.upLoadFileDynamic(OrderListVo.class, orderListVos, exportFields, "车险出单-订单管理-动态导出-" + Instant.now());
     }
 
 
@@ -1529,8 +1478,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersRiskService.updateBatchById(insOrdersRiskList);
 
             //更新费用
-            InsOrdersCosts ordersCosts = insOrdersCostsService.getOne(new LambdaQueryWrapper<InsOrdersCosts>()
-                    .eq(InsOrdersCosts::getOrderNo, ordersNo));
+            InsOrdersCosts ordersCosts = insOrdersCostsService.getOne(new LambdaQueryWrapper<InsOrdersCosts>().eq(InsOrdersCosts::getOrderNo, ordersNo));
             if (Objects.isNull(ordersCosts)) {
                 ordersCosts = new InsOrdersCosts();
                 ordersCosts.setOrderNo(ordersNo);
@@ -1558,8 +1506,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
             //更新驾意险产品的保费
             BigDecimal jyPremium = ordersCosts.getJyPremium();
-            List<InsOrdersAccidentalDriving> accidentalDrivingList = insOrdersAccidentalDrivingService
-                    .list(new LambdaQueryWrapper<InsOrdersAccidentalDriving>().eq(InsOrdersAccidentalDriving::getOrderNo, ordersNo));
+            List<InsOrdersAccidentalDriving> accidentalDrivingList = insOrdersAccidentalDrivingService.list(new LambdaQueryWrapper<InsOrdersAccidentalDriving>().eq(InsOrdersAccidentalDriving::getOrderNo, ordersNo));
             if (CollectionUtil.isNotEmpty(accidentalDrivingList) && jyPremium != null) {
                 // 按保费乘以数量计算每个驾意险的总保费
                 for (InsOrdersAccidentalDriving driving : accidentalDrivingList) {
@@ -1570,8 +1517,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             }
 
             //更新评分
-            InsOrdersOther ordersOther = insOrdersOtherService.getOne(new LambdaQueryWrapper<InsOrdersOther>()
-                    .eq(InsOrdersOther::getOrderNo, ordersNo));
+            InsOrdersOther ordersOther = insOrdersOtherService.getOne(new LambdaQueryWrapper<InsOrdersOther>().eq(InsOrdersOther::getOrderNo, ordersNo));
             if (Objects.nonNull(ordersOther)) {
                 ordersOther = new InsOrdersOther();
                 ordersOther.setOrderNo(ordersNo);
@@ -1604,8 +1550,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersPolicyService.saveOrUpdate(ordersPolicy);
 
             //更新商业险种的保费
-            List<InsOrdersKind> kindList = insOrdersKindService.list(new LambdaQueryWrapper<InsOrdersKind>()
-                    .eq(InsOrdersKind::getOrderNo, ordersNo));
+            List<InsOrdersKind> kindList = insOrdersKindService.list(new LambdaQueryWrapper<InsOrdersKind>().eq(InsOrdersKind::getOrderNo, ordersNo));
             if (CollectionUtil.isNotEmpty(quoteResponse.getKindInfoVo())) {
                 quoteResponse.getKindInfoVo().forEach(kindInfoVo -> {
                     kindList.forEach(kind -> {
@@ -1623,9 +1568,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersKindService.updateBatchById(kindList);
 
             // 发送订单状态变更消息
-            this.orderStatusMessage(insOrders, carInfo, ordersCosts,
-                    baseController.getToken(),
-                    MessageCodeEnum.TEMPLATE_1);
+            this.orderStatusMessage(insOrders, carInfo, ordersCosts, baseController.getToken(), MessageCodeEnum.TEMPLATE_1);
         }
 
     }
@@ -1644,10 +1587,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         // 1个保险公司只有一个主订单   不区分险种
         // 唯一性的判定标准:保险公司编号+ 车牌号 + 车架号
         log.info("生成一个主订单和多个子订单:systemCode=[{}], quoteVo=[{}],companyName=[{}]", systemCode, JSONUtil.toJsonStr(quoteVo), companyName);
-        InsOrders mainOrders = this.getMainOrders(
-                quoteVo.getOrder().getInsuranceCompanyCode(),
-                quoteVo.getCarInfoVo().getLicenseNo(),
-                quoteVo.getCarInfoVo().getVinNo());
+        InsOrders mainOrders = this.getMainOrders(quoteVo.getOrder().getInsuranceCompanyCode(), quoteVo.getCarInfoVo().getLicenseNo(), quoteVo.getCarInfoVo().getVinNo());
         boolean isExistsMainOrder = Objects.nonNull(mainOrders);
         String mainOrderNo;
         // 如果订单号为0 则生成主订单
@@ -1825,10 +1765,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         // 轨迹赋值
         newOrder.setInsOrdersKindList(newKinds);
 
-        InsOrdersTrack track = new InsOrdersTrack(JSON.toJSONString(oldOrder),
-                JSON.toJSONString(newOrder),
-                carInfo,
-                insOrders);
+        InsOrdersTrack track = new InsOrdersTrack(JSON.toJSONString(oldOrder), JSON.toJSONString(newOrder), carInfo, insOrders);
         trackService.save(track);
         // 在报价的时候更新其他信息
         // 更新订单其他信息 ins_orders_other
@@ -1878,9 +1815,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
 
         // 影像资料
-        List<InsTaskImages> imagesList = insTaskImagesService.list(new LambdaQueryWrapper<InsTaskImages>()
-                .eq(InsTaskImages::getQuoteNo, insOrdersVo.getQuoteNo())
-                .eq(InsTaskImages::getIsDelete, 0));
+        List<InsTaskImages> imagesList = insTaskImagesService.list(new LambdaQueryWrapper<InsTaskImages>().eq(InsTaskImages::getQuoteNo, insOrdersVo.getQuoteNo()).eq(InsTaskImages::getIsDelete, 0));
 //        List<ImagesVo> imageVoList = new ArrayList<>();
 //        for (InsTaskImages images : imagesList) {
 //            ImagesVo imagesVo = new ImagesVo();
@@ -1918,21 +1853,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
         resultVo.setImageVoList(imageVoList);
         // 支付码
-        List<InsOrdersQrcode> qrcodes = insOrdersQrcodeMapper.selectList(new LambdaQueryWrapper<InsOrdersQrcode>()
-                .eq(InsOrdersQrcode::getOrderno, ordersNo)
-                .orderByDesc(InsOrdersQrcode::getCreatetime));
+        List<InsOrdersQrcode> qrcodes = insOrdersQrcodeMapper.selectList(new LambdaQueryWrapper<InsOrdersQrcode>().eq(InsOrdersQrcode::getOrderno, ordersNo).orderByDesc(InsOrdersQrcode::getCreatetime));
         if (!qrcodes.isEmpty()) {
             resultVo.setQrcode(qrcodes.get(0));
         }
         // 费用信息
-        InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>()
-                .eq(InsFeeOrders::getOrderNo, ordersNo));
+        InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>().eq(InsFeeOrders::getOrderNo, ordersNo));
 
         // 比例信息 分销员信息
         if (insFeeOrders != null) {
-            if (insFeeOrders.getFirstDistributorId() != null &&
-                    insFeeOrders.getSecondDistributorId() != null &&
-                    insFeeOrders.getThirdDistributorId() != null) {
+            if (insFeeOrders.getFirstDistributorId() != null && insFeeOrders.getSecondDistributorId() != null && insFeeOrders.getThirdDistributorId() != null) {
                 HttpResult<SysUserJzgInfo> firstDistributor = orgClient.getUserInfoById(insFeeOrders.getFirstDistributorId());
                 HttpResult<SysUserJzgInfo> secondDistributor = orgClient.getUserInfoById(insFeeOrders.getSecondDistributorId());
                 HttpResult<SysUserJzgInfo> thirdDistributor = orgClient.getUserInfoById(insFeeOrders.getThirdDistributorId());
@@ -2198,15 +2128,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         BigDecimal firstDist = nvl(feeOrders.getFirstDistributionRatio());
         BigDecimal secondDist = nvl(feeOrders.getSecondDistributionRatio());
         BigDecimal thirdDist = nvl(feeOrders.getThirdDistributionRatio());
-        feeOrders.setJqExportRatio(jqExport.compareTo(BigDecimal.ZERO) > 0
-                ? div100(jqExport).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist))
-                : BigDecimal.ZERO);
-        feeOrders.setSyExportRatio(syExport.compareTo(BigDecimal.ZERO) > 0
-                ? div100(syExport).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist))
-                : BigDecimal.ZERO);
-        feeOrders.setJyExportRatio(jyExport.compareTo(BigDecimal.ZERO) > 0
-                ? div100(jyExport).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist))
-                : BigDecimal.ZERO);
+        feeOrders.setJqExportRatio(jqExport.compareTo(BigDecimal.ZERO) > 0 ? div100(jqExport).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist)) : BigDecimal.ZERO);
+        feeOrders.setSyExportRatio(syExport.compareTo(BigDecimal.ZERO) > 0 ? div100(syExport).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist)) : BigDecimal.ZERO);
+        feeOrders.setJyExportRatio(jyExport.compareTo(BigDecimal.ZERO) > 0 ? div100(jyExport).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist)) : BigDecimal.ZERO);
 
         feeOrders.setJqExportKeepPointRatio(div100(jqEKP));
         feeOrders.setSyExportKeepPointRatio(div100(syEKP));
@@ -2236,12 +2160,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
 
         // 8. 总应收/总应付
-        feeOrders.setTotalReceivablePremium(feeOrders.getJqReceivablePremium()
-                .add(feeOrders.getSyReceivablePremium()).add(feeOrders.getJyReceivablePremium())
-                .setScale(5, RoundingMode.HALF_EVEN));
-        feeOrders.setTotalPayablePremium(feeOrders.getJqPayablePremium()
-                .add(feeOrders.getSyPayablePremium()).add(feeOrders.getJyPayablePremium())
-                .setScale(2, RoundingMode.DOWN));
+        feeOrders.setTotalReceivablePremium(feeOrders.getJqReceivablePremium().add(feeOrders.getSyReceivablePremium()).add(feeOrders.getJyReceivablePremium()).setScale(5, RoundingMode.HALF_EVEN));
+        feeOrders.setTotalPayablePremium(feeOrders.getJqPayablePremium().add(feeOrders.getSyPayablePremium()).add(feeOrders.getJyPayablePremium()).setScale(2, RoundingMode.DOWN));
 
         // 9. 出口费用(setScale(2,DOWN) 截断)& 出口留点费用
         BigDecimal jqEOrigin = feeOrders.getJqExportRatio().multiply(jqPremium);
@@ -2269,8 +2189,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         diffs.add(distributionDiff);
         feeOrders.setTotalExportDiffAmount(BigDecimalUtil.add(diffs));
 
-        feeOrders.setAvailableAmount(jqE.add(syE).add(jyE).subtract(jqK).subtract(syK).subtract(jyK)
-                .setScale(2, RoundingMode.HALF_UP));
+        feeOrders.setAvailableAmount(jqE.add(syE).add(jyE).subtract(jqK).subtract(syK).subtract(jyK).setScale(2, RoundingMode.HALF_UP));
         feeOrders.setTotalExportPremium(jqE.add(syE).add(jyE));
         feeOrders.setTotalExportKeepPointPremium(jqK.add(syK).add(jyK));
 
@@ -2283,8 +2202,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     /**
      * 从请求参数构建费用类型配置VO
      */
-    private PtlAgreementCostTypeVo buildCostType(BigDecimal inlet, BigDecimal addThrow,
-                                                 BigDecimal export, BigDecimal exportKeepPointRatio) {
+    private PtlAgreementCostTypeVo buildCostType(BigDecimal inlet, BigDecimal addThrow, BigDecimal export, BigDecimal exportKeepPointRatio) {
         PtlAgreementCostTypeVo vo = new PtlAgreementCostTypeVo();
         vo.setInlet(inlet);
         vo.setAddThrow(addThrow);
@@ -2330,8 +2248,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         // 判断业务员所属机构是否开启分销
         String deptId = userResult.getData().getDeptId();
         HttpResult<SysDeptVo> deptResult = orgClient.deptGet(deptId);
-        if (deptResult == null || deptResult.getData() == null
-                || !"1".equals(deptResult.getData().getIsDistribution())) {
+        if (deptResult == null || deptResult.getData() == null || !"1".equals(deptResult.getData().getIsDistribution())) {
             return BigDecimal.ZERO;
         }
         String level = sysDistributionSetting.getDistributionMode();
@@ -2388,9 +2305,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 continue;
             }
             if (StrUtil.isNotBlank(batchModifyVo.getUpdateAgreementId())) {
-                insFeeOrdersMapper.update(null, new LambdaUpdateWrapper<InsFeeOrders>()
-                        .set(InsFeeOrders::getAgreementId, batchModifyVo.getUpdateAgreementId())
-                        .eq(InsFeeOrders::getOrderNo, orderNo));
+                insFeeOrdersMapper.update(null, new LambdaUpdateWrapper<InsFeeOrders>().set(InsFeeOrders::getAgreementId, batchModifyVo.getUpdateAgreementId()).eq(InsFeeOrders::getOrderNo, orderNo));
             }
             // add by lipf, 进行费用的修改
             if (this.rationIsNotAllNull(batchModifyVo)) {
@@ -2402,22 +2317,14 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             }
             log.info("车险订单[{}]对应的订单明细是[{}]", orderNo, JSONUtil.toJsonStr(oldInsOrders));
             if (batchModifyVo.getSigningTime() != null) {
-                baseMapper.update(null, new LambdaUpdateWrapper<InsOrders>()
-                        .set(InsOrders::getSigningTime, batchModifyVo.getSigningTime())
-                        .eq(InsOrders::getId, orderNo));
-                insFeeOrdersMapper.update(null, new LambdaUpdateWrapper<InsFeeOrders>()
-                        .set(InsFeeOrders::getSigningTime, batchModifyVo.getSigningTime())
-                        .eq(InsFeeOrders::getOrderNo, orderNo));
+                baseMapper.update(null, new LambdaUpdateWrapper<InsOrders>().set(InsOrders::getSigningTime, batchModifyVo.getSigningTime()).eq(InsOrders::getId, orderNo));
+                insFeeOrdersMapper.update(null, new LambdaUpdateWrapper<InsFeeOrders>().set(InsFeeOrders::getSigningTime, batchModifyVo.getSigningTime()).eq(InsFeeOrders::getOrderNo, orderNo));
             }
             if (StrUtil.isNotBlank(batchModifyVo.getContractUserName())) {
-                baseMapper.update(null, new LambdaUpdateWrapper<InsOrders>()
-                        .set(InsOrders::getDockingPerson, batchModifyVo.getContractUserName())
-                        .eq(InsOrders::getId, orderNo));
+                baseMapper.update(null, new LambdaUpdateWrapper<InsOrders>().set(InsOrders::getDockingPerson, batchModifyVo.getContractUserName()).eq(InsOrders::getId, orderNo));
             }
             if (StrUtil.isNotBlank(batchModifyVo.getContractPhone())) {
-                baseMapper.update(null, new LambdaUpdateWrapper<InsOrders>()
-                        .set(InsOrders::getDockingPersonPhone, batchModifyVo.getContractPhone())
-                        .eq(InsOrders::getId, orderNo));
+                baseMapper.update(null, new LambdaUpdateWrapper<InsOrders>().set(InsOrders::getDockingPersonPhone, batchModifyVo.getContractPhone()).eq(InsOrders::getId, orderNo));
             }
             count++;
         }
@@ -2631,12 +2538,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
      * @date 2026/6/23 16:34
      */
     private boolean rationIsNotAllNull(BatchModifyVo vo) {
-        boolean hasSuperviseOrOtherCosts = vo.getJqSuperviseCostsProportion() != null
-                || vo.getSySuperviseCostsProportion() != null
-                || vo.getJySuperviseCostsProportion() != null
-                || vo.getJqOtherCostsProportion() != null
-                || vo.getSyOtherCostsProportion() != null
-                || vo.getJyOtherCostsProportion() != null;
+        boolean hasSuperviseOrOtherCosts = vo.getJqSuperviseCostsProportion() != null || vo.getSySuperviseCostsProportion() != null || vo.getJySuperviseCostsProportion() != null || vo.getJqOtherCostsProportion() != null || vo.getSyOtherCostsProportion() != null || vo.getJyOtherCostsProportion() != null;
         log.info("hasSuperviseOrOtherCosts=[{}]", hasSuperviseOrOtherCosts);
         return hasSuperviseOrOtherCosts;
     }

+ 5 - 0
tenant/organization/src/main/java/com/jzg/organization/client/OrgClient.java

@@ -6,11 +6,16 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.List;
+
 @FeignClient(name="${spring.application.name:jzg-organization}")
 public interface OrgClient {
 
     @PostMapping("/ptlAgreementDispatch/getAgreementDispatch")
     HttpResult getAgreementDispatch(@RequestBody PtlAgreementDispatchQuery ptlAgreementDispatchQuery);
 
+    @PostMapping("/ptlAgreementDispatch/getAgreementDispatchByCompanyIds")
+    HttpResult getAgreementDispatchByCompanyIds(@RequestBody List<String> companyIds);
+
 
 }

+ 4 - 0
tenant/organization/src/main/java/com/jzg/organization/client/PlatformClient.java

@@ -29,6 +29,10 @@ public interface PlatformClient {
     @PostMapping(value = "/manager/attribution/getAgreementAttribution2")
     public HttpResult<PtlAgreementAttribution> getAgreementAttribution2(@RequestParam(value = "id") String id);
 
+    @Operation(summary = "批量查询保险公司账号接口", description = "批量查询保险公司账号接口")
+    @PostMapping(value = "/manager/attribution/getAgreementAttributionByIds")
+    public HttpResult<List<PtlAgreementAttribution>> getAgreementAttributionByIds(@RequestBody List<String> ids);
+
     /**
      * 特别约定列表查询
      */

+ 6 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/PtlAgreementDispatchController.java

@@ -40,6 +40,12 @@ public class PtlAgreementDispatchController {
         return HttpResult.ok(ptlAgreementDispatchService.getAgreementDispatch(ptlAgreementDispatchQuery));
     }
 
+    @PostMapping("getAgreementDispatchByCompanyIds")
+    @Operation(summary= "批量获取协议调度")
+    public HttpResult<PtlAgreementDispatchVo> getAgreementDispatchByCompanyIds(@RequestBody List<String> companyIds){
+        return HttpResult.ok(ptlAgreementDispatchService.getAgreementDispatchByCompanyIds(companyIds));
+    }
+
     /**
      * 添加协议调度
      * @author lipf modify by lipf

+ 3 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/PtlAgreementDispatchAfterActionMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.agreement.dispatch.dto.PtlAgreementDispatchAction;
 import com.jzg.commons.entity.agreement.dispatch.dto.PtlAgreementDispatchAfterAction;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -12,4 +13,6 @@ import java.util.List;
 public interface PtlAgreementDispatchAfterActionMapper extends BaseMapper<PtlAgreementDispatchAfterAction> {
 
     public List<PtlAgreementDispatchAfterAction> getAfterActions(String companyId);
+
+    public List<PtlAgreementDispatchAfterAction> getAfterActionsByCompanyIds(@Param("companyIds") List<String> companyIds);
 }

+ 6 - 0
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementDispatchService.java

@@ -49,6 +49,12 @@ public interface PtlAgreementDispatchService extends IService<PtlAgreementDispat
      */
     public PtlAgreementDispatchVo getAgreementDispatch(PtlAgreementDispatchQuery ptlAgreementDispatchQuery);
 
+    /**
+     * 批量获取多个保司的协议调度信息(公共字典只查一次,消除逐保司重复的耗时查询)
+     * @param companyIds 保司id集合
+     */
+    public PtlAgreementDispatchVo getAgreementDispatchByCompanyIds(List<String> companyIds);
+
     /**
      * 根据调度id 获取调度动作
      * @param dispatchIds

+ 66 - 13
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementDispatchServiceImpl.java

@@ -116,11 +116,31 @@ public class PtlAgreementDispatchServiceImpl extends ServiceImpl<PtlAgreementDis
 
     @Override
     public PtlAgreementDispatchVo getAgreementDispatch(PtlAgreementDispatchQuery ptlAgreementDispatchQuery) {
-        log.info("获取协议调度. ptlAgreementDispatchQuery=[{}]", JSONUtil.toJsonStr(ptlAgreementDispatchQuery));
+        if (ptlAgreementDispatchQuery == null || StrUtil.isBlank(ptlAgreementDispatchQuery.getCompanyId())) {
+            return new PtlAgreementDispatchVo();
+        }
+        return buildDispatchVos(Collections.singletonList(ptlAgreementDispatchQuery.getCompanyId()));
+    }
+
+    /**
+     * 批量获取多个保司的协议调度信息(公共字典/全表查询只执行一次,避免逐保司重复查询;账号查询批量一次完成,消除嵌套串行 RPC)
+     *
+     * @param companyIds 保司id集合
+     */
+    public PtlAgreementDispatchVo getAgreementDispatchByCompanyIds(List<String> companyIds) {
+        if (CollUtil.isEmpty(companyIds)) {
+            return new PtlAgreementDispatchVo();
+        }
+        return buildDispatchVos(companyIds);
+    }
+
+    private PtlAgreementDispatchVo buildDispatchVos(List<String> companyIds) {
+        log.info("批量获取协议调度. companyIds=[{}]", JSONUtil.toJsonStr(companyIds));
+        PtlAgreementDispatchVo dispatchVos = new PtlAgreementDispatchVo();
+        // 一次查询所有保司的调度(公共字典只查一次)
         List<PtlAgreementDispatch> ptlAgreementDispatches = baseMapper.selectList(new LambdaQueryWrapper<PtlAgreementDispatch>()
-                .eq(PtlAgreementDispatch::getCompanyId, ptlAgreementDispatchQuery.getCompanyId())
+                .in(PtlAgreementDispatch::getCompanyId, companyIds)
                 .orderByAsc(PtlAgreementDispatch::getCreateTime));
-        PtlAgreementDispatchVo dispatchVos = new PtlAgreementDispatchVo();
         List<String> dispatchIds = ptlAgreementDispatches.stream().map(PtlAgreementDispatch::getId).collect(Collectors.toList());
         if (!dispatchIds.isEmpty()) {
             List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
@@ -140,8 +160,9 @@ public class PtlAgreementDispatchServiceImpl extends ServiceImpl<PtlAgreementDis
             }).toList();
             // 获取所有保司的动作
             List<PtlAgreementDispatchAction> ptlAgreementDispatchActions = actionMapper.getActions(dispatchIds);
-            // 获取保司的报价失败之后的动作
-            List<PtlAgreementDispatchAfterAction> afterActions = afterActionMapper.getAfterActions(ptlAgreementDispatchQuery.getCompanyId());
+            // 获取保司的报价失败之后的动作(按 companyId 分组复用)
+            Map<String, List<PtlAgreementDispatchAfterAction>> afterActionsByCompany = afterActionMapper.getAfterActionsByCompanyIds(companyIds).stream()
+                    .collect(Collectors.groupingBy(PtlAgreementDispatchAfterAction::getCompanyId));
             int index = 1;
             // add by lipf, 对协议配置中的字典序号进行转义 2026年5月20日16:43:34
             List<PtlAgreementUndwrtRulesDictLabal> ptlAgreementUndwrtRulesDictLabals = baseMapper.queryAllDictLabal();
@@ -160,6 +181,28 @@ public class PtlAgreementDispatchServiceImpl extends ServiceImpl<PtlAgreementDis
                     ));
             Map<String, PtlAreaLicense> areaLicenseMap = ptlAreaLicenseService.queryAllAreaLicenseMap();
 
+            // ===== 收集所有 change_bs_account 动作的 accountId,批量查询一次(消除串行 RPC) =====
+            List<String> accountIds = new ArrayList<>();
+            for (PtlAgreementDispatchAction action : ptlAgreementDispatchActions) {
+                if ("change_bs_account".equals(action.getActionCode()) && action.getActionJson() != null
+                        && StrUtil.isNotBlank(action.getActionJson().getString("accountId"))) {
+                    accountIds.add(action.getActionJson().getString("accountId"));
+                }
+            }
+            Map<String, PtlAgreementAttribution> attributionById = new HashMap<>();
+            if (!accountIds.isEmpty()) {
+                try {
+                    HttpResult<List<PtlAgreementAttribution>> batchRes = platformClient.getAgreementAttributionByIds(accountIds);
+                    if (batchRes.getCode() == 200 && batchRes.getData() != null) {
+                        for (PtlAgreementAttribution attr : batchRes.getData()) {
+                            attributionById.put(attr.getId(), attr);
+                        }
+                    }
+                } catch (Exception e) {
+                    log.warn("批量查询保司账号异常", e);
+                }
+            }
+
             Map<String,String> operatorMap = new HashMap<>();
             operatorMap.put("1","包含");
             operatorMap.put("2","小于");
@@ -243,11 +286,22 @@ public class PtlAgreementDispatchServiceImpl extends ServiceImpl<PtlAgreementDis
                                 String accountId = action.getActionJson().getString("accountId");
                                 // 你的 Objects.nonNull 判断依然有效且非常规范
                                 if (Objects.nonNull(accountId)) {
-                                    HttpResult<PtlAgreementAttribution> agreementAttribution = platformClient.getAgreementAttribution2(accountId);
-                                    if (agreementAttribution.getCode() == 200) {
-                                        PtlAgreementAttribution data = agreementAttribution.getData();
+                                    PtlAgreementAttribution data = attributionById.get(accountId);
+                                    if (data != null) {
                                         action.getActionJson().put("userName", data.getUsername());
                                         action.getActionJson().put("companyName", data.getInsCompanyName());
+                                    } else {
+                                        // 批量未覆盖时回退单次查询,保证兼容
+                                        try {
+                                            HttpResult<PtlAgreementAttribution> agreementAttribution = platformClient.getAgreementAttribution2(accountId);
+                                            if (agreementAttribution.getCode() == 200 && agreementAttribution.getData() != null) {
+                                                PtlAgreementAttribution d = agreementAttribution.getData();
+                                                action.getActionJson().put("userName", d.getUsername());
+                                                action.getActionJson().put("companyName", d.getInsCompanyName());
+                                            }
+                                        } catch (Exception e) {
+                                            log.warn("查询保司账号[{}]异常", accountId, e);
+                                        }
                                     }
                                 }
                             }
@@ -258,7 +312,7 @@ public class PtlAgreementDispatchServiceImpl extends ServiceImpl<PtlAgreementDis
                 dispatchVos.getDispatchVos().add(vo);
             }
 
-            for(PtlAgreementDispatchAfterAction afterAction : afterActions){
+            for(PtlAgreementDispatchAfterAction afterAction : afterActionsByCompany.values().stream().flatMap(List::stream).collect(Collectors.toList())){
                 SysDict sysDict = afterActionsDicts.stream().filter(x -> x.getValue().equals(afterAction.getActionCode())).findFirst().orElse(null);
                 if(sysDict == null){
                     afterAction.setActionName("未知动作");
@@ -276,14 +330,13 @@ public class PtlAgreementDispatchServiceImpl extends ServiceImpl<PtlAgreementDis
                         // change_bs_account 更换保司账号
                         HttpResult<PtlAgreementAttribution> agreementAttribution = esmInsCompanyClient.getAgreementAttribution(afterAction.getActionJson().get("accountId").toString());
                         if(agreementAttribution.getCode() == 200){
-                            PtlAgreementAttribution data = agreementAttribution.getData();
-                            afterAction.getActionJson().put("userName",data.getUsername());
-                            afterAction.getActionJson().put("companyName",data.getInsCompanyName());
+                            afterAction.getActionJson().put("userName",agreementAttribution.getData().getUsername());
+                            afterAction.getActionJson().put("companyName",agreementAttribution.getData().getInsCompanyName());
                         }
                     }
                 }
             }
-            dispatchVos.setAfterActions(afterActions);
+            dispatchVos.setAfterActions(afterActionsByCompany.values().stream().flatMap(List::stream).collect(Collectors.toList()));
         }
 
 

+ 66 - 44
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -438,6 +438,32 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         //   3. 关联账号必须可用 (useStatus == "0") 且可报价 (quoteStatus == "0")
         // 过滤后如果某保司没有任何有效协议,会被下面的 removeIf 自动排除
         if (CollUtil.isNotEmpty(companyList)) {
+            // 1. 收集所有需要校验的归属账号 id(去重)
+            List<String> attributionIds = companyList.stream()
+                    .flatMap(c -> Optional.ofNullable(c.getAgreements()).orElse(Collections.emptyList()).stream())
+                    .map(PtlAgreement::getAttributionId)
+                    .filter(StrUtil::isNotBlank)
+                    .distinct()
+                    .collect(Collectors.toList());
+
+            // 2. 并行批量查询归属账号,构建 id -> 账号信息 索引(避免逐协议串行 RPC)
+            Map<String, PtlAgreementAttribution> attributionMap;
+            if (CollUtil.isNotEmpty(attributionIds)) {
+                attributionMap = attributionIds.parallelStream().collect(HashMap::new, (map, id) -> {
+                    try {
+                        HttpResult<PtlAgreementAttribution> res = platformClient.getAgreementAttribution2(id);
+                        if (res.getCode() == 200 && res.getData() != null) {
+                            map.put(id, res.getData());
+                        }
+                    } catch (Exception e) {
+                        log.warn("批量查询协议归属账号[{}]异常,默认保留", id, e);
+                    }
+                }, HashMap::putAll);
+            } else {
+                attributionMap = Collections.emptyMap();
+            }
+
+            // 3. 基于索引做协议 + 账号状态过滤(无远程调用)
             for (EsmInsCompany company : companyList) {
                 List<PtlAgreement> agreements = company.getAgreements();
                 if (CollUtil.isEmpty(agreements)) {
@@ -450,21 +476,14 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
                         // 归属账号状态
                         .filter(agreement -> {
                             String attributionId = agreement.getAttributionId();
-                            if (attributionId == null || attributionId.isEmpty()) {
+                            if (StrUtil.isBlank(attributionId)) {
                                 return true; // 没有关联账号,不做账号校验
                             }
-                            try {
-                                com.jzg.commons.core.page.HttpResult<PtlAgreementAttribution> res =
-                                        platformClient.getAgreementAttribution2(attributionId);
-                                if (res.getCode() != 200 || res.getData() == null) {
-                                    return true; // 查不到账号信息,默认保留
-                                }
-                                PtlAgreementAttribution attr = res.getData();
-                                return "0".equals(attr.getUseStatus()) && "0".equals(attr.getQuoteStatus());
-                            } catch (Exception e) {
-                                log.warn("查询协议[{}]的归属账号异常,默认保留", agreement.getId(), e);
-                                return true;
+                            PtlAgreementAttribution attr = attributionMap.get(attributionId);
+                            if (attr == null) {
+                                return true; // 查不到账号信息,默认保留
                             }
+                            return "0".equals(attr.getUseStatus()) && "0".equals(attr.getQuoteStatus());
                         })
                         .collect(Collectors.toList());
                 company.setAgreements(validAgreements);
@@ -498,21 +517,22 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
 
         List<PtlSchemeRulesAttrLink> ptlSchemeRulesAttrLinks = ptlSchemeRulesAttrLinkMapper.selectList(new LambdaQueryWrapper<PtlSchemeRulesAttrLink>().in(PtlSchemeRulesAttrLink::getSchemeId, ptlSchemeIds));
 
-        // 将规则根据schemeId聚合转换成Map
-//        Map<String, List<PtlSchemeRulesAttrLink>> ptlSchemeRulesAttrLinkMap = ptlSchemeRulesAttrLinks.stream()
-//                .collect(Collectors.groupingBy(PtlSchemeRulesAttrLink::getSchemeId));
-
         ValidateSchemeRuleVo validateSchemeRuleVo = new ValidateSchemeRuleVo();
         validateSchemeRuleVo.builderQuoteVo(schemeRuleFilterVo, redissonClient);
         validateSchemeRuleVo.setAttrLinks(ptlSchemeRulesAttrLinks);
         HttpResult<List<String>> esmInsCompanyHttpResult = costsRuleClient.validateSchemeRule(validateSchemeRuleVo);
         List<String> insSchemeIds = esmInsCompanyHttpResult.getData();
+        if (CollUtil.isEmpty(insSchemeIds)) {
+            AssertionUtils.isFail(true, "没有可报价的保险公司");
+        }
+        // 用 HashSet 提升 contains 查找效率(O(1))
+        Set<String> insSchemeIdSet = new HashSet<>(insSchemeIds);
         //开始过滤保险公司
         //1.过滤方案
-        ptlSchemes.removeIf(ptlScheme -> !insSchemeIds.contains(ptlScheme.getId()));
-        List<String> companyIds = ptlSchemes.stream().map(ptlScheme -> ptlScheme.getCompanyId()).collect(Collectors.toList());
+        ptlSchemes.removeIf(ptlScheme -> !insSchemeIdSet.contains(ptlScheme.getId()));
+        Set<String> companyIdSet = ptlSchemes.stream().map(PtlScheme::getCompanyId).collect(Collectors.toSet());
         // 移除不匹配方案的保司,以及空协议的保司
-        companyList.removeIf(company -> !companyIds.contains(company.getId()) || CollUtil.isEmpty(company.getAgreements()));
+        companyList.removeIf(company -> !companyIdSet.contains(company.getId()) || CollUtil.isEmpty(company.getAgreements()));
         List<PtlAgreementInsCompanyVo> resVo = new ArrayList<>();
         companyList.forEach(company -> {
             PtlAgreementInsCompanyVo vo = new PtlAgreementInsCompanyVo();
@@ -524,28 +544,14 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
 
         ValidateDispatchRuleVo dispatchRuleVos = new ValidateDispatchRuleVo();
         dispatchRuleVos.setQuoteVo(validateSchemeRuleVo.getQuoteVo());
-        //2.协议调度规则数据拼接
-        String finalSystemCode = systemCode;
-        companyList.forEach(company -> {
-            PtlAgreementDispatchQuery query = new PtlAgreementDispatchQuery();
-            query.setCompanyId(company.getId());
-            HttpResult agreementDispatch = orgClient.getAgreementDispatch(query);
-            if (agreementDispatch.getCode() == 200) {
-                ObjectMapper mapper = new ObjectMapper();
-                List<PtlAgreementDispatchVo.DispatchVo> vos = new ArrayList<>();
-                Map<String, Object> data = (Map<String, Object>) agreementDispatch.getData();
-
-                Object dispatchVosObj = data.get("dispatchVos");
-                if (dispatchVosObj instanceof List) {
-                    List<Map<String, Object>> dispatchVos = (List<Map<String, Object>>) dispatchVosObj;
-                    for (Map<String, Object> map : dispatchVos) {
-                        PtlAgreementDispatchVo.DispatchVo obj = mapper.convertValue(map, PtlAgreementDispatchVo.DispatchVo.class);
-                        vos.add(obj);
-                    }
-                }
-
-                // 根据section 分组 进行拆分 规则
-                for (PtlAgreementDispatchVo.DispatchVo vo : vos) {
+        //2.协议调度规则数据拼接(一次批量查询所有保司,避免逐保司重复的全表/字典查询与串行 RPC)
+        List<String> allCompanyIds = companyList.stream().map(EsmInsCompany::getId).collect(Collectors.toList());
+        try {
+            HttpResult agreementDispatch = orgClient.getAgreementDispatchByCompanyIds(allCompanyIds);
+            if (agreementDispatch != null && agreementDispatch.getCode() == 200 && agreementDispatch.getData() != null) {
+                PtlAgreementDispatchVo dispatchVoResult = new ObjectMapper().convertValue(agreementDispatch.getData(), PtlAgreementDispatchVo.class);
+                List<ValidateDispatchRuleVo.DispatchAttrVo> dispatchAttrVos = new ArrayList<>();
+                for (PtlAgreementDispatchVo.DispatchVo vo : dispatchVoResult.getDispatchVos()) {
                     List<PtlAgreementDispatchRulesAttrLink> attrLinks = vo.getAttrLinks();
                     Map<String, List<PtlAgreementDispatchRulesAttrLink>> grouped = attrLinks.stream().collect(Collectors.groupingBy(link -> Optional.ofNullable(link.getSection()).orElse("0"), LinkedHashMap::new, Collectors.toList()));
                     ValidateDispatchRuleVo.DispatchAttrVo dispatchAttrVo = new ValidateDispatchRuleVo.DispatchAttrVo();
@@ -553,20 +559,36 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
                     dispatchAttrVo.setDispatchName(vo.getDispatchName());
                     dispatchAttrVo.setCompanyId(vo.getCompanyId());
                     dispatchAttrVo.setSectionGroups(grouped);
-                    dispatchRuleVos.getDispatchAttrVos().add(dispatchAttrVo);
+                    dispatchAttrVos.add(dispatchAttrVo);
                 }
+                dispatchRuleVos.getDispatchAttrVos().addAll(dispatchAttrVos);
             }
-        });
+        } catch (Exception e) {
+            log.warn("批量查询协议调度异常", e);
+        }
 //
         // 3. 校验调度数据
         HttpResult httpResult = costsRuleClient.validateDispatchRule(dispatchRuleVos);
         if (httpResult.getCode() == 200) {
             // 返回了调度id  通过调度id 查询动作
             List<PtlAgreementDispatchVo.DispatchVo> agreementDispatchAction = ptlAgreementDispatchService.getAgreementDispatchAction((List<String>) httpResult.getData());
+            // 构建 保司id -> DispatchVo 索引(companyId 可能为逗号分隔的多保司)
+            Map<String, PtlAgreementDispatchVo.DispatchVo> dispatchByCompany = new HashMap<>();
+            for (PtlAgreementDispatchVo.DispatchVo dispatch : agreementDispatchAction) {
+                if (dispatch.getCompanyId() == null) {
+                    continue;
+                }
+                for (String cid : dispatch.getCompanyId().split(",")) {
+                    String trimCid = cid.trim();
+                    if (!trimCid.isEmpty()) {
+                        dispatchByCompany.put(trimCid, dispatch);
+                    }
+                }
+            }
             // 如果动作中存在替换协议则 保司标志置为调度
             resVo.forEach(company -> {
                 company.setIsDispatch(0);
-                PtlAgreementDispatchVo.DispatchVo ptlAgreementDispatchVo = agreementDispatchAction.stream().filter(x -> x.getCompanyId().contains(company.getId())).findFirst().orElse(null);
+                PtlAgreementDispatchVo.DispatchVo ptlAgreementDispatchVo = dispatchByCompany.get(company.getId());
                 if (ptlAgreementDispatchVo != null) {
                     PtlAgreementDispatchAction action1 = ptlAgreementDispatchVo.getActions().stream().filter(action -> action.getActionCode().equals(ActionEnum.SPECIFY_AGREEMENT.getCode())).findFirst().orElse(null);
                     if (action1 != null) {

+ 12 - 0
tenant/organization/src/main/resources/mapper/PtlAgreementDispatchAfterActionMapper.xml

@@ -21,4 +21,16 @@
         </where>
     </select>
 
+    <select id="getAfterActionsByCompanyIds" resultMap="ActionMap">
+        select *
+        from ptl_agreement_dispatch_after_action
+        <where>
+            is_delete = 0
+            and company_id IN
+            <foreach collection="companyIds" item="cid" open="(" separator="," close=")">
+                #{cid}
+            </foreach>
+        </where>
+    </select>
+
 </mapper>