Răsfoiți Sursa

解决留点比例计算错误的bug

解决平台协议,对接人维度统计页面,为空的bug

移除无用的代码
lipf 3 luni în urmă
părinte
comite
9917d20b00

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

@@ -61,15 +61,6 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
     private InsFeeOrdersMapper insFeeOrdersMapper;
 
 
-    private String getSystemCode() {
-        //如果是APP登录的话 则传递SystemCode的头部字段
-        if (baseController.getUserSystemCode().equals("APP")) {
-            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-            return request.getHeader("system_code");
-        }
-        return baseController.getUserSystemCode();
-    }
-
     /**
      * 订单审核时调整费用
      *
@@ -162,7 +153,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
             Integer withTax, BigDecimal taxRate, int scale) {
 
         // 计算基数
-        BigDecimal base = BigDecimal.ZERO;
+        BigDecimal base;
         if (withTax == 0) {
             // 不含税:保费 / 1.06
             base = premium.divide(taxRate, scale, RoundingMode.HALF_EVEN);
@@ -172,8 +163,8 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         }
 
         // ===================== 按比例计算各项费用 =====================
-        BigDecimal commission = base.multiply(commissionRatio).setScale(scale, RoundingMode.HALF_EVEN);
         BigDecimal inlet = base.multiply(inletRatio).setScale(scale, RoundingMode.HALF_EVEN);
+        BigDecimal commission = base.multiply(commissionRatio).setScale(scale, RoundingMode.HALF_EVEN);
         BigDecimal follow = base.multiply(followRatio).setScale(scale, RoundingMode.HALF_EVEN);
 
         // 加投直接乘
@@ -183,7 +174,8 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         BigDecimal exportKeepPoint = premium.multiply(exportKeepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
         // 留点比例直接乘, modify by lipf ,留点比例在infFeeOrder中计算得到。这里直接使用 2026年6月16日17:32:09, 为了保持金额一致,留点比例不适用百分比乘积,而是使用金额相减
         // BigDecimal keepPoint = premium.multiply(keepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
-        BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(commission,addThrow),export);
+        BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),export);
+        log.info("计算留点:inlet=[{}],addThrow=[{}].export=[{}]", inlet, addThrow, export);
 
         // 赋值到实体(自动匹配 jq / sy / jy)
         if ("jq".equals(type)) {

+ 8 - 7
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -1634,7 +1634,14 @@
         FROM
         ins_ply_income ipi
         LEFT JOIN ins_ply_income_invoice_link ipil ON ipi.id = ipil.income_id AND ipil.is_delete = 0
-        LEFT JOIN ins_ply_income_invoice ipii ON ipil.invoice_id = ipii.id AND ipii.is_delete = 0
+        LEFT JOIN ins_ply_income_invoice ipii
+        ON ipil.invoice_id = ipii.id AND ipii.is_delete = 0
+        <if test="settlementReportQueryVo.invoiceTypes != null and settlementReportQueryVo.invoiceTypes.size() > 0" >
+            and ipii.invoice_type in
+            <foreach collection="settlementReportQueryVo.invoiceTypes" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </if>
         <where>
             ipi.is_delete = 0
             AND ipi.agreement_type = '1'
@@ -1645,12 +1652,6 @@
             <if test="settlementReportQueryVo.receiver != null and settlementReportQueryVo.receiver != ''">
                 AND ipi.contact_person = #{settlementReportQueryVo.receiver}
             </if>
-            <if test="settlementReportQueryVo.invoiceTypes != null and settlementReportQueryVo.invoiceTypes.size() > 0" >
-                and ipii.invoice_type in
-                <foreach collection="settlementReportQueryVo.invoiceTypes" item="id" open="(" separator="," close=")">
-                    #{id}
-                </foreach>
-            </if>
             <if test="settlementReportQueryVo.startTime != null and settlementReportQueryVo.startTime != ''">
                 AND ipi.signing_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
                 AND (ipii.invoice_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}