Преглед изворни кода

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

jiakai пре 1 месец
родитељ
комит
de9d143332

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsFeeCalculateRequest.java

@@ -61,6 +61,16 @@ public class InsFeeCalculateRequest {
     @Schema(description = "驾意险出口比例(百分比)", example = "0")
     private BigDecimal jyExport;
 
+    // ── 留点比例(百分比)──
+    @Schema(description = "交强险留点比例(百分比)", example = "0")
+    private BigDecimal jqKeepPointRatio;
+
+    @Schema(description = "商业险留点比例(百分比)", example = "0")
+    private BigDecimal syKeepPointRatio;
+
+    @Schema(description = "驾意险留点比例(百分比)", example = "0")
+    private BigDecimal jyKeepPointRatio;
+
     // ── 出口留点比例(百分比)──
     @Schema(description = "交强险出口留点比例(百分比)", example = "0")
     private BigDecimal jqExportKeepPointRatio;

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersAdd.java

@@ -8,6 +8,7 @@ import com.jzg.commons.entity.orders.po.InsOrdersExternalPolicy;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.vo.InsFeeOrdersVo;
 import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
+import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -28,6 +29,9 @@ public class InsOrdersAdd extends QuoteVo {
     @Schema(description = "订单其他信息")
     private InsOrdersOtherInfoVo insOrdersOtherInfo;
 
+    @Schema(description = "费用比例信息")
+    private PtlAgreementCostRatioVo costRatio;
+
     @Schema(description = "费用信息")
     private InsOrdersExternalFee externalFee;
 

+ 5 - 1
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersEnd.java

@@ -4,9 +4,10 @@ import com.jzg.commons.entity.dto.InsTaskImagesAdd;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersExternalFee;
 import com.jzg.commons.entity.orders.po.InsOrdersExternalPolicy;
+import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.vo.InsFeeOrdersVo;
 import com.jzg.commons.entity.vo.InsOrdersOtherInfoVo;
-import com.jzg.commons.entity.quote.vo.QuoteVo;
+import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -29,6 +30,9 @@ public class InsOrdersEnd extends QuoteVo {
     @Schema(description = "订单影像资料")
     private InsTaskImagesAdd imagesAdds;
 
+    @Schema(description = "费用比例信息")
+    private PtlAgreementCostRatioVo costRatio;
+
     @Schema(description = "订单费用")
     private InsFeeOrdersVo feeOrdersVo;
 

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

@@ -147,6 +147,18 @@ public class InsFeeOrdersVo {
     @Schema(description = "驾意险留点费用")
     private String jyKeepPointPremium;
 
+    /**
+     * 新增出口留点比例
+     */
+    @Schema(description = "交强险出口留点比例")
+    private BigDecimal jqExportKeepPointRatio;
+
+    @Schema(description = "商业险出口留点比例")
+    private BigDecimal syExportKeepPointRatio;
+
+    @Schema(description = "驾意险出口留点比例")
+    private BigDecimal jyExportKeepPointRatio;
+
     @Schema(description = "交强出口费用")
     private String jqExportPremium;
 
@@ -217,6 +229,25 @@ public class InsFeeOrdersVo {
     @Schema(description = "出入口比例是否已手动修改 0-未修改 1-已修改")
     private Integer ratioModified;
 
+    @Schema(description = "交强险加投费费比例")
+    private BigDecimal jqAdditionalRatio;
+
+    @Schema(description = "商业险加投费费比例")
+    private BigDecimal syAdditionalRatio;
+
+    @Schema(description = "驾意险加投费费比例")
+    private BigDecimal jyAdditionalRatio;
+
+    @Schema(description = "交强险留点比例")
+    private BigDecimal jqKeepPointRatio;
+
+    @Schema(description = "商业险留点比例")
+    private BigDecimal syKeepPointRatio;
+
+    @Schema(description = "驾意险留点比例")
+    private BigDecimal jyKeepPointRatio;
+
+
     /**
      * 出口费用是否需要扣减1%
      */

+ 3 - 0
tenant/costsorrule/src/main/java/com/jzg/costsorrule/controller/RuleController.java

@@ -106,6 +106,9 @@ public class RuleController extends BaseController {
         StringBuilder logs = new StringBuilder();
         for (Map.Entry<String, List<RuleAttrLinkVo>> entry : converMaps.entrySet()) {
             String key = entry.getKey();
+            if (key.contains("9617")) {
+                System.out.println(11);
+            }
             List<RuleAttrLinkVo> vos = entry.getValue();
             if(ruleService.verificationRule(attrMap,vos,rulesAttrs,logs)){
                 String[] keys = key.split("-");

+ 6 - 1
tenant/costsorrule/src/main/java/com/jzg/costsorrule/service/impl/RuleServiceImpl.java

@@ -117,7 +117,7 @@ public class RuleServiceImpl implements RuleService {
         } else if (rulesAttr.getAttrType().equals(AttrTypeConstant.SELECT.getCode())) {
             //截取车牌
             if (linkVo.getAttrCode().equals("LicenseNo")) {
-                value = value.substring(0, 2);
+                value = value.substring(0, 4);
             }
             return selectEqual(linkVo, value);
         } else if (rulesAttr.getAttrType().equals(AttrTypeConstant.RADIO.getCode())) {
@@ -228,6 +228,11 @@ public class RuleServiceImpl implements RuleService {
 //        }
         //判断如果value 是 boolean值 则将min进行转换为bool
         boolean minValue = Boolean.valueOf(linkVo.getMin());
+        if ("NewEnergyMark".equals(linkVo.getAttrCode())) {
+            if (linkVo.getMin().equals("5") || linkVo.getMin().equals("6")) {
+                minValue = linkVo.getMin().equals("5") ? false : true;
+            }
+        }
         boolean valueBool = Boolean.valueOf(value);
         return minValue == valueBool;
     }

+ 7 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java

@@ -268,4 +268,11 @@ public interface OrgClient {
     @GetMapping("/userInfo/querySysUserByMobile")
     public HttpResult<SysUser> querySysUserByMobile(@RequestParam("mobile") String mobile);
 
+    /**
+     * 根据车牌号 转code
+     * @param licenseNo 晋A,晋B
+     * @return 1401,1402
+     */
+    @GetMapping("/plt/areaLicense/getAreaLicenseCode")
+    HttpResult<String> convertLicense2AreaNumber(String licenseNo);
 }

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

@@ -130,6 +130,10 @@ public class QuoteVerificationAspect {
             log.info("过滤的费用列表:{}",JSONObject.toJSONString(agreementProductCosts));
             if (CollUtil.isNotEmpty(agreementProductCosts)) {
                 //遍历费用因子
+                HttpResult<String> convertLicense2AreaNumber = orgClient.convertLicense2AreaNumber(insOrdersCarInfo.getLicenseNo().substring(0, 2));
+                if(convertLicense2AreaNumber.isSuccess()){
+                    insOrdersCarInfo.setLicenseNo(convertLicense2AreaNumber.getData());//车牌转code
+                }
                 String costId = verificationCosts(agreementProductCosts, logs, insOrdersOther, insOrdersCarInfo, insOrdersRisks,
                         insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, insOrders);
                 if (costId != null) {

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

@@ -315,7 +315,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,BigDecimal KeepPointRatio, String type) {
         if (ct == null || premium == null) {
             if ("jq".equals(type)) {
                 o.setJqReceivablePremium(BigDecimal.ZERO);
@@ -340,8 +340,6 @@ 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);
 
         switch (type) {
             case "jq":
@@ -350,8 +348,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 o.setJqCommissionPremium(commission);
                 o.setJqFollowPremium(follow);
                 o.setJqAdditionalPremium(addAmt);
-                o.setJqKeepPointRatio(keepRate);
-                o.setJqKeepPointPremium(keepAmt);
+                o.setJqKeepPointRatio(KeepPointRatio);
+                o.setJqKeepPointPremium(premium.multiply(KeepPointRatio).setScale(5, RoundingMode.HALF_EVEN).divide(new BigDecimal(100), 5, RoundingMode.HALF_EVEN));
                 break;
             case "sy":
                 o.setSyReceivablePremium(receivable);
@@ -359,8 +357,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 o.setSyCommissionPremium(commission);
                 o.setSyFollowPremium(follow);
                 o.setSyAdditionalPremium(addAmt);
-                o.setSyKeepPointRatio(keepRate);
-                o.setSyKeepPointPremium(keepAmt);
+                o.setSyKeepPointRatio(KeepPointRatio);
+                o.setSyKeepPointPremium(premium.multiply(KeepPointRatio).setScale(5, RoundingMode.HALF_EVEN).divide(new BigDecimal(100), 5, RoundingMode.HALF_EVEN));
                 break;
             case "jy":
                 o.setJyReceivablePremium(receivable);
@@ -368,8 +366,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 o.setJyCommissionPremium(commission);
                 o.setJyFollowPremium(follow);
                 o.setJyAdditionalPremium(addAmt);
-                o.setJyKeepPointRatio(keepRate);
-                o.setJyKeepPointPremium(keepAmt);
+                o.setJyKeepPointRatio(KeepPointRatio);
+                o.setJyKeepPointPremium(premium.multiply(KeepPointRatio).setScale(5, RoundingMode.HALF_EVEN).divide(new BigDecimal(100), 5, RoundingMode.HALF_EVEN));
                 break;
         }
     }
@@ -456,7 +454,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersPolicyService.save(policy);
 
             //  保存订单费用
-            updateOrSaveFeeOrder(ordersAdd.getFeeOrdersVo(), quoteNo, ordersAdd.getSystemCode());
+            InsFeeOrdersVo feeOrdersVo = ordersAdd.getFeeOrdersVo();
+            PtlAgreementCostRatioVo costRatio = ordersAdd.getCostRatio();
+            BeanCopyUtil.deepCopy(costRatio, feeOrdersVo.getClass());
+            updateOrSaveFeeOrder(feeOrdersVo, quoteNo, ordersAdd.getSystemCode());
 
             // 保险种类信息
             List<KindInfoVo> kindInfoVo = ordersAdd.getKindInfoVo();
@@ -504,7 +505,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             ordersPolicy.setJyPolicyNo(ordersExternalPolicy.getNoPolicy());
             insOrdersPolicyService.updateByOrderNo(ordersPolicy);
 
-
             // 发送订单状态变更消息
             this.orderStatusMessage(insOrders, insOrdersCarInfo, insOrdersCosts, baseController.getToken(), MessageCodeEnum.TEMPLATE_9);
             if (nullOrders) {
@@ -682,8 +682,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             policy.setOrderNo(quoteNo);
             insOrdersPolicyService.updateById(policy);
 
-
             //更新订单费用
+            InsFeeOrdersVo feeOrdersVo = ordersEnd.getFeeOrdersVo();
+            PtlAgreementCostRatioVo costRatio = ordersEnd.getCostRatio();
+            BeanCopyUtil.deepCopy(costRatio, feeOrdersVo.getClass());
             updateOrSaveFeeOrder(ordersEnd.getFeeOrdersVo(), quoteNo, ordersEnd.getSystemCode());
 
             // 税费信息
@@ -1855,16 +1857,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersVo = selectById(Long.parseLong(ordersNo));
         }
         HttpResult<List<SysArea>> sysAreasResult;
-        try{
+        try {
             sysAreasResult = orgClient.queryAllParent(insOrdersVo.getOwnersInfo().getCountyCode());
-            if(sysAreasResult.getCode() == 200) {
+            if (sysAreasResult.getCode() == 200) {
                 List<SysArea> sysAreas = sysAreasResult.getData();
                 insOrdersVo.getOwnersInfo().setProvince(sysAreas.get(3).getAreaCname());
                 insOrdersVo.getOwnersInfo().setCity(sysAreas.get(2).getAreaCname());
                 insOrdersVo.getOwnersInfo().setCounty(sysAreas.get(1).getAreaCname());
             }
             HttpResult<List<SysArea>> sysPoliCyAreasResult = orgClient.queryAllParent(insOrdersVo.getPolicyHolderInfo().getCountyCode());
-            if(sysPoliCyAreasResult.getCode() == 200) {
+            if (sysPoliCyAreasResult.getCode() == 200) {
                 List<SysArea> sysAreas = sysAreasResult.getData();
                 insOrdersVo.getPolicyHolderInfo().setProvince(sysAreas.get(3).getAreaCname());
                 insOrdersVo.getPolicyHolderInfo().setCity(sysAreas.get(2).getAreaCname());
@@ -1872,19 +1874,17 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             }
 
             HttpResult<List<SysArea>> sysInsuredAreasResult = orgClient.queryAllParent(insOrdersVo.getInsuredPersonInfo().getCountyCode());
-            if(sysInsuredAreasResult.getCode() == 200) {
+            if (sysInsuredAreasResult.getCode() == 200) {
                 List<SysArea> sysAreas = sysAreasResult.getData();
                 insOrdersVo.getInsuredPersonInfo().setProvince(sysAreas.get(3).getAreaCname());
                 insOrdersVo.getInsuredPersonInfo().setCity(sysAreas.get(2).getAreaCname());
                 insOrdersVo.getInsuredPersonInfo().setCounty(sysAreas.get(1).getAreaCname());
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             log.info("处理地址异常");
         }
 
 
-
-
         log.info("根据orderNo=[{}]查询到的订单明细[{}]", ordersNo, JSONUtil.toJsonStr(insOrdersVo));
         AssertionUtils.isFail(Objects.isNull(insOrdersVo), "订单不存在");
         QuoteEchoVo resultVo = new QuoteEchoVo(insOrdersVo);
@@ -2126,9 +2126,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         BigDecimal syExport = this.calExportByIsRecordByLeader(request.isIsrecordByLeader(), nvl(request.getSyExport()));
         BigDecimal jyExport = this.calExportByIsRecordByLeader(request.isIsrecordByLeader(), nvl(request.getJyExport()));
 
-        BigDecimal jqEKP = nvl(request.getJqExportKeepPointRatio());
-        BigDecimal syEKP = nvl(request.getSyExportKeepPointRatio());
-        BigDecimal jyEKP = nvl(request.getJyExportKeepPointRatio());
+        BigDecimal jqEKP = nvl(request.getJqKeepPointRatio());
+        BigDecimal syEKP = nvl(request.getSyKeepPointRatio());
+        BigDecimal jyEKP = nvl(request.getJyKeepPointRatio());
 
         // 1. 查询协议(同时获取入口手续费比例 + 税率因子,一次查询)
         PtlAgreement ptlAgreement = orgClient.getByAgreementId(agreementId);
@@ -2186,9 +2186,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         feeOrders.setJyFollowRatio(jyFollow);
 
         // 6. 各险种费用计算(应收/应付/手续费/跟单费/加投费/留点)
-        calcInsuranceType(feeOrders, jqPremium, jqCostType, jqRatio, jqFollow, taxFactor, "jq");
-        calcInsuranceType(feeOrders, syPremium, syCostType, syRatio, syFollow, taxFactor, "sy");
-        calcInsuranceType(feeOrders, jyPremium, jyCostType, jyRatio, jyFollow, taxFactor, "jy");
+        calcInsuranceType(feeOrders, jqPremium, jqCostType, jqRatio, jqFollow, taxFactor,request.getJqKeepPointRatio(), "jq");
+        calcInsuranceType(feeOrders, syPremium, syCostType, syRatio, syFollow, taxFactor,request.getSyKeepPointRatio(),"sy");
+        calcInsuranceType(feeOrders, jyPremium, jyCostType, jyRatio, jyFollow, taxFactor,request.getJyKeepPointRatio(), "jy");
 
         // 7. 计算分销费用(返回分销精度差值)—— 须在 saveRatio 之前,因为 export 需要减分销比例
         BigDecimal distributionDiff = calcDistributionFee(sumPremium, feeOrders, request.getMobile());
@@ -2207,11 +2207,11 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         feeOrders.setJqAdditionalRatio(div100(jqAddThrow));
         feeOrders.setSyAdditionalRatio(div100(syAddThrow));
         feeOrders.setJyAdditionalRatio(div100(jyAddThrow));
-        feeOrders.setJqKeepPointRatio(nvl(feeOrders.getJqKeepPointRatio()));
-        feeOrders.setSyKeepPointRatio(nvl(feeOrders.getSyKeepPointRatio()));
-        feeOrders.setJyKeepPointRatio(nvl(feeOrders.getJyKeepPointRatio()));
+        feeOrders.setJqKeepPointRatio(div100(nvl(feeOrders.getJqKeepPointRatio())));
+        feeOrders.setSyKeepPointRatio(div100(nvl(feeOrders.getSyKeepPointRatio())));
+        feeOrders.setJyKeepPointRatio(div100(nvl(feeOrders.getJyKeepPointRatio())));
 
-        // 出口比例 = 入口比例 +加投比例 - 分销比例 -出口留点比例
+        // 出口比例 = 入口比例 +加投比例 - 分销比例 -留点比例
         BigDecimal firstDist = nvl(feeOrders.getFirstDistributionRatio());
         BigDecimal secondDist = nvl(feeOrders.getSecondDistributionRatio());
         BigDecimal thirdDist = nvl(feeOrders.getThirdDistributionRatio());
@@ -2219,9 +2219,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         feeOrders.setSyExportRatio(syInlet.compareTo(BigDecimal.ZERO) > 0 ? div100(syInlet).add(div100(request.getSyAddThrow())).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist)).subtract(div100(syEKP)) : BigDecimal.ZERO);
         feeOrders.setJyExportRatio(jyInlet.compareTo(BigDecimal.ZERO) > 0 ? div100(jyInlet).add(div100(request.getJyAddThrow())).subtract(div100(firstDist)).subtract(div100(secondDist)).subtract(div100(thirdDist)).subtract(div100(jyEKP)) : BigDecimal.ZERO);
 
-        feeOrders.setJqExportKeepPointRatio(div100(jqEKP));
-        feeOrders.setSyExportKeepPointRatio(div100(syEKP));
-        feeOrders.setJyExportKeepPointRatio(div100(jyEKP));
+        feeOrders.setJqExportKeepPointRatio(div100(request.getJqExportKeepPointRatio()!=null? request.getJqExportKeepPointRatio() : new BigDecimal(0)));
+        feeOrders.setSyExportKeepPointRatio(div100(request.getSyExportKeepPointRatio()!=null? request.getSyExportKeepPointRatio() : new BigDecimal(0)));
+        feeOrders.setJyExportKeepPointRatio(div100(request.getJyExportKeepPointRatio()!=null? request.getJyExportKeepPointRatio() : new BigDecimal(0)));
 
         // 7.2 保费为0 → 出口相关字段归零(对齐旧 saveRatio)
         if (jqPremium.compareTo(BigDecimal.ZERO) == 0) {
@@ -2260,13 +2260,13 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         BigDecimal jyEOrigin = feeOrders.getJyExportRatio().multiply(jyPremium);
         BigDecimal jyE = jyEOrigin.setScale(2, RoundingMode.DOWN);
         feeOrders.setJyExportPremium(jyE);
-
-        BigDecimal jqK = feeOrders.getJqExportKeepPointRatio().multiply(jqPremium);
-        feeOrders.setJqExportKeepPointPremium(jqK);
-        BigDecimal syK = feeOrders.getSyExportKeepPointRatio().multiply(syPremium);
-        feeOrders.setSyExportKeepPointPremium(syK);
-        BigDecimal jyK = feeOrders.getJyExportKeepPointRatio().multiply(jyPremium);
-        feeOrders.setJyExportKeepPointPremium(jyK);
+        //  出口留点费用
+        BigDecimal jqEK = feeOrders.getJqExportKeepPointRatio().multiply(jqPremium);
+        feeOrders.setJqExportKeepPointPremium(jqEK);
+        BigDecimal syEK = feeOrders.getSyExportKeepPointRatio().multiply(syPremium);
+        feeOrders.setSyExportKeepPointPremium(syEK);
+        BigDecimal jyEK = feeOrders.getJyExportKeepPointRatio().multiply(jyPremium);
+        feeOrders.setJyExportKeepPointPremium(jyEK);
 
         // 截断差值 = 出口精度损失 + 分销差值
         List<BigDecimal> diffs = new ArrayList<>();
@@ -2276,9 +2276,9 @@ 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(jyEK).subtract(syEK).subtract(jyEK).setScale(2, RoundingMode.HALF_UP));
         feeOrders.setTotalExportPremium(jqE.add(syE).add(jyE));
-        feeOrders.setTotalExportKeepPointPremium(jqK.add(syK).add(jyK));
+        feeOrders.setTotalExportKeepPointPremium(jyEK.add(syEK).add(jyEK));
 
         // 10. 构建比例VO
         PtlAgreementCostRatioVo costRatio = new PtlAgreementCostRatioVo(feeOrders);

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

@@ -28,5 +28,11 @@ public class PtlAreaLicenseController {
         return HttpResult.ok(ptlAreaLicenses);
     }
 
+    @GetMapping("/getAreaLicenseCode")
+    HttpResult<String> convertLicense2AreaNumber(@RequestParam(required = false) String licenseNo) {
+        String licenseCode = ptlAreaLicenseService.convertLicense2AreaNumber(licenseNo);
+        return HttpResult.ok(licenseCode);
+    }
+
 
 }

+ 19 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -654,6 +654,25 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         } catch (Exception e) {
             log.warn("批量查询协议调度异常", e);
         }
+
+        // 车牌 LicenseNo 处理成code
+        dispatchRuleVos.getDispatchAttrVos().forEach(dispatchAttrVo -> {
+            log.info("[调度] dispatchId={}, companyId={}", dispatchAttrVo.getDispatchId(), dispatchAttrVo.getCompanyId());
+            List<ValidateDispatchRuleVo.Section> sections = dispatchAttrVo.getSections();
+            if (sections != null) {
+                sections.forEach(section -> {
+                    String sec = section.getSection();
+                    List<PtlAgreementDispatchRulesAttrLink> attrLinks = section.getAttrLinks();
+                    if (attrLinks != null) {
+                        attrLinks.forEach(attrLink -> {
+                            if ("LicenseNo".equals(attrLink.getAttrCode()) && attrLink.getMin().substring(0, 1).matches("[\\u4e00-\\u9fa5]")) {
+                                attrLink.setMin(ptlAreaLicenseService.convertLicense2AreaNumber(attrLink.getMin()));
+                            }
+                        });
+                    }
+                });
+            }
+        });
 //
         // 3. 校验调度数据
         HttpResult httpResult = costsRuleClient.validateDispatchRule(dispatchRuleVos);