|
@@ -56,11 +56,14 @@ public class contractServiceAdj {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public String editServiceSale(UserContext uc, String serviceId, String remark) {
|
|
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});
|
|
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) {
|
|
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 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();
|
|
return contractInstance.getId();
|
|
@@ -125,26 +128,32 @@ public class contractServiceAdj {
|
|
|
|
|
|
|
|
LocalDate YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
|
|
LocalDate YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
|
|
|
LocalDate YS_END_DATE = EFFECTIVE_END_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号
|
|
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"));
|
|
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);
|
|
periodList.get(periodList.size() - 1).setPeriodEndDate(YS_END_DATE);
|
|
|
|
|
|
|
|
//首月+3个月、首月+6个月、首月+12个月 的情况,需要把前两条 合并成一条
|
|
//首月+3个月、首月+6个月、首月+12个月 的情况,需要把前两条 合并成一条
|
|
@@ -512,13 +521,18 @@ public class contractServiceAdj {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public String editServicePurchase(UserContext uc, String serviceId, String remark) {
|
|
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});
|
|
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";//采购
|
|
String processDefId = "obj_b147ad05008546058736a06bc6205313";//采购
|
|
@@ -709,29 +723,33 @@ public class contractServiceAdj {
|
|
|
|
|
|
|
|
LocalDate YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
|
|
LocalDate YS_EFFECTIVE_DATE = EFFECTIVE_DATE;
|
|
|
LocalDate YS_END_DATE = EFFECTIVE_END_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号
|
|
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)});
|
|
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);
|
|
teshuchuliBeginDate = LocalDateYYYYMMDD(EFFECTIVE_DATE);
|
|
|
|
|
|
|
|
if (orgContractService.getString("FIXED_PRICE").equals("1")) {
|
|
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);
|
|
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) {
|
|
if (periodList != null && periodList.size() > 0) {
|
|
|
|
|
|
|
|
|
|
+ periodList.get(periodList.size() - 1).setPeriodEndDate(YS_END_DATE);
|
|
|
|
|
+
|
|
|
int i = 0;
|
|
int i = 0;
|
|
|
for (PeriodCalculationUtil.Period period : periodList) {
|
|
for (PeriodCalculationUtil.Period period : periodList) {
|
|
|
i++;
|
|
i++;
|