Procházet zdrojové kódy

Merge branch 'master' of http://210.51.45.41:3000/itcat_admin/aws_donenow

HULEI před 2 měsíci
rodič
revize
89e9ce2047

+ 1 - 1
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/commissionController.java

@@ -36,7 +36,7 @@ public class commissionController {
         commissionBO.remove("CREATEDATE");
         commissionBO.remove("CREATEUSER");
         editBO.setAll(commissionBO.asMap());
-        editBO.set("OLD_RATIO", commissionBO.get("DOLLARS"));
+        editBO.set("OLD_DOLLARS", commissionBO.get("DOLLARS"));
         editBO.set("OLD_COMMISSION_DOLLARS", commissionBO.get("COMMISSION_DOLLARS"));
         editBO.set("COMMISSION_BINDID", commissionBindid);
         editBO.set("IS_EFFECTIVE", "未执行");

+ 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 = ? " +
@@ -1669,6 +1668,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();

+ 55 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/commissionAgentPayDWFormatSQLEvent.java

@@ -0,0 +1,55 @@
+package com.awspaas.user.apps.donenow_ctt.event;
+
+import com.actionsoft.bpms.dw.design.event.DataWindowFormatSQLEventInterface;
+import com.actionsoft.bpms.dw.exec.component.DataView;
+import com.actionsoft.bpms.server.UserContext;
+import com.actionsoft.sdk.local.SDK;
+import com.actionsoft.sdk.local.api.Logger;
+import com.alibaba.fastjson.JSON;
+
+import java.util.Map;
+
+public class commissionAgentPayDWFormatSQLEvent implements DataWindowFormatSQLEventInterface {
+    private static final Logger LOGGER = SDK.getLogAPI().getLogger(commissionAgentPayDWFormatSQLEvent.class);//记录日志
+
+    /**
+     *sql格式化
+     * @param userContext
+     * @param dataView
+     * @param sql
+     * @return
+     */
+    @Override
+    public String formatSQL(UserContext userContext, DataView dataView, String sql) {
+        try {
+            Map<String, Object> sqlParam = dataView.getDatagrid().getSqlParams();
+
+            if (sqlParam.containsKey("COMMISSION_PAY_ID") && sqlParam.get("COMMISSION_PAY_ID") != null) {
+                String COMMISSION_PAY_ID = sqlParam.get("COMMISSION_PAY_ID").toString();
+
+                LOGGER.info("COMMISSION_PAY_ID:" + COMMISSION_PAY_ID);
+                LOGGER.info("改之前sql:" + sql);
+                LOGGER.info(JSON.toJSONString(sqlParam));
+
+                if (sqlParam.containsKey("ZB_FEE_DATE") && sqlParam.get("ZB_FEE_DATE") != null) {
+                    sqlParam.put("ZB_FEE_DATE", "%%");
+                }
+
+                //COMMISSION_PAY_ID 只能是字母 数字 横线 下划线 逗号 组成,其他都要报错
+                if (!COMMISSION_PAY_ID.matches("[a-zA-Z0-9\\-_,]+")) {
+                    throw new Exception("COMMISSION_PAY_ID只能是字母 数字 横线 下划线 逗号 组成的");
+                }
+
+                sql = sql.replace(" COMMISSION_PAY_ID = :COMMISSION_PAY_ID", "(COMMISSION_PAY_ID = :COMMISSION_PAY_ID OR FIND_IN_SET(ID,'" + COMMISSION_PAY_ID + "')>0)");
+
+
+                LOGGER.info("改之后sql:" + sql);
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return sql;
+    }
+}

+ 13 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/commissionFormAfterSave.java

@@ -224,6 +224,7 @@ public class commissionFormAfterSave extends ExecuteListener {
                                 periodBO.set("PERIOD_ADJUSTED_PRICE", periodBO.get("COMMISSION_DOLLARS"));
                                 SDK.getBOAPI().update("BO_EU_DNCTT_COMMISSION_PERIOD", periodBO, conn);
                             }
+                            period.setCommissionPeriodId(periodBO.getId());
                         } else {
                             //佣金周期
                             BO periodBO = new BO();
@@ -234,6 +235,7 @@ public class commissionFormAfterSave extends ExecuteListener {
                             periodBO.set("PERIOD_ADJUSTED_PRICE", periodBO.get("COMMISSION_DOLLARS"));
                             periodBO.setBindId(COMMISSION_BINDID);
                             SDK.getBOAPI().createDataBO("BO_EU_DNCTT_COMMISSION_PERIOD", periodBO, uc, conn);
+                            period.setCommissionPeriodId(periodBO.getId());
                         }
                         //二级代理提成
                         if (commissionAgentList.isEmpty() == false && commissionAgentList.size() > 0) {
@@ -258,6 +260,7 @@ public class commissionFormAfterSave extends ExecuteListener {
                                     periodAgentBO.set("PERIOD_END_DATE", period.getPeriodEndDateStr());
                                     periodAgentBO.set("COMMISSION_DOLLARS", multiply(period.getRate(), commissionAgentBO.get("COMMISSION_DOLLARS")));
                                     periodAgentBO.set("PERIOD_ADJUSTED_PRICE", periodAgentBO.get("COMMISSION_DOLLARS"));
+                                    periodAgentBO.set("COMMISSION_PERIOD_ID", period.getCommissionPeriodId());
                                     periodAgentBO.setBindId(COMMISSION_BINDID);
                                     SDK.getBOAPI().createDataBO("BO_EU_DNCTT_COMMISSION_PERIOD_AGENT", periodAgentBO, uc, conn);
 
@@ -288,6 +291,7 @@ public class commissionFormAfterSave extends ExecuteListener {
                                     periodSalesBO.set("PERIOD_END_DATE", period.getPeriodEndDateStr());
                                     periodSalesBO.set("COMMISSION_DOLLARS", multiply(period.getRate(), commissionSalesBO.get("COMMISSION_DOLLARS")));
                                     periodSalesBO.set("PERIOD_ADJUSTED_PRICE", periodSalesBO.get("COMMISSION_DOLLARS"));
+                                    periodSalesBO.set("COMMISSION_PERIOD_ID", period.getCommissionPeriodId());
                                     periodSalesBO.setBindId(COMMISSION_BINDID);
                                     SDK.getBOAPI().createDataBO("BO_EU_DNCTT_COMMISSION_PERIOD_SALES", periodSalesBO, uc, conn);
                                 }
@@ -545,6 +549,8 @@ public class commissionFormAfterSave extends ExecuteListener {
 
         private BigDecimal RATE;
 
+        private String COMMISSION_PERIOD_ID;
+
         public void setPeriodBeginDate(LocalDate periodBeginDate) {
             this.PERIOD_BEGIN_DATE = periodBeginDate;
         }
@@ -557,6 +563,10 @@ public class commissionFormAfterSave extends ExecuteListener {
             this.RATE = rate;
         }
 
+        public void setCommissionPeriodId(String commissionPeriodId) {
+            this.COMMISSION_PERIOD_ID = commissionPeriodId;
+        }
+
         public LocalDate getPeriodBeginDate() {
             return PERIOD_BEGIN_DATE;
         }
@@ -581,5 +591,8 @@ public class commissionFormAfterSave extends ExecuteListener {
             return RATE;
         }
 
+        public String getCommissionPeriodId() {
+            return COMMISSION_PERIOD_ID;
+        }
     }
 }

+ 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