فهرست منبع

Merge remote-tracking branch 'origin/master'

wanghao 3 ماه پیش
والد
کامیت
e8738c81eb

+ 33 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/BatchModifyVo.java

@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -56,4 +57,36 @@ public class BatchModifyVo {
     @Schema(description = "修改标识 1-手续费 2-跟单费 3-驾意险 4-所有都改")
     private String updateFlag;
 
+    /**
+     * 所有的比例都转换为百分比,除以100.
+     */
+    public void divide100() {
+
+        // 定义除数 100,保留两位小数即可,后续计算会根据业务需要自行处理精度
+        BigDecimal divisor = new BigDecimal("100");
+        // 交强手续费比例
+        if (this.jqSuperviseCostsProportion != null) {
+            this.jqSuperviseCostsProportion = this.jqSuperviseCostsProportion.divide(divisor,5, RoundingMode.HALF_EVEN);
+        }
+        // 商业手续费比例
+        if (this.sySuperviseCostsProportion != null) {
+            this.sySuperviseCostsProportion = this.sySuperviseCostsProportion.divide(divisor, 5,RoundingMode.HALF_EVEN);
+        }
+        // 驾意手续费比例
+        if (this.jySuperviseCostsProportion != null) {
+            this.jySuperviseCostsProportion = this.jySuperviseCostsProportion.divide(divisor, 5,RoundingMode.HALF_EVEN);
+        }
+        // 交强跟单费比例
+        if (this.jqOtherCostsProportion != null) {
+            this.jqOtherCostsProportion = this.jqOtherCostsProportion.divide(divisor, 5, RoundingMode.HALF_EVEN);
+        }
+        // 商业跟单费比例
+        if (this.syOtherCostsProportion != null) {
+            this.syOtherCostsProportion = this.syOtherCostsProportion.divide(divisor, 5, RoundingMode.HALF_EVEN);
+        }
+        // 驾意跟单费比例
+        if (this.jyOtherCostsProportion != null) {
+            this.jyOtherCostsProportion = this.jyOtherCostsProportion.divide(divisor, 5,RoundingMode.HALF_EVEN);
+        }
+    }
 }

+ 2 - 2
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/build/GuoRenCrawlerQuoteResultsVoBuild.java

