Bladeren bron

增加固定价格的计算方式

zhangyao 3 weken geleden
bovenliggende
commit
74e304effc

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

@@ -1128,12 +1128,24 @@ public class contractService {
         if (EFFECTIVE_END_DATE != null)
             END_DATE = EFFECTIVE_END_DATE;
 
-        LocalDate YS_EFFECTIVE_DATE=EFFECTIVE_DATE;
-        LocalDate YS_END_DATE=END_DATE;
-        //固定价格,按照整个月计算
-        if (service.getString("FIXED_PRICE").equals("1")) {
-            EFFECTIVE_DATE = (EFFECTIVE_DATE.withDayOfMonth(1)); //当月1号
-            END_DATE = END_DATE.withDayOfMonth(END_DATE.lengthOfMonth()); //当月最后一天;
+        //做过服务调整
+        if (DBSql.getInt("SELECT count(1) AS CNT FROM BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST WHERE CONTRACT_SERVICE_ID=? ", new Object[]{service.get("ID")}) > 0) {
+            return false;
+        }
+
+        LocalDate YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
+        LocalDate YS_END_DATE = END_DATE;
+
+        String CALC_METHOD_1STPERIOD = service.getString("CALC_METHOD_1STPERIOD");
+
+        if (CALC_METHOD_1STPERIOD.equals("4598") || CALC_METHOD_1STPERIOD.equals("4595") || CALC_METHOD_1STPERIOD.equals("4592")) {
+
+        } else {
+            //固定价格,按照整个月计算
+            if (service.getString("FIXED_PRICE").equals("1")) {
+                EFFECTIVE_DATE = (EFFECTIVE_DATE.withDayOfMonth(1)); //当月1号
+                END_DATE = END_DATE.withDayOfMonth(END_DATE.lengthOfMonth()); //当月最后一天;
+            }
         }
 
         //已经审批并提交则不能重新生成服务
@@ -1172,7 +1184,7 @@ public class contractService {
 
         //获取服务周期
         //List<PeriodCalculationUtil.Period> periodList = PeriodCalculationUtil.getPeriodList(PERIOD_TYPE, START_DATE, EFFECTIVE_DATE, END_DATE, true, true, -1);
-        String CALC_METHOD_1STPERIOD = service.getString("CALC_METHOD_1STPERIOD");
+
         List<PeriodCalculationUtil.Period> periodList = PeriodCalculationUtil.getPeriodListByConfig(PERIOD_TYPE, EFFECTIVE_DATE, EFFECTIVE_DATE, END_DATE, CALC_METHOD_1STPERIOD, service.getString("CALC_METHOD_1STYEAR"), service.getString("MONTH_1STQUARTER"));
 
         if (periodList != null && periodList.size() > 0) {

+ 63 - 43
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractServiceAdj.java

@@ -56,11 +56,14 @@ public class contractServiceAdj {
      * @return
      */
     public String editServiceSale(UserContext uc, String serviceId, String remark) {
-        RowMap contractService = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='未执行' ", new Object[]{serviceId});
 
-        //存在未完成的调整单,继续编辑
-        if (contractService != null) {
-            return contractService.getString("BINDID");
+        RowMap contractService = null;
+        if (remark==null||!remark.equals("修改结束日期")) {
+            contractService = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='未执行' ", new Object[]{serviceId});
+            //存在未完成的调整单,继续编辑
+            if (contractService != null) {
+                return contractService.getString("BINDID");
+            }
         }
 
         contractService = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='已执行' ORDER BY  CREATEDATE DESC ", new Object[]{serviceId});
@@ -101,7 +104,7 @@ public class contractServiceAdj {
 
         if (editBO.get("END_DATE") == null) {
             DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_SERVICE a JOIN BO_EU_DNCTT_CONTRACT b ON a.CONTRACT_ID=b.ID set a.END_DATE=b.END_DATE WHERE a.END_DATE IS NULL AND a.ID=?", new Object[]{serviceId});
-            DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST a JOIN BO_EU_DNCTT_CONTRACT b ON a.CONTRACT_ID=b.ID set a.END_DATE=b.END_DATE WHERE a.END_DATE IS NULL a.CONTRACT_SERVICE_ID=?", new Object[]{serviceId});
+            DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_SERVICE_SALE_ADJUST a JOIN BO_EU_DNCTT_CONTRACT b ON a.CONTRACT_ID=b.ID set a.END_DATE=b.END_DATE WHERE a.END_DATE IS NULL AND a.CONTRACT_SERVICE_ID=?", new Object[]{serviceId});
         }
 
         return contractInstance.getId();
@@ -125,26 +128,32 @@ public class contractServiceAdj {
 
         LocalDate YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
         LocalDate YS_END_DATE = EFFECTIVE_END_DATE;
-        //固定价格,按照整个月计算
-        if (orgContractService.getString("FIXED_PRICE").equals("1")) {
-            //需要判断是当月1号,还是下月1号  合同开始日期
+        String CALC_METHOD_1STPERIOD = contractService.getString("CALC_METHOD_1STPERIOD");
 
-            String minPERIOD_BEGIN_DATE = DBSql.getString("select min(PERIOD_BEGIN_DATE) PERIOD_BEGIN_DATE from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where CONTRACT_SERVICE_ID=?", new Object[]{contractService.get("CONTRACT_SERVICE_ID")});
+        if (CALC_METHOD_1STPERIOD.equals("4598") || CALC_METHOD_1STPERIOD.equals("4595") || CALC_METHOD_1STPERIOD.equals("4592")) {
 
-            minPERIOD_BEGIN_DATE = minPERIOD_BEGIN_DATE.substring(0, 10);
-            if (minPERIOD_BEGIN_DATE.compareTo(LocalDateYYYYMMDD(EFFECTIVE_DATE))>=0) {
-                EFFECTIVE_DATE = (EFFECTIVE_DATE.withDayOfMonth(1)); //当月1号
-            } else {
-                if (DBSql.getInt("select count(1) CNT from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where PERIOD_BEGIN_DATE<? and CONTRACT_SERVICE_ID=?", new Object[]{LocalDateYYYYMMDD(EFFECTIVE_DATE), contractService.get("CONTRACT_SERVICE_ID")}) > 0 && EFFECTIVE_DATE.getDayOfMonth() > 1) {
-                    //下月1号
-                    EFFECTIVE_DATE = (EFFECTIVE_DATE.plusMonths(1)).withDayOfMonth(1);
-                } else {
+        } else {
+            //固定价格,按照整个月计算
+            if (orgContractService.getString("FIXED_PRICE").equals("1")) {
+                //需要判断是当月1号,还是下月1号  合同开始日期
+
+                String minPERIOD_BEGIN_DATE = DBSql.getString("select min(PERIOD_BEGIN_DATE) PERIOD_BEGIN_DATE from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where CONTRACT_SERVICE_ID=?", new Object[]{contractService.get("CONTRACT_SERVICE_ID")});
+
+                minPERIOD_BEGIN_DATE = minPERIOD_BEGIN_DATE.substring(0, 10);
+                if (minPERIOD_BEGIN_DATE.compareTo(LocalDateYYYYMMDD(EFFECTIVE_DATE)) >= 0) {
                     EFFECTIVE_DATE = (EFFECTIVE_DATE.withDayOfMonth(1)); //当月1号
+                } else {
+                    if (DBSql.getInt("select count(1) CNT from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where PERIOD_BEGIN_DATE<? and CONTRACT_SERVICE_ID=?", new Object[]{LocalDateYYYYMMDD(EFFECTIVE_DATE), contractService.get("CONTRACT_SERVICE_ID")}) > 0 && EFFECTIVE_DATE.getDayOfMonth() > 1) {
+                        //下月1号
+                        EFFECTIVE_DATE = (EFFECTIVE_DATE.plusMonths(1)).withDayOfMonth(1);
+                    } else {
+                        EFFECTIVE_DATE = (EFFECTIVE_DATE.withDayOfMonth(1)); //当月1号
+                    }
+                    YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
                 }
-                YS_EFFECTIVE_DATE=EFFECTIVE_DATE;
-            }
 
-            EFFECTIVE_END_DATE = EFFECTIVE_END_DATE.withDayOfMonth(EFFECTIVE_END_DATE.lengthOfMonth()); //当月最后一天;
+                EFFECTIVE_END_DATE = EFFECTIVE_END_DATE.withDayOfMonth(EFFECTIVE_END_DATE.lengthOfMonth()); //当月最后一天;
+            }
         }
 
 
@@ -222,7 +231,7 @@ public class contractServiceAdj {
 
             }
 
-            String CALC_METHOD_1STPERIOD = contractService.getString("CALC_METHOD_1STPERIOD");
+
             //获取服务周期
             List<PeriodCalculationUtil.Period> periodList = PeriodCalculationUtil.getPeriodListByConfig(PERIOD_TYPE, EFFECTIVE_DATE, EFFECTIVE_DATE, EFFECTIVE_END_DATE, CALC_METHOD_1STPERIOD, "4638", contractService.getString("MONTH_1STQUARTER"));
 
@@ -251,7 +260,7 @@ public class contractServiceAdj {
                 }
 
                 //周期原来的开始日期和结束日期
-                periodList.get(0).setPeriodBeginDate(YS_EFFECTIVE_DATE);
+                //periodList.get(0).setPeriodBeginDate(YS_EFFECTIVE_DATE);
                 periodList.get(periodList.size() - 1).setPeriodEndDate(YS_END_DATE);
 
                 //首月+3个月、首月+6个月、首月+12个月 的情况,需要把前两条 合并成一条
@@ -512,13 +521,18 @@ public class contractServiceAdj {
      * @return
      */
     public String editServicePurchase(UserContext uc, String serviceId, String remark) {
-        RowMap contractService = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='未执行' ", new Object[]{serviceId});
 
-        //存在未完成的调整单,继续编辑
-        if (contractService != null) {
-            return contractService.getString("BINDID");
+        RowMap contractService = null;
+        if (remark == null || !remark.equals("修改结束日期")) {
+            contractService = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='未执行' ", new Object[]{serviceId});
+
+            //存在未完成的调整单,继续编辑
+            if (contractService != null) {
+                return contractService.getString("BINDID");
+            }
         }
 
+
         contractService = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND IS_EFFECTIVE='已执行' ORDER BY  CREATEDATE DESC ", new Object[]{serviceId});
 
         String processDefId = "obj_b147ad05008546058736a06bc6205313";//采购
@@ -709,29 +723,33 @@ public class contractServiceAdj {
 
         LocalDate YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
         LocalDate YS_END_DATE = EFFECTIVE_END_DATE;
-        //固定价格,按照整个月计算
-        if (orgContractService.getString("FIXED_PRICE").equals("1")) {
-            //需要判断是当月1号,还是下月1号  合同开始日期
 
-            String minPERIOD_BEGIN_DATE = DBSql.getString("select min(PERIOD_BEGIN_DATE) PERIOD_BEGIN_DATE from "+boName+" where CONTRACT_SERVICE_ID=?", new Object[]{contractService.get("CONTRACT_SERVICE_ID")});
+        if (PURCHASE_CALC_METHOD_1STPERIOD.equals("4598") || PURCHASE_CALC_METHOD_1STPERIOD.equals("4595") || PURCHASE_CALC_METHOD_1STPERIOD.equals("4592")) {
 
-            minPERIOD_BEGIN_DATE = minPERIOD_BEGIN_DATE.substring(0, 10);
-            if (minPERIOD_BEGIN_DATE.compareTo(LocalDateYYYYMMDD(EFFECTIVE_DATE))>=0) {
-                EFFECTIVE_DATE = (EFFECTIVE_DATE.withDayOfMonth(1)); //当月1号
-            } else {
-                if (DBSql.getInt("select count(1) CNT from "+ boName +" where PERIOD_BEGIN_DATE<? and CONTRACT_SERVICE_ID=?", new Object[]{LocalDateYYYYMMDD(EFFECTIVE_DATE), contractService.get("CONTRACT_SERVICE_ID")}) > 0 && EFFECTIVE_DATE.getDayOfMonth() > 1) {
-                    //下月1号
-                    EFFECTIVE_DATE = (EFFECTIVE_DATE.plusMonths(1)).withDayOfMonth(1);
-                } else {
+        } else {
+            //固定价格,按照整个月计算
+            if (orgContractService.getString("FIXED_PRICE").equals("1")) {
+                //需要判断是当月1号,还是下月1号  合同开始日期
+
+                String minPERIOD_BEGIN_DATE = DBSql.getString("select min(PERIOD_BEGIN_DATE) PERIOD_BEGIN_DATE from " + boName + " where CONTRACT_SERVICE_ID=?", new Object[]{contractService.get("CONTRACT_SERVICE_ID")});
+
+                minPERIOD_BEGIN_DATE = minPERIOD_BEGIN_DATE.substring(0, 10);
+                if (minPERIOD_BEGIN_DATE.compareTo(LocalDateYYYYMMDD(EFFECTIVE_DATE)) >= 0) {
                     EFFECTIVE_DATE = (EFFECTIVE_DATE.withDayOfMonth(1)); //当月1号
+                } else {
+                    if (DBSql.getInt("select count(1) CNT from " + boName + " where PERIOD_BEGIN_DATE<? and CONTRACT_SERVICE_ID=?", new Object[]{LocalDateYYYYMMDD(EFFECTIVE_DATE), contractService.get("CONTRACT_SERVICE_ID")}) > 0 && EFFECTIVE_DATE.getDayOfMonth() > 1) {
+                        //下月1号
+                        EFFECTIVE_DATE = (EFFECTIVE_DATE.plusMonths(1)).withDayOfMonth(1);
+                    } else {
+                        EFFECTIVE_DATE = (EFFECTIVE_DATE.withDayOfMonth(1)); //当月1号
+                    }
+                    YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
                 }
-                YS_EFFECTIVE_DATE=EFFECTIVE_DATE;
-            }
 
-            EFFECTIVE_END_DATE = EFFECTIVE_END_DATE.withDayOfMonth(EFFECTIVE_END_DATE.lengthOfMonth()); //当月最后一天;
+                EFFECTIVE_END_DATE = EFFECTIVE_END_DATE.withDayOfMonth(EFFECTIVE_END_DATE.lengthOfMonth()); //当月最后一天;
+            }
         }
 
-
         //生效日期之前的一次调整
         RowMap lastContractService = DBSql.getMap("select * from BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST where  CONTRACT_SERVICE_ID=? and PURCHASE_START_DATE <=? and IS_EFFECTIVE='已执行' order by PURCHASE_START_DATE desc", new Object[]{contractService.get("CONTRACT_SERVICE_ID"), LocalDateYYYYMMDD(EFFECTIVE_DATE)});
 
@@ -779,7 +797,7 @@ public class contractServiceAdj {
                     teshuchuliBeginDate = LocalDateYYYYMMDD(EFFECTIVE_DATE);
 
                     if (orgContractService.getString("FIXED_PRICE").equals("1")) {
-                        teshuchuliBeginDate=LocalDateYYYYMMDD(YS_EFFECTIVE_DATE);
+                        teshuchuliBeginDate = LocalDateYYYYMMDD(YS_EFFECTIVE_DATE);
                     }
 
                     SERVICE_UNIT_COST = TypeUtil.convert(contractService.get("UNIT_COST_1STMONTH"), BigDecimal.class);
@@ -876,6 +894,8 @@ public class contractServiceAdj {
 
             if (periodList != null && periodList.size() > 0) {
 
+                periodList.get(periodList.size() - 1).setPeriodEndDate(YS_END_DATE);
+
                 int i = 0;
                 for (PeriodCalculationUtil.Period period : periodList) {
                     i++;

+ 11 - 6
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/service/PaymentPlanService.java

@@ -208,15 +208,20 @@ public class PaymentPlanService {
 
         LocalDate YS_EFFECTIVE_DATE=PERIOD_BEGIN_DATE;
         LocalDate YS_END_DATE=PERIOD_END_DATE;
-        //固定价格,按照整个月计算
-        if (service.getString("FIXED_PRICE").equals("1")) {
-            PERIOD_BEGIN_DATE = (PERIOD_BEGIN_DATE.withDayOfMonth(1)); //当月1号
-            START_DATE = PERIOD_BEGIN_DATE;
-            PERIOD_END_DATE = PERIOD_END_DATE.withDayOfMonth(PERIOD_END_DATE.lengthOfMonth()); //当月最后一天;
-        }
 
         String PURCHASE_CALC_METHOD_1STPERIOD = service.getString("PURCHASE_CALC_METHOD_1STPERIOD");
 
+        if (PURCHASE_CALC_METHOD_1STPERIOD.equals("4598") || PURCHASE_CALC_METHOD_1STPERIOD.equals("4595") || PURCHASE_CALC_METHOD_1STPERIOD.equals("4592")) {
+
+        }else{
+            //固定价格,按照整个月计算
+            if (service.getString("FIXED_PRICE").equals("1")) {
+                PERIOD_BEGIN_DATE = (PERIOD_BEGIN_DATE.withDayOfMonth(1)); //当月1号
+                START_DATE = PERIOD_BEGIN_DATE;
+                PERIOD_END_DATE = PERIOD_END_DATE.withDayOfMonth(PERIOD_END_DATE.lengthOfMonth()); //当月最后一天;
+            }
+        }
+
         if (StringUtils.isBlank(RULE_CATE) || StringUtils.isBlank(PURCHASE_CALC_METHOD_1STPERIOD)) {
             return;
         }