Переглянути джерело

1、采购数量等于合同服务上面的数量;
2、采购总价等于合同服务周期合计之后的总成本;
3、采购上面的单价等于采购总价➗采购数量;

zhangyao 2 місяців тому
батько
коміт
3b0ba91a6f

+ 19 - 2
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -21,6 +21,8 @@ import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 
+import static com.awspaas.user.apps.donenow_ctt.service.contractService.divideToBigDecimal;
+
 
 /**
  * 合同服务
@@ -1346,9 +1348,10 @@ public class contractService {
         contractCost.set("UNIT_PRICE", service.get("UNIT_PRICE"));
 
         //数量
-        int quantity = DBSql.getInt(conn, "SELECT COUNT(1) as CNT FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID='" + service.get("SERVICE_ID") + "'", "CNT"); //周期数量
+        // int quantity = DBSql.getInt(conn, "SELECT COUNT(1) as CNT FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID='" + service.get("SERVICE_ID") + "'", "CNT"); //周期数量
 
         try {
+            /*
             String PURCHASE_PERIOD_TYPE = service.get("PURCHASE_PERIOD_TYPE");//采购周期
             RowMap contractServicePeriod = DBSql.getMap("SELECT MIN(PERIOD_BEGIN_DATE) AS PERIOD_BEGIN_DATE,MAX(PERIOD_END_DATE) AS PERIOD_END_DATE FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID=?", new Object[]{service.get("SERVICE_ID")});//服务开始和结束日期
             LocalDate beginDate = getLocalDate(contractServicePeriod.get("PERIOD_BEGIN_DATE"));
@@ -1356,11 +1359,14 @@ public class contractService {
             //计算周期个数
             if (StringUtils.isNotBlank(PURCHASE_PERIOD_TYPE) && beginDate != null && endDate != null)
                 quantity = calculatePeriods(PURCHASE_PERIOD_TYPE, beginDate, endDate);
+
+             */
+
         } catch (Exception e) {
             e.printStackTrace();
         }
 
-        contractCost.set("QUANTITY", quantity);
+        //contractCost.set("QUANTITY", quantity);
 
         //总成本
         contractCost.set("EXTENDED_COST", DBSql.getDouble(conn, "SELECT SUM(PERIOD_COST) as COST FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID='" + service.get("SERVICE_ID") + "'", "COST"));
@@ -1368,6 +1374,11 @@ public class contractService {
         //总价格
         contractCost.set("EXTENDED_PRICE", DBSql.getDouble(conn, "SELECT SUM(PERIOD_ADJUSTED_PRICE) as PRICE FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID='" + service.get("SERVICE_ID") + "'", "PRICE"));
 
+        //单价=总价格➗数量
+        contractCost.set("UNIT_COST", divideToBigDecimal(contractCost.get("EXTENDED_COST"), contractCost.get("QUANTITY")));
+        //成本=总成本➗数量
+        contractCost.set("UNIT_PRICE", divideToBigDecimal(contractCost.get("EXTENDED_PRICE"), contractCost.get("QUANTITY")));
+
         if (contractCost.isNew()) {
             //成本子类:合同成本
             contractCost.set("SUB_CATE_ID", "1314");
@@ -1694,6 +1705,12 @@ public class contractService {
         return num.divide(den, 10, RoundingMode.HALF_UP); // 保留 10 位小数
     }
 
+    /**
+     * 相除
+     * @param numerator
+     * @param denominator
+     * @return
+     */
     public static BigDecimal divideToBigDecimal(Object numerator, Object denominator) {
         // 转换分子为BigDecimal
         BigDecimal num = toBigDecimal(numerator);