@@ -60,8 +60,8 @@ public final class GuoRenCrawlerQuoteResultsVoBuild {
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
 
 
-        quoteVo.getBiRiskInfoVo().setStartDate(calculationPremium.getCi().getPrptitemkindList().get(0).getStartDate() + " 00:00:00");
-        quoteVo.getBiRiskInfoVo().setEndDate(calculationPremium.getCi().getPrptitemkindList().get(0).getEndDate() + " 00:00:00");
+        quoteVo.getCiRiskInfoVo().setStartDate(calculationPremium.getCi().getPrptitemkindList().get(0).getStartDate() + " 00:00:00");
+        quoteVo.getCiRiskInfoVo().setEndDate(calculationPremium.getCi().getPrptitemkindList().get(0).getEndDate() + " 00:00:00");
         quoteResultsVo.setCiRiskInfoVo(quoteVo.getCiRiskInfoVo());
 
         if (calculationPremium.getBi().getPrptitemkindList() != null) {

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

@@ -243,6 +243,21 @@ public class QuoteVerificationAspect {
         PtlAgreementCostTypeVo syCostType = getCostTypeByTypeName(costTypeList, "商业险");
         PtlAgreementCostTypeVo jyCostType = getCostTypeByTypeName(costTypeList, "驾意险");
 
+
+        // add by lipf, 2026年6月23日18:32:24 按照财务和田智沟通后的结果,当入口手续费比例大于入口比例的时候,强制设置入口手续费比例为入口比例。
+        BigDecimal jqInlet = BigDecimalUtil.divide(jqCostType.getInlet(), new BigDecimal(100));
+        if(BigDecimalUtil.subtract(jqEntranceFeeRatio,jqInlet).compareTo(BigDecimal.ZERO) >0){
+            jqEntranceFeeRatio = jqInlet;
+        }
+        BigDecimal syInlet = BigDecimalUtil.divide(syCostType.getInlet(), new BigDecimal(100));
+        if(BigDecimalUtil.subtract(syEntranceFeeRatio,syInlet).compareTo(BigDecimal.ZERO) >0){
+            syEntranceFeeRatio = syInlet;
+        }
+        BigDecimal jyInlet = BigDecimalUtil.divide(jqCostType.getInlet(), new BigDecimal(100));
+        if(BigDecimalUtil.subtract(jyEntranceFeeRatio,jyInlet).compareTo(BigDecimal.ZERO) >0){
+            jyEntranceFeeRatio = jyInlet;
+        }
+
         // 4. 计算跟单费比例(入口比例 - 手续费比例)
         BigDecimal jqFollowRatio = calculateFollowRatio(jqCostType, jqEntranceFeeRatio);
         BigDecimal syFollowRatio = calculateFollowRatio(syCostType, syEntranceFeeRatio);

+ 0 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeAuditController.java

@@ -23,7 +23,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
-import java.util.Objects;
 
 @Tag(name="订单审核接口")
 @RestController

+ 6 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java

@@ -823,12 +823,12 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         String systemCode = baseController.getSystemCode();
         String userName = baseController.getUserName();
         log.info("保存调整后的费用:systemCode=[{}], userName=[{}],param=[{}]", systemCode, userName, JSONUtil.toJsonStr(param));
-        // add by lipf, 2026年6月22日10:15:51 已经审核通过的订单不能在让调整费用,否则会造成费用不一致。 会影响很多地方
-        String orderNo = param.getOrderNo();
-        HttpResult<String> validateRes = this.validateOrderCheck(orderNo);
-        if(validateRes.isFail()){
-            return validateRes;
-        }
+        // add by lipf, 2026年6月22日10:15:51 已经审核通过的订单不能在让调整费用,否则会造成费用不一致。 会影响很多地方. 实际业务场景存在审核通过后,调整费用的情况
+//        String orderNo = param.getOrderNo();
+//        HttpResult<String> validateRes = this.validateOrderCheck(orderNo);
+//        if(validateRes.isFail()){
+//            return validateRes;
+//        }
         try {
             feeOrdersService.calcCosts(param);
         } catch (ReflectiveOperationException e) {

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

@@ -99,6 +99,28 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         // 获取费用信息
         InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectById(insOrders.getId());
 
+        // add by lipf, 2026年6月23日18:32:24 按照财务和田智沟通后的结果,当入口手续费比例大于入口比例的时候,强制设置入口手续费比例为入口比例。
+        BigDecimal jqInletRatio = insFeeOrders.getJqInletRatio();
+        BigDecimal syInletRatio = insFeeOrders.getSyInletRatio();
+        BigDecimal jyInletRatio = insFeeOrders.getJyInletRatio();
+
+        BigDecimal jqCommissionRatio = insFeeOrders.getJqCommissionRatio();
+        BigDecimal syCommissionRatio = insFeeOrders.getSyCommissionRatio();
+        BigDecimal jyCommissionRatio = insFeeOrders.getJyCommissionRatio();
+
+        if(BigDecimalUtil.subtract(jqCommissionRatio,jqInletRatio).compareTo(BigDecimal.ZERO)>0){
+            insFeeOrders.setJqCommissionRatio(jqInletRatio);
+            insFeeOrders.setJqFollowRatio(BigDecimal.ZERO);
+        }
+        if(BigDecimalUtil.subtract(syCommissionRatio,syInletRatio).compareTo(BigDecimal.ZERO)>0){
+            insFeeOrders.setSyCommissionRatio(syInletRatio);
+            insFeeOrders.setSyFollowRatio(BigDecimal.ZERO);
+        }
+        if(BigDecimalUtil.subtract(jyCommissionRatio,jyInletRatio).compareTo(BigDecimal.ZERO)>0){
+            insFeeOrders.setJyCommissionRatio(jyInletRatio);
+            insFeeOrders.setJyFollowRatio(BigDecimal.ZERO);
+        }
+
         // 关键:获取是否含税标识
         Integer withTax = ptlAgreement.getWithTax(); // 0-否 1-是
 

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

@@ -1691,6 +1691,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 log.info("根据订单号[{}]没有找到车险订单信息和订单的费用信息",orderNo);
                 continue;
             }
+            // add by lipf, 进行费用的修改
+            if(this.rationIsNotNull(batchModifyVo)){
+                log.info("费用比例不为空,同步调整费用。batchModifyVo=[{}]", JSONUtil.toJsonStr(batchModifyVo));
+                PtlAgreementCostRatioVo param = this.calRatio(insFeeOrders,batchModifyVo);
+                insFeeAuditService.saveCostInfo(param);
+            }
             log.info("车险订单[{}]对应的订单明细是[{}]", orderNo, JSONUtil.toJsonStr(oldInsOrders));
             if(batchModifyVo.getSigningTime() != null){
                 baseMapper.update(null, new LambdaUpdateWrapper<InsOrders>()
@@ -1716,4 +1722,78 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         log.info(msg);
         return HttpResult.ok(msg);
     }
+
+    /**
+     * 结合原有的费用比例,计算更新后的费用比例
+     *
+     * @param insFeeOrders 订单的费用信息
+     * @param batchModifyVo 批量修改的费用比例
+     *
+     * @author lipf
+     * @date 2026/6/23 16:35
+     */
+    private PtlAgreementCostRatioVo calRatio(InsFeeOrders insFeeOrders, BatchModifyVo batchModifyVo) {
+        log.info("batchModifyVo.转换百分比之前的数据=【{}】", JSONUtil.toJsonStr(batchModifyVo));
+
+        batchModifyVo.divide100();
+
+        PtlAgreementCostRatioVo vo = new PtlAgreementCostRatioVo();
+        vo.setOrderNo(insFeeOrders.getOrderNo());
+
+        // 加投费比例
+        vo.setJqAdditionalRatio(insFeeOrders.getJqAdditionalRatio());
+        vo.setSyAdditionalRatio(insFeeOrders.getSyAdditionalRatio());
+        vo.setJyAdditionalRatio(insFeeOrders.getJyAdditionalRatio());
+
+        // 手续费比例
+        vo.setJqCommissionRatio(batchModifyVo.getJqSuperviseCostsProportion() != null ? batchModifyVo.getJqSuperviseCostsProportion(): insFeeOrders.getJqCommissionRatio());
+        vo.setSyCommissionRatio(batchModifyVo.getSySuperviseCostsProportion() != null ? batchModifyVo.getSySuperviseCostsProportion(): insFeeOrders.getSyCommissionRatio());
+        vo.setJyCommissionRatio(batchModifyVo.getJySuperviseCostsProportion() != null ? batchModifyVo.getJySuperviseCostsProportion(): insFeeOrders.getJyCommissionRatio());
+
+        // 跟单费比例
+        vo.setJqFollowRatio(batchModifyVo.getJqOtherCostsProportion() != null ? batchModifyVo.getJqOtherCostsProportion(): insFeeOrders.getJqFollowRatio());
+        vo.setSyFollowRatio(batchModifyVo.getSyOtherCostsProportion() != null ? batchModifyVo.getSyOtherCostsProportion(): insFeeOrders.getSyFollowRatio());
+        vo.setJyFollowRatio(batchModifyVo.getJyOtherCostsProportion() != null ? batchModifyVo.getJyOtherCostsProportion(): insFeeOrders.getJyFollowRatio());
+
+        // 入口比例
+        vo.setJqInletRatio(BigDecimalUtil.add(vo.getJqCommissionRatio(), vo.getJqFollowRatio()));
+        vo.setSyInletRatio(BigDecimalUtil.add(vo.getSyCommissionRatio(), vo.getSyFollowRatio()));
+        vo.setJyInletRatio(BigDecimalUtil.add(vo.getJyCommissionRatio(), vo.getJyFollowRatio()));
+
+        // 出口比例
+        vo.setJqExportRatio(insFeeOrders.getJqExportRatio());
+        vo.setSyExportRatio(insFeeOrders.getSyExportRatio());
+        vo.setJyExportRatio(insFeeOrders.getJyExportRatio());
+
+        // 留点比例
+        vo.setJqKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(vo.getJqInletRatio(), vo.getJqAdditionalRatio()),vo.getJqExportRatio()));
+        vo.setSyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(vo.getSyInletRatio(), vo.getSyAdditionalRatio()),vo.getSyExportRatio()));
+        vo.setJyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(vo.getJyInletRatio(), vo.getJyAdditionalRatio()),vo.getJyExportRatio()));
+
+        // 出口留点比例
+        vo.setJqExportKeepPointRatio(insFeeOrders.getJqExportKeepPointRatio());
+        vo.setSyExportKeepPointRatio(insFeeOrders.getSyExportKeepPointRatio());
+        vo.setJyExportKeepPointRatio(insFeeOrders.getJyExportKeepPointRatio());
+        log.info("调整前的比例:fee=[{}]", JSONUtil.toJsonStr(insFeeOrders));
+        log.info("调整后的比例信息:vo=[{}]", JSONUtil.toJsonStr(vo));
+        return vo;
+    }
+
+    /**
+     * 存在是否不为空的费用比例
+     *      所有费用比例都为空,返回false, 有任意一个不为空,返回true
+     *
+     * @author lipf
+     * @date 2026/6/23 16:34
+     */
+    private boolean rationIsNotNull(BatchModifyVo vo) {
+        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;
+    }
 }

