فهرست منبع

fix 已承保的订单电销组修改出入口费用比例

liub 1 ماه پیش
والد
کامیت
43e8eda4d6

+ 3 - 3
commons/src/main/java/com/jzg/commons/config/OpenTelemetryConfig.java

@@ -1,12 +1,12 @@
 package com.jzg.commons.config;
 
 import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
 import io.opentelemetry.sdk.OpenTelemetrySdk;
 import io.opentelemetry.sdk.resources.Resource;
 import io.opentelemetry.sdk.trace.SdkTracerProvider;
 import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
-import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
-import io.opentelemetry.api.common.Attributes;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -26,7 +26,7 @@ public class OpenTelemetryConfig {
 
         // Trace exporter
         OtlpGrpcSpanExporter spanExporter = OtlpGrpcSpanExporter.builder()
-//                .setEndpoint("http://192.168.5.250:4317")
+//                .setEndpoint("http://192.168.1.250:4317")
                 .setEndpoint("http://172.24.144.227:4317")
                 .build();
 

+ 36 - 0
commons/src/main/java/com/jzg/commons/entity/dto/UpdateFeeRatioDTO.java

@@ -0,0 +1,36 @@
+package com.jzg.commons.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author auto
+ * @date 2026/7/23
+ */
+@Data
+@Schema(description = "修改出入口比例DTO")
+public class UpdateFeeRatioDTO {
+
+    @Schema(description = "订单号", required = true)
+    private String orderNo;
+
+    @Schema(description = "交强险入口比例(0-100,服务端自动除以100)")
+    private BigDecimal jqInletRatio;
+
+    @Schema(description = "商业险入口比例(0-100,服务端自动除以100)")
+    private BigDecimal syInletRatio;
+
+    @Schema(description = "驾意险入口比例(0-100,服务端自动除以100)")
+    private BigDecimal jyInletRatio;
+
+    @Schema(description = "交强险出口比例(0-100,服务端自动除以100)")
+    private BigDecimal jqExportRatio;
+
+    @Schema(description = "商业险出口比例(0-100,服务端自动除以100)")
+    private BigDecimal syExportRatio;
+
+    @Schema(description = "驾意险出口比例(0-100,服务端自动除以100)")
+    private BigDecimal jyExportRatio;
+}

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/po/InsFeeOrders.java

@@ -279,6 +279,9 @@ public class InsFeeOrders {
     @TableField(exist = false)
     private String licenseNo;
 
+    @Schema(description = "出入口比例是否已手动修改 0-未修改 1-已修改")
+    private Integer ratioModified;
+
     @Schema(description = "是否删除")
     @TableLogic
     private Integer isDelete;

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java

@@ -108,7 +108,7 @@ public class SysUserJzgInfo extends BaseModel implements Serializable {
     private String partnerLevel;
 
     @TableField(value = "type_attr")
-    @Schema(description = "用户类型:0个代,1渠道,2团队,3电销组")
+    @Schema(description = "用户类型:1.前线人员 2:后线人员 3:合伙人 4:工作室管理员 5:团队 6:个代 7:渠道 8 :电销")
     private String typeAttr;
 
     @TableField(value = "factor_verify")

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

@@ -196,6 +196,9 @@ public class InsFeeOrdersVo {
     @Schema(description = "租户代码")
     private String systemCode;
 
+    @Schema(description = "出入口比例是否已手动修改 0-未修改 1-已修改")
+    private Integer ratioModified;
+
     /**
      * 出口费用是否需要扣减1%
      */
@@ -262,6 +265,9 @@ public class InsFeeOrdersVo {
         this.totalExportPremium = BigDecimalUtil.add(BigDecimalUtil.add(insFeeOrders.getJqExportPremium(),insFeeOrders.getSyExportPremium()),insFeeOrders.getJyExportPremium());
         //出口留点总费用
         this.totalExportKeepPointPremium = BigDecimalUtil.add(BigDecimalUtil.add(insFeeOrders.getJqExportKeepPointPremium(),insFeeOrders.getSyExportKeepPointPremium()),insFeeOrders.getJyExportKeepPointPremium());
+
+        //比例是否已修改标识
+        this.ratioModified = insFeeOrders.getRatioModified() != null ? insFeeOrders.getRatioModified() : 0;
     }
 
     public String convert2Str(BigDecimal num){

+ 17 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -11,6 +11,7 @@ import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.dto.InsOrdersParamVO;
+import com.jzg.commons.entity.dto.UpdateFeeRatioDTO;
 import com.jzg.commons.entity.finance.vo.BatchModifyVo;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
@@ -20,11 +21,7 @@ import com.jzg.commons.entity.po.InsFeeOrders;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
-import com.jzg.commons.entity.quote.vo.orders.InsFeeCalculateRequest;
-import com.jzg.commons.entity.quote.vo.orders.InsFeeCalculateResponse;
-import com.jzg.commons.entity.quote.vo.orders.InsOrdersAdd;
-import com.jzg.commons.entity.quote.vo.orders.InsOrdersEnd;
-import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
+import com.jzg.commons.entity.quote.vo.orders.*;
 import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import com.jzg.commons.request.RequestSingleParam;
 import com.jzg.quotation.summary.mapper.InsOrdersMapper;
@@ -46,7 +43,8 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.List;
+import java.util.Objects;
 
 @RestController
 @RequestMapping("/supplementOrder")
@@ -227,6 +225,19 @@ public class InsOrdersController extends BaseController {
         return insFeeOrdersService.calcCosts(ptlAgreementCostRatioVo);
     }
 
+    /**
+     * 修改出入口比例(交强/商业/驾意的入口和出口比例)
+     */
+    @Operation(summary = "修改出入口比例")
+    @PostMapping("/updateFeeRatio")
+    public HttpResult<InsFeeOrders> updateFeeRatio(@RequestBody UpdateFeeRatioDTO dto) {
+        log.info("修改出入口比例。dto=[{}]", JSONUtil.toJsonStr(dto));
+        InsFeeOrders result = insFeeOrdersService.updateFeeRatio(
+                dto.getOrderNo(), dto.getJqInletRatio(), dto.getSyInletRatio(), dto.getJyInletRatio(),
+                dto.getJqExportRatio(), dto.getSyExportRatio(), dto.getJyExportRatio());
+        return HttpResult.ok(result);
+    }
+
     @GetMapping("/changePerson")
     @Operation(summary = "更改对接人")
     public HttpResult changePerson(String orderNo,String name,String phone){

+ 23 - 5
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -10,7 +10,6 @@ import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -39,7 +38,10 @@ 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.vo.*;
+import com.jzg.commons.entity.vo.CompanyClauseVo;
+import com.jzg.commons.entity.vo.InsCompanyClauseVo;
+import com.jzg.commons.entity.vo.LotteryCountVO;
+import com.jzg.commons.entity.vo.UnifiedUserClientVO;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.exception.TokenExpireException;
 import com.jzg.commons.util.AssertionUtils;
@@ -52,8 +54,8 @@ import com.jzg.quotation.commons.service.QuotationCrawlerBaseService;
 import com.jzg.quotation.commons.utils.SnowFlakeUtil;
 import com.jzg.quotation.guoren.crawler.service.GuoRenCrawlerRequest;
 import com.jzg.quotation.summary.aop.AuditVerification;
-import com.jzg.quotation.summary.aop.aspect.OrderOperationLog;
 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.LocalLivingClient;
@@ -82,7 +84,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
-import javax.annotation.Resource;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -216,7 +217,7 @@ public class UnifyOrderManager {
     @Operation(summary = "获取报价号")
     @GetMapping("/getQuoteNo")
     public HttpResult getQuoteNo(@Schema(description = "车牌号") String licenseNo, @Schema(description = "车架号") String vinNo, @Schema(description = "发动机号") String engineNo) {
-        String quoteNo = String.valueOf(SnowFlakeUtil.getSnowFlakeId());
+        String quoteNo = SnowFlakeUtil.getSnowFlakeId();
         List<InsOrdersCarInfo> carInfos = insOrdersCarInfoService.list(new LambdaQueryWrapper<InsOrdersCarInfo>().eq(InsOrdersCarInfo::getLicenseNo, licenseNo)
                 .eq(InsOrdersCarInfo::getVinNo, vinNo)
                 .eq(InsOrdersCarInfo::getEngineNo, engineNo));
@@ -945,6 +946,7 @@ public class UnifyOrderManager {
         orderStatusVo.setInsOrdersAccidentalDriving(insOrdersAccidentalDriving);
         OrderStatusResultVo orderStatusResultVo = orderStatusService.queryOrderState(orderStatusVo);
         log.info("订单状态orderStatusResultVo=[{}]", JSONUtil.toJsonStr(orderStatusResultVo));
+
         // 保存状态查询结果
         insOrdersService.orderAfterUpdateOrderStatus(orderStatusVo.getOrder().getOrdersNo(), orderStatusResultVo);
         // 保存支付链接
@@ -956,6 +958,22 @@ public class UnifyOrderManager {
             doSomethingAfterUnderwited(insOrders);
         }
 
+        // 电销组订单状态已变更但比例未修改时,向前端提示
+        if (orderStatusResultVo.getOrderStatus() == InsOrderStatusEnum.UNDERWRITED) {
+            String queryUserId = insOrders.getRealQuoteUserId();
+            if (StrUtil.isNotBlank(queryUserId)) {
+                String systemCode = getSystemCode();
+                HttpResult<SysUserJzgInfo> userResult = orgClient.queryUserByUserId(queryUserId, systemCode);
+                if (userResult != null && userResult.getCode() == 200 && userResult.getData() != null
+                        && "8".equals(userResult.getData().getTypeAttr())) {
+                    InsFeeOrders feeOrders = insFeeOrdersService.getById(insOrders.getId());
+                    if (feeOrders == null || !Integer.valueOf(1).equals(feeOrders.getRatioModified())) {
+                        return HttpResult.ok("订单状态已更新,请修改出入口费用比例后发起财务审核");
+                    }
+                }
+            }
+        }
+
         return HttpResult.ok("状态刷新成功");
     }
 

+ 15 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeOrdersService.java

@@ -42,4 +42,19 @@ public interface InsFeeOrdersService extends IService<InsFeeOrders> {
      * @date 2026/6/4 10:17
      */
     BigDecimal queryAllTotalReceivablePremiumByOrderNo(List<String> orderNos);
+
+    /**
+     * 修改出入口比例
+     *
+     * @param orderNo       订单号
+     * @param jqInletRatio  交强险入口比例
+     * @param syInletRatio  商业险入口比例
+     * @param jyInletRatio  驾意险入口比例
+     * @param jqExportRatio 交强险出口比例
+     * @param syExportRatio 商业险出口比例
+     * @param jyExportRatio 驾意险出口比例
+     * @return 更新后的费用记录
+     */
+    InsFeeOrders updateFeeRatio(String orderNo, BigDecimal jqInletRatio, BigDecimal syInletRatio, BigDecimal jyInletRatio,
+                                BigDecimal jqExportRatio, BigDecimal syExportRatio, BigDecimal jyExportRatio);
 }

+ 154 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java

@@ -35,7 +35,6 @@ import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.List;
-import java.util.Objects;
 
 /**
  * @author quchen
@@ -487,6 +486,160 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         return insFeeOrdersMapper.getInsFeeOrderByOrderNo(orderNo);
     }
 
+    @Override
+    public InsFeeOrders updateFeeRatio(String orderNo, BigDecimal jqInletRatio, BigDecimal syInletRatio, BigDecimal jyInletRatio,
+                                       BigDecimal jqExportRatio, BigDecimal syExportRatio, BigDecimal jyExportRatio) {
+        final int SCALE = 5;
+
+        // 1. 查询订单费用记录
+        InsFeeOrders insFeeOrders = getFeeOrderByOrderNo(orderNo);
+        AssertionUtils.isFail(insFeeOrders == null, "根据订单号查询订单费用表查无数据,订单号:" + orderNo);
+
+        // 2. 获取关联数据用于费用重算
+        InsOrders insOrders = insOrdersService.getById(orderNo);
+        InsOrdersCosts insOrdersCosts = insOrdersCostsService.getById(insOrders.getId());
+        PtlAgreement ptlAgreement = orgClient.getByAgreementId(insOrders.getAgreementId());
+        Integer withTax = ptlAgreement.getWithTax();
+        BigDecimal taxFactor = BigDecimal.ONE;
+        if (withTax == 0) {
+            taxFactor = new BigDecimal("1.06");
+        }
+
+        // 保费
+        BigDecimal jqPremium = insOrdersCosts.getJqPremium() == null ? BigDecimal.ZERO : insOrdersCosts.getJqPremium();
+        BigDecimal syPremium = insOrdersCosts.getSyPremium() == null ? BigDecimal.ZERO : insOrdersCosts.getSyPremium();
+        BigDecimal jyPremium = insOrdersCosts.getJyPremium() == null ? BigDecimal.ZERO : insOrdersCosts.getJyPremium();
+
+        // 3. 更新出入口比例(前端传0-100,服务端除以100后保存)
+        // 入口比例变化时,同步调整手续费比例和跟单比例
+        if (jqInletRatio != null) {
+            adjustInletAndRelatedRatios(insFeeOrders, "jq", covertPercent(jqInletRatio));
+        }
+        if (syInletRatio != null) {
+            adjustInletAndRelatedRatios(insFeeOrders, "sy", covertPercent(syInletRatio));
+        }
+        if (jyInletRatio != null) {
+            adjustInletAndRelatedRatios(insFeeOrders, "jy", covertPercent(jyInletRatio));
+        }
+        if (jqExportRatio != null) {
+            insFeeOrders.setJqExportRatio(covertPercent(jqExportRatio));
+        }
+        if (syExportRatio != null) {
+            insFeeOrders.setSyExportRatio(covertPercent(syExportRatio));
+        }
+        if (jyExportRatio != null) {
+            insFeeOrders.setJyExportRatio(covertPercent(jyExportRatio));
+        }
+
+        // 4. 根据新的出入口比例重新计算留点比例和含分销出口比例
+        BigDecimal distributionRatio = BigDecimalUtil.divide(
+                BigDecimalUtil.add(insFeeOrders.getFirstDistributionRatio(),
+                        insFeeOrders.getSecondDistributionRatio(),
+                        insFeeOrders.getThirdDistributionRatio()),
+                new BigDecimal(100));
+
+        insFeeOrders.setJqExportRatioContainDistribution(BigDecimalUtil.add(insFeeOrders.getJqExportRatio(), distributionRatio));
+        insFeeOrders.setSyExportRatioContainDistribution(BigDecimalUtil.add(insFeeOrders.getSyExportRatio(), distributionRatio));
+        insFeeOrders.setJyExportRatioContainDistribution(BigDecimalUtil.add(insFeeOrders.getJyExportRatio(), distributionRatio));
+
+        BigDecimal jqKeepPointRatio = insFeeOrders.getJqInletRatio().divide(taxFactor, SCALE, RoundingMode.HALF_EVEN)
+                .add(insFeeOrders.getJqAdditionalRatio())
+                .subtract(BigDecimalUtil.add(insFeeOrders.getJqExportRatio(), distributionRatio));
+        BigDecimal syKeepPointRatio = insFeeOrders.getSyInletRatio().divide(taxFactor, SCALE, RoundingMode.HALF_EVEN)
+                .add(insFeeOrders.getSyAdditionalRatio())
+                .subtract(BigDecimalUtil.add(insFeeOrders.getSyExportRatio(), distributionRatio));
+        BigDecimal jyKeepPointRatio = insFeeOrders.getJyInletRatio().divide(taxFactor, SCALE, RoundingMode.HALF_EVEN)
+                .add(insFeeOrders.getJyAdditionalRatio())
+                .subtract(BigDecimalUtil.add(insFeeOrders.getJyExportRatio(), distributionRatio));
+
+        insFeeOrders.setJqKeepPointRatio(jqKeepPointRatio);
+        insFeeOrders.setSyKeepPointRatio(syKeepPointRatio);
+        insFeeOrders.setJyKeepPointRatio(jyKeepPointRatio);
+
+        // 5. 按险种重新计算所有费用
+        calculatePremiumByRule(insFeeOrders, "jq", jqPremium,
+                insFeeOrders.getJqCommissionRatio(), insFeeOrders.getJqInletRatio(), insFeeOrders.getJqFollowRatio(),
+                insFeeOrders.getJqAdditionalRatio(), insFeeOrders.getJqKeepPointRatio(), insFeeOrders.getJqExportRatio(),
+                insFeeOrders.getJqExportKeepPointRatio(), insFeeOrders.getJqExportRatioContainDistribution(),
+                withTax, taxFactor, SCALE);
+
+        calculatePremiumByRule(insFeeOrders, "sy", syPremium,
+                insFeeOrders.getSyCommissionRatio(), insFeeOrders.getSyInletRatio(), insFeeOrders.getSyFollowRatio(),
+                insFeeOrders.getSyAdditionalRatio(), insFeeOrders.getSyKeepPointRatio(), insFeeOrders.getSyExportRatio(),
+                insFeeOrders.getSyExportKeepPointRatio(), insFeeOrders.getSyExportRatioContainDistribution(),
+                withTax, taxFactor, SCALE);
+
+        calculatePremiumByRule(insFeeOrders, "jy", jyPremium,
+                insFeeOrders.getJyCommissionRatio(), insFeeOrders.getJyInletRatio(), insFeeOrders.getJyFollowRatio(),
+                insFeeOrders.getJyAdditionalRatio(), insFeeOrders.getJyKeepPointRatio(), insFeeOrders.getJyExportRatio(),
+                insFeeOrders.getJyExportKeepPointRatio(), insFeeOrders.getJyExportRatioContainDistribution(),
+                withTax, taxFactor, SCALE);
+
+        // 6. 重新统计总应收、总应付
+        BigDecimal totalPayable = insFeeOrders.getJqPayablePremium().add(insFeeOrders.getSyPayablePremium()).add(insFeeOrders.getJyPayablePremium());
+        BigDecimal totalReceivable = insFeeOrders.getJqReceivablePremium().add(insFeeOrders.getSyReceivablePremium()).add(insFeeOrders.getJyReceivablePremium());
+        insFeeOrders.setTotalPayablePremium(scale(totalPayable, SCALE));
+        insFeeOrders.setTotalReceivablePremium(scale(totalReceivable, SCALE));
+
+        // 7. 设置已修改标识
+        insFeeOrders.setRatioModified(1);
+
+        // 8. 保存到数据库
+        int updateCount = insFeeOrdersMapper.updateById(insFeeOrders);
+        AssertionUtils.isFail(updateCount <= 0, "修改出入口比例失败,订单号:" + orderNo);
+
+        log.info("修改出入口比例并重算费用成功,orderNo=[{}], jqInletRatio=[{}], syInletRatio=[{}], jyInletRatio=[{}], jqExportRatio=[{}], syExportRatio=[{}], jyExportRatio=[{}]",
+                orderNo, jqInletRatio, syInletRatio, jyInletRatio, jqExportRatio, syExportRatio, jyExportRatio);
+
+        return insFeeOrders;
+    }
+
+    /**
+     * 调整入口比例及关联的手续费比例和跟单比例
+     * 规则:手续费比例不能大于入口比例,跟单比例 = 入口比例 - 手续费比例
+     *
+     * @param insFeeOrders  费用订单
+     * @param type          险种类型 jq/sy/jy
+     * @param newInletRatio 新的入口比例(已除以100)
+     */
+    private void adjustInletAndRelatedRatios(InsFeeOrders insFeeOrders, String type, BigDecimal newInletRatio) {
+        switch (type) {
+            case "jq": {
+                insFeeOrders.setJqInletRatio(newInletRatio);
+                BigDecimal commissionRatio = insFeeOrders.getJqCommissionRatio();
+                if (newInletRatio.compareTo(commissionRatio) < 0) {
+                    insFeeOrders.setJqCommissionRatio(newInletRatio);
+                    insFeeOrders.setJqFollowRatio(BigDecimal.ZERO);
+                } else {
+                    insFeeOrders.setJqFollowRatio(newInletRatio.subtract(commissionRatio));
+                }
+                break;
+            }
+            case "sy": {
+                insFeeOrders.setSyInletRatio(newInletRatio);
+                BigDecimal commissionRatio = insFeeOrders.getSyCommissionRatio();
+                if (newInletRatio.compareTo(commissionRatio) < 0) {
+                    insFeeOrders.setSyCommissionRatio(newInletRatio);
+                    insFeeOrders.setSyFollowRatio(BigDecimal.ZERO);
+                } else {
+                    insFeeOrders.setSyFollowRatio(newInletRatio.subtract(commissionRatio));
+                }
+                break;
+            }
+            case "jy": {
+                insFeeOrders.setJyInletRatio(newInletRatio);
+                BigDecimal commissionRatio = insFeeOrders.getJyCommissionRatio();
+                if (newInletRatio.compareTo(commissionRatio) < 0) {
+                    insFeeOrders.setJyCommissionRatio(newInletRatio);
+                    insFeeOrders.setJyFollowRatio(BigDecimal.ZERO);
+                } else {
+                    insFeeOrders.setJyFollowRatio(newInletRatio.subtract(commissionRatio));
+                }
+                break;
+            }
+        }
+    }
+
     /**
      * 更新订单的可用金额,同时调整剩余金额
      * 更新前会校验:订单存在性、出口留点比例必须为0、新可用金额不能大于当前金额

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

@@ -36,11 +36,7 @@ import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.quote.vo.aggregated.UnderwritingResultsVo;
 import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
-import com.jzg.commons.entity.quote.vo.orders.InsFeeCalculateRequest;
-import com.jzg.commons.entity.quote.vo.orders.InsFeeCalculateResponse;
-import com.jzg.commons.entity.quote.vo.orders.InsOrdersAdd;
-import com.jzg.commons.entity.quote.vo.orders.InsOrdersEnd;
-import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
+import com.jzg.commons.entity.quote.vo.orders.*;
 import com.jzg.commons.entity.rights.vo.InsOrderRightsInfoVo;
 import com.jzg.commons.entity.system.vo.SysSystemBusPermsVo;
 import com.jzg.commons.entity.vo.*;
@@ -52,7 +48,6 @@ import com.jzg.quotation.commons.client.OrgClient;
 import com.jzg.quotation.commons.client.PlatformClient;
 import com.jzg.quotation.commons.utils.BeanCopyUtil;
 import com.jzg.quotation.commons.utils.SnowFlakeUtil;
-import com.jzg.quotation.summary.aop.aspect.QuoteVerificationAspect;
 import com.jzg.quotation.summary.client.EsmInsCompanyClient;
 import com.jzg.quotation.summary.consumer.template.OrderMessageTemplate;
 import com.jzg.quotation.summary.entity.bo.DataValueBo;
@@ -1144,10 +1139,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 quoteVo.getOrder().getInsuranceCompanyCode(),
                 quoteVo.getCarInfoVo().getLicenseNo(),
                 quoteVo.getCarInfoVo().getVinNo());
-        boolean isExistsMainOrder = false;
-        if (Objects.nonNull(mainOrders)) {
-            isExistsMainOrder = true;
-        }
+        boolean isExistsMainOrder = Objects.nonNull(mainOrders);
         String mainOrderNo;
         // 如果订单号为0 则生成主订单
         if (!isExistsMainOrder) {
@@ -1666,8 +1658,25 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                     baseController.getToken(), MessageCodeEnum.TEMPLATE_5);
         }
         if (orderStatusResultVo.getOrderStatus().equals(InsOrderStatusEnum.UNDERWRITED)) {
-            // 增加财务审核
-            insFeeAuditService.feeAuditAdd(insOrders,systemCode );
+            // 电销组业务员的订单变更为已承保时,检查出入口比例是否已修改,未修改则跳过财务审核
+            boolean skipFeeAudit = false;
+            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 (feeOrders == null || !Integer.valueOf(1).equals(feeOrders.getRatioModified())) {
+                        skipFeeAudit = true;
+                        log.info("电销组订单出入口比例未修改,跳过财务审核,订单号=[{}]", orderNo);
+                    }
+                }
+            }
+            if (!skipFeeAudit) {
+                // 增加财务审核
+                insFeeAuditService.feeAuditAdd(insOrders, systemCode);
+            }
             // 将父订单的保司id 和名称更新
             InsOrders baseInsOrders = insOrdersMapper.selectOne(new LambdaQueryWrapper<InsOrders>().eq(InsOrders::getId, insOrders.getParentId()));
             baseInsOrders.setCompanyId(insOrders.getCompanyId());