Parcourir la source

调整佣金后,同步修改二代提成佣金和销售佣金

zhangyao il y a 2 mois
Parent
commit
38a6bba67c

+ 22 - 5
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractApproveController.java

@@ -22,8 +22,7 @@ import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
-import static com.awspaas.user.apps.donenow_ctt.service.contractService.GetEntryCost;
-import static com.awspaas.user.apps.donenow_ctt.service.contractService.getLocalDate;
+import static com.awspaas.user.apps.donenow_ctt.service.contractService.*;
 
 @Controller
 public class contractApproveController {
@@ -1417,9 +1416,9 @@ public class contractApproveController {
 
     @Mapping(value = "com.awspaas.user.apps.donenow_ctt.checkCommissionPeriodExists2")
     public ResponseObject checkCommissionPeriodExists2(UserContext uc,
-                                                      String bindid,
-                                                      String startDate,
-                                                      String endDate) {
+                                                       String bindid,
+                                                       String startDate,
+                                                       String endDate) {
         try {
             String checkSql = "SELECT COUNT(1) FROM BO_EU_DNCTT_COMMISSION_PERIOD " +
                     "WHERE BINDID = ? " +
@@ -1583,6 +1582,24 @@ public class contractApproveController {
         if (StringUtils.isNotBlank(APPROVE_AND_POST_DATE))
             return ResponseObject.newErrResponse("已审批不允许修改");
 
+        BigDecimal rate = divideToBigDecimal(periodPrice, period.get("PERIOD_ADJUSTED_PRICE"));
+
+        String COMMISSION_BINDID = period.getString("BINDID");
+
+        String PERIOD_BEGIN_DATE = period.getDate("PERIOD_BEGIN_DATE").toInstant().atZone(ZoneId.systemDefault()).toLocalDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+
+        List<BO> commissionSalesBOs = SDK.getBOAPI().query("BO_EU_DNCTT_COMMISSION_PERIOD_SALES").addQuery("BINDID =", COMMISSION_BINDID).addQuery("PERIOD_BEGIN_DATE=?", PERIOD_BEGIN_DATE).list();
+        for (BO commissionSalesBO : commissionSalesBOs) {
+            commissionSalesBO.set("PERIOD_ADJUSTED_PRICE", multiply(commissionSalesBO.get("PERIOD_ADJUSTED_PRICE"), rate));
+            SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD_SALES", commissionSalesBO);
+        }
+
+        List<BO> commissionAGENTBOs = SDK.getBOAPI().query("BO_EU_DNCTT_COMMISSION_PERIOD_AGENT").addQuery("BINDID =", COMMISSION_BINDID).addQuery("PERIOD_BEGIN_DATE=?", PERIOD_BEGIN_DATE).list();
+        for (BO commissionAGENTBO : commissionAGENTBOs) {
+            commissionAGENTBO.set("PERIOD_ADJUSTED_PRICE", multiply(commissionAGENTBO.get("PERIOD_ADJUSTED_PRICE"), rate));
+            SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD_AGENT", commissionAGENTBO);
+        }
+
         DBSql.update("update BO_EU_DNCTT_COMMISSION_PERIOD set PERIOD_ADJUSTED_PRICE=? where ID=?", new Object[]{periodPrice, id});
 
         return ResponseObject.newOkResponse();

+ 14 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -1680,6 +1680,20 @@ public class contractService {
         return num.divide(den, 10, RoundingMode.HALF_UP); // 保留 10 位小数
     }
 
+    public static BigDecimal divideToBigDecimal(Object numerator, Object denominator) {
+        // 转换分子为BigDecimal
+        BigDecimal num = toBigDecimal(numerator);
+        // 转换分母为BigDecimal
+        BigDecimal den = toBigDecimal(denominator);
+
+        // 检查分母是否为0
+        if (den.compareTo(BigDecimal.ZERO) == 0) {
+            throw new ArithmeticException("分母不能为零");
+        }
+        // 精确除法(保留10位小数,四舍五入)
+        return num.divide(den, 10, RoundingMode.HALF_UP);
+    }
+
     /**
      * 合同例外因素更新(添加和删除)
      * @param uc