+ 1 - 1
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/build/TaiShanCrawlerQuoteResultsVoBuild.java

@@ -220,7 +220,7 @@ public class TaiShanCrawlerQuoteResultsVoBuild {
             return null;
         }
         // RenewalEnum 枚举值
-        if (renewalFlag.equals("0")) {
+        if ("0".equals(renewalFlag)) {
             return String.valueOf(RenewalEnum.Renewal.getCode());
         } else {
             return String.valueOf(RenewalEnum.Transfer.getCode());

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

@@ -2392,6 +2392,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 
         // 更新关联订单
         batchModifyVo.setOrderNos(orderNos);
+        log.info("batchModifyVo=[{}]", JSONUtil.toJsonStr(batchModifyVo));
         HttpResult<String> updateOrdersRes = insFeeOrdersClient.updateOrdersBatch(batchModifyVo);
         log.info("更新车险订单的结果:updateOrdersRes=[{}]", JSONUtil.toJsonStr(updateOrdersRes));
         return true;

+ 2 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDistributionSettingServiceImpl.java

@@ -136,6 +136,8 @@ public class SysDistributionSettingServiceImpl extends ServiceImpl<SysDistributi
 
     @Override
     public Page<SysDistributionListVo> distributorList(Page page, SysDistributionListVo sysDistributionListVo) {
+        String systemCode = baseController.getSystemCode();
+        log.info("查询分销员信息:systemCode=[{}],sysDistributionListVo=[{}]",systemCode,JSONUtil.toJsonStr(sysDistributionListVo));
         Page<SysDistributionListVo> pageResult = sysDistributionSettingMapper.distributorList(page,sysDistributionListVo);
         pageResult.getRecords().forEach(item->{
             // 初始化保费