Browse Source

解决批量修改的时候,费用计算错误的问题

lipf 3 months ago
parent
commit
b2c4d40ce0

+ 58 - 40
commons/src/main/java/com/jzg/commons/entity/vo/PtlAgreementCostRatioVo.java

@@ -22,66 +22,84 @@ public class PtlAgreementCostRatioVo {
 
     @Schema(description = "交强险手续费比例")
     private BigDecimal jqCommissionRatio;
-
-    @Schema(description = "商业险手续费比例")
-    private BigDecimal syCommissionRatio;
-
-    @Schema(description = "驾意险手续费比例")
-    private BigDecimal jyCommissionRatio;
-
     @Schema(description = "交强险跟单费比例")
     private BigDecimal jqFollowRatio;
-
-    @Schema(description = "商业险跟单费比例")
-    private BigDecimal syFollowRatio;
-
-    @Schema(description = "驾意险跟单费比例")
-    private BigDecimal jyFollowRatio;
-
     @Schema(description = "交强险加投费比例")
     private BigDecimal jqAdditionalRatio;
-
-    @Schema(description = "商业险加投费比例")
-    private BigDecimal syAdditionalRatio;
-
-    @Schema(description = "驾意险加投费比例")
-    private BigDecimal jyAdditionalRatio;
-
     @Schema(description = "交强险出口比例")
     private BigDecimal jqExportRatio;
-
-    @Schema(description = "商业险出口比例")
-    private BigDecimal syExportRatio;
-
-    @Schema(description = "驾意险出口比例")
-    private BigDecimal jyExportRatio;
-
     @Schema(description = "交强险入口比例")
     private BigDecimal jqInletRatio;
+    @Schema(description = "交强险留点比例")
+    private BigDecimal jqKeepPointRatio;
+    @Schema(description = "交强险出口留点比例")
+    private BigDecimal jqExportKeepPointRatio;
 
+    @Schema(description = "商业险手续费比例")
+    private BigDecimal syCommissionRatio;
+    @Schema(description = "商业险跟单费比例")
+    private BigDecimal syFollowRatio;
+    @Schema(description = "商业险加投费比例")
+    private BigDecimal syAdditionalRatio;
+    @Schema(description = "商业险出口比例")
+    private BigDecimal syExportRatio;
     @Schema(description = "商业险入口比例")
     private BigDecimal syInletRatio;
+    @Schema(description = "商业险留点比例")
+    private BigDecimal syKeepPointRatio;
+    @Schema(description = "商业险出口留点比例")
+    private BigDecimal syExportKeepPointRatio;
 
+    @Schema(description = "驾意险手续费比例")
+    private BigDecimal jyCommissionRatio;
+    @Schema(description = "驾意险跟单费比例")
+    private BigDecimal jyFollowRatio;
+    @Schema(description = "驾意险加投费比例")
+    private BigDecimal jyAdditionalRatio;
+    @Schema(description = "驾意险出口比例")
+    private BigDecimal jyExportRatio;
     @Schema(description = "驾意险入口比例")
     private BigDecimal jyInletRatio;
+    @Schema(description = "非车险留点比例")
+    private BigDecimal jyKeepPointRatio;
+    @Schema(description = "驾意险出口留点比例")
+    private BigDecimal jyExportKeepPointRatio;
 
-    @Schema(description = "交强险留点比例")
-    private BigDecimal jqKeepPointRatio;
 
-    @Schema(description = "商业险留点比例")
-    private BigDecimal syKeepPointRatio;
+    // 建议放在类内部作为私有方法,方便复用
+    private BigDecimal multiplyBy100(BigDecimal value) {
+        return value != null ? value.multiply(new BigDecimal("100")) : BigDecimal.ZERO;
+    }
 
-    @Schema(description = "非车险留点比例")
-    private BigDecimal jyKeepPointRatio;
+    public void multiply100() {
+        // 交强险比例
+        this.jqCommissionRatio = multiplyBy100(this.jqCommissionRatio);
+        this.jqFollowRatio = multiplyBy100(this.jqFollowRatio);
+        this.jqAdditionalRatio = multiplyBy100(this.jqAdditionalRatio);
+        this.jqExportRatio = multiplyBy100(this.jqExportRatio);
+        this.jqInletRatio = multiplyBy100(this.jqInletRatio);
+        this.jqKeepPointRatio = multiplyBy100(this.jqKeepPointRatio);
+        this.jqExportKeepPointRatio = multiplyBy100(this.jqExportKeepPointRatio);
 
-    @Schema(description = "交强险出口留点比例")
-    private BigDecimal jqExportKeepPointRatio;
+        // 商业险比例
+        this.syCommissionRatio = multiplyBy100(this.syCommissionRatio);
+        this.syFollowRatio = multiplyBy100(this.syFollowRatio);
+        this.syAdditionalRatio = multiplyBy100(this.syAdditionalRatio);
+        this.syExportRatio = multiplyBy100(this.syExportRatio);
+        this.syInletRatio = multiplyBy100(this.syInletRatio);
+        this.syKeepPointRatio = multiplyBy100(this.syKeepPointRatio);
+        this.syExportKeepPointRatio = multiplyBy100(this.syExportKeepPointRatio);
 
-    @Schema(description = "商业险出口留点比例")
-    private BigDecimal syExportKeepPointRatio;
+        // 驾意险比例
+        this.jyCommissionRatio = multiplyBy100(this.jyCommissionRatio);
+        this.jyFollowRatio = multiplyBy100(this.jyFollowRatio);
+        this.jyAdditionalRatio = multiplyBy100(this.jyAdditionalRatio);
+        this.jyExportRatio = multiplyBy100(this.jyExportRatio);
+        this.jyInletRatio = multiplyBy100(this.jyInletRatio);
+        this.jyKeepPointRatio = multiplyBy100(this.jyKeepPointRatio);
+        this.jyExportKeepPointRatio = multiplyBy100(this.jyExportKeepPointRatio);
+    }
 
-    @Schema(description = "驾意险出口留点比例")
-    private BigDecimal jyExportKeepPointRatio;
     public PtlAgreementCostRatioVo(List<PtlAgreementCostTypeVo> ptlAgreementCostTypeList, PtlAgreement ptlAgreement) {
         ptlAgreementCostTypeList.forEach(ptlAgreementCostType -> {
             switch (ptlAgreementCostType.getCostType()) {

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

@@ -31,7 +31,6 @@ import org.springframework.stereotype.Service;
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -78,8 +77,14 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
     }
 
 
+    /**
+     *
+     * @author lipf
+     * @date 2026/6/24 9:46
+     */
     @Override
     public InsFeeOrders calcCosts(PtlAgreementCostRatioVo ptlAgreementCostRatioVo) {
+        log.info("调整费用。不同费用的比例信息是:[{}]", JSONUtil.toJsonStr(ptlAgreementCostRatioVo));
         InsFeeOrders insFeeOrders = getInsFeeOrders(ptlAgreementCostRatioVo);
         log.info("调整后费用.参数[{}]真实结果是[{}]", JSONUtil.toJsonStr(ptlAgreementCostRatioVo), JSONUtil.toJsonStr(insFeeOrders));
         // 保存比例
@@ -209,11 +214,11 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             insFeeOrders.setJqPayablePremium(export);
 
             // add by lipf, 2026年6月23日10:42:36  更新具体某个险种的出口费用的时候,同步更新总的出口费用
-            List<BigDecimal> exportAmount = new ArrayList<>();
-            exportAmount.add(insFeeOrders.getJqExportPremium());
-            exportAmount.add(insFeeOrders.getSyExportPremium());
-            exportAmount.add(insFeeOrders.getJyExportPremium());
-            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
+//            List<BigDecimal> exportAmount = new ArrayList<>();
+//            exportAmount.add(inlet);
+//            exportAmount.add(insFeeOrders.getSyExportPremium());
+//            exportAmount.add(insFeeOrders.getJyExportPremium());
+//            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
         } else if ("sy".equals(type)) {
             insFeeOrders.setSyCommissionPremium(commission);
             insFeeOrders.setSyReceivablePremium(inlet);
@@ -225,11 +230,11 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             insFeeOrders.setSyPayablePremium(export);
 
             // add by lipf, 2026年6月23日10:42:36  更新具体某个险种的出口费用的时候,同步更新总的出口费用
-            List<BigDecimal> exportAmount = new ArrayList<>();
-            exportAmount.add(insFeeOrders.getJqExportPremium());
-            exportAmount.add(insFeeOrders.getSyExportPremium());
-            exportAmount.add(insFeeOrders.getJyExportPremium());
-            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
+//            List<BigDecimal> exportAmount = new ArrayList<>();
+//            exportAmount.add(insFeeOrders.getJqExportPremium());
+//            exportAmount.add(insFeeOrders.getSyExportPremium());
+//            exportAmount.add(insFeeOrders.getJyExportPremium());
+//            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
         } else if ("jy".equals(type)) {
             insFeeOrders.setJyCommissionPremium(commission);
             insFeeOrders.setJyReceivablePremium(inlet);
@@ -241,11 +246,11 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             insFeeOrders.setJyPayablePremium(export);
 
             // add by lipf, 2026年6月23日10:42:36  更新具体某个险种的出口费用的时候,同步更新总的出口费用
-            List<BigDecimal> exportAmount = new ArrayList<>();
-            exportAmount.add(insFeeOrders.getJqExportPremium());
-            exportAmount.add(insFeeOrders.getSyExportPremium());
-            exportAmount.add(insFeeOrders.getJyExportPremium());
-            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
+//            List<BigDecimal> exportAmount = new ArrayList<>();
+//            exportAmount.add(insFeeOrders.getJqExportPremium());
+//            exportAmount.add(insFeeOrders.getSyExportPremium());
+//            exportAmount.add(insFeeOrders.getJyExportPremium());
+//            insFeeOrders.setTotalPayablePremium(BigDecimalUtil.add(exportAmount));
         }
     }
 

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

@@ -61,7 +61,6 @@ import io.seata.spring.annotation.GlobalTransactional;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
-import org.apache.commons.beanutils.BeanUtils;
 import org.apache.http.util.TextUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -73,7 +72,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
-import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.net.URL;
 import java.time.Instant;
@@ -1695,6 +1693,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             if(this.rationIsNotNull(batchModifyVo)){
                 log.info("费用比例不为空,同步调整费用。batchModifyVo=[{}]", JSONUtil.toJsonStr(batchModifyVo));
                 PtlAgreementCostRatioVo param = this.calRatio(insFeeOrders,batchModifyVo);
+                param.multiply100();
                 insFeeAuditService.saveCostInfo(param);
             }
             log.info("车险订单[{}]对应的订单明细是[{}]", orderNo, JSONUtil.toJsonStr(oldInsOrders));
@@ -1734,9 +1733,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
      */
     private PtlAgreementCostRatioVo calRatio(InsFeeOrders insFeeOrders, BatchModifyVo batchModifyVo) {
         log.info("batchModifyVo.转换百分比之前的数据=【{}】", JSONUtil.toJsonStr(batchModifyVo));
-
         batchModifyVo.divide100();
-
         PtlAgreementCostRatioVo vo = new PtlAgreementCostRatioVo();
         vo.setOrderNo(insFeeOrders.getOrderNo());
 

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

@@ -2319,6 +2319,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         // 一次性查询所有需要修改的记录
         List<InsPlyIncome> incomeList = baseMapper.selectBatchIds(incomeIds);
         if (CollUtil.isEmpty(incomeList)) {
+            log.info("未找到需要修改的应收订单. incomeList=[{}]", JSONUtil.toJsonStr(incomeList));
             throw new ServiceException("未找到需要修改的应收订单");
         }