wuhp 2 лет назад
Родитель
Сommit
ad1a8f4627

+ 18 - 28
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -561,6 +561,7 @@ handlingProportion,
                 InsPlyIncome insPlyIncome = new InsPlyIncome();
                 insPlyIncome.setHandlingFeesStatus("1");
                 insPlyIncome.setSettlementTime(LocalDate.now());
+                insPlyIncome.setSettlementUserId(BaseController.getUser().getId());
                 insPlyIncome.setId(id);
                 baseMapper.updateById(insPlyIncome);
             }
@@ -1196,10 +1197,11 @@ handlingProportion,
         InsPlyIncome insPlyIncome = new InsPlyIncome();
         BeanUtils.copyProperties(insPlyIncomeVo, insPlyIncome);
 
+        InsPlyIncome byId = baseMapper.getById(insPlyIncomeVo.getId());
         InsPlyIncomeLog insPlyIncomeLog = new InsPlyIncomeLog();
         insPlyIncomeLog.setIncomeId(insPlyIncome.getId());
         insPlyIncome.setId(null);
-        BeanUtils.copyProperties(insPlyIncome,insPlyIncomeLog);
+        BeanUtils.copyProperties(byId,insPlyIncomeLog);
         insPlyIncomeLog.setOperationStatus("2");
         insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
 
@@ -1366,11 +1368,10 @@ handlingProportion,
     private static BigDecimal getBigDecimal(BigDecimal jqNoTaxPremium, BigDecimal proportion) {
         BigDecimal divisor = new BigDecimal("1.06"); // 示例除数
         // 先进行除法,保留5位小数,不进行四舍五入(使用RoundingMode.DOWN)
-        BigDecimal dividedAmount = jqNoTaxPremium.divide(divisor, 5, RoundingMode.DOWN);
+        BigDecimal dividedAmount = jqNoTaxPremium.divide(divisor, 5, RoundingMode.HALF_UP);
         // 将比例除以100,假设proportion是一个百分比值
-        BigDecimal scaledProportion = proportion.divide(new BigDecimal(100));
         // 然后进行乘法,并进行舍入到5位小数
-        BigDecimal result = dividedAmount.multiply(scaledProportion).setScale(5, RoundingMode.DOWN);
+        BigDecimal result = dividedAmount.multiply( proportion.divide(new BigDecimal(100))).setScale(5, BigDecimal.ROUND_DOWN);
         return result;
     }
 
@@ -1380,9 +1381,8 @@ handlingProportion,
      * @return 费用
      */
     private BigDecimal algorithmAmount(BigDecimal value1, BigDecimal value2) {
-        BigDecimal divide = value2.divide(new BigDecimal(100),5,RoundingMode.DOWN);
-        return value1.multiply(divide);
-
+        BigDecimal divide = value2.divide(new BigDecimal(100));
+        return value1.multiply(divide).setScale(5,BigDecimal.ROUND_DOWN);
     }
 
     private BigDecimal initializationBigdecimal(BigDecimal value) {
@@ -1413,14 +1413,6 @@ handlingProportion,
         insPlyIncomeVo.setSignDate(null);
         BeanUtils.copyProperties(insPlyIncomeVo, insPlyIncome);
 
-        InsPlyIncomeLog insPlyIncomeLog = new InsPlyIncomeLog();
-        insPlyIncomeLog.setIncomeId(insPlyIncome.getId());
-        insPlyIncome.setId(null);
-        BeanUtils.copyProperties(insPlyIncome,insPlyIncomeLog);
-        insPlyIncomeLog.setOperationStatus("1");
-        insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
-
-
         insPlyIncome.setUserId(BaseController.getUser().getId());
         insPlyIncome.setDocumentaryFeesStatus("0");
         insPlyIncome.setHandlingFeesStatus("0");
@@ -1468,6 +1460,13 @@ handlingProportion,
         insPlyIncome.setAgreementId(ptlAgreement.getId());
         baseMapper.insert(insPlyIncome);
 
+        InsPlyIncomeLog insPlyIncomeLog = new InsPlyIncomeLog();
+        insPlyIncomeLog.setIncomeId(insPlyIncome.getId());
+        insPlyIncome.setId(null);
+        BeanUtils.copyProperties(insPlyIncome,insPlyIncomeLog);
+        insPlyIncomeLog.setOperationStatus("1");
+        insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
+
         return HttpResult.ok();
     }
 
@@ -1517,7 +1516,7 @@ handlingProportion,
         insPlyIncomeLog.setIncomeId(insPlyIncome.getId());
         insPlyIncome.setId(null);
         BeanUtils.copyProperties(insPlyIncome,insPlyIncomeLog);
-        insPlyIncomeLog.setOperationStatus("1");
+        insPlyIncomeLog.setOperationStatus("3");
         insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
 
         baseMapper.deleteById(insPlyIncomeVo.getId());   //删除 结算  然后删除结算表
@@ -2580,14 +2579,8 @@ handlingProportion,
                     BigDecimal syOtherCostsProportion = item.getSyOtherCostsProportion();
 
 
-                    BigDecimal divisor = new BigDecimal("1.06"); // 最好是使用字符串来避免精度损失
-                    // 计算交强保费和商业保费(四舍五入到5位小数)
-                    BigDecimal jqNoTaxPremium = byBxLicenseno.getJqPremium().divide(divisor, 5, RoundingMode.DOWN); // 交强保费 / 1.06
-                    BigDecimal syNoTaxPremium = byBxLicenseno.getSyPremium().divide(divisor, 5, RoundingMode.DOWN); // 商业保费 / 1.06
-                    // 计算交强跟单费用和商业跟单费用(不进行四舍五入,而是截断到5位小数)
-                    BigDecimal jqOtherAmount = jqNoTaxPremium.multiply(item.getJqOtherCostsProportion().divide(new BigDecimal(100))).setScale(5, RoundingMode.DOWN);
-                    // 交强跟单费用
-                    BigDecimal syOtherAmount = syNoTaxPremium.multiply(item.getSyOtherCostsProportion().divide(new BigDecimal(100))).setScale(5, RoundingMode.DOWN);
+                    BigDecimal jqOtherAmount  =  getBigDecimal( byBxLicenseno.getJqPremium(),item.getJqOtherCostsProportion());
+                    BigDecimal syOtherAmount =  getBigDecimal( byBxLicenseno.getSyPremium(),item.getSyOtherCostsProportion());
 
                     byBxLicenseno.setJqOtherCostsPremium(jqOtherAmount);
                     byBxLicenseno.setSyOtherCostsPremium(syOtherAmount);
@@ -2664,11 +2657,8 @@ handlingProportion,
 
                     BigDecimal divisor = new BigDecimal("1.06"); // 最好是使用字符串来避免精度损失
 
-                    BigDecimal noPremium = noNoTaxPremium.divide(divisor, 5, RoundingMode.DOWN);//交强保费 / 1.06
-
-
-                    BigDecimal noOtherAmount = noPremium.multiply(item.getNoOtherCostsProportion().divide(new BigDecimal(100))).setScale(5, RoundingMode.DOWN);  //交强跟单费用
 
+                    BigDecimal noOtherAmount =  getBigDecimal( noNoTaxPremium,item.getNoOtherCostsProportion());
 
                     byBxLicenseno.setNoOtherCostsPremium(noOtherAmount);
                     byBxLicenseno.setNoOtherCostsProportion(item.getNoOtherCostsProportion());