|
|
@@ -23,7 +23,6 @@ import java.util.List;
|
|
|
import static com.awspaas.user.apps.donenow_ctt.PeriodCalculationUtil.GetPeriodMonth;
|
|
|
import static com.awspaas.user.apps.donenow_ctt.PeriodCalculationUtil.getDateRate;
|
|
|
import static com.awspaas.user.apps.donenow_ctt.service.contractService.*;
|
|
|
-import static com.awspaas.user.apps.donenow_ctt.service.contractService.LocalDateYYYYMMDD;
|
|
|
|
|
|
public class contractServiceAdj {
|
|
|
private static final Logger contractServiceLogger = SDK.getLogAPI().getLogger(contractServiceAdj.class);//记录日志
|
|
|
@@ -139,10 +138,21 @@ public class contractServiceAdj {
|
|
|
BigDecimal SERVICE_UNIT_PRICE = null;
|
|
|
BigDecimal SERVICE_TOTAL_PRICE = null;
|
|
|
|
|
|
+
|
|
|
+ BigDecimal SERVICE_UNIT_COST = BigDecimal.ZERO;//服务单元成本
|
|
|
+ BigDecimal SERVICE_TOTAL_COST = BigDecimal.ZERO;//服务总成本
|
|
|
+
|
|
|
+
|
|
|
if (StringUtils.isNotBlank(lastPeriodId)) {
|
|
|
SERVICE_UNIT_PRICE = TypeUtil.convert(lastContractService.get("UNIT_PRICE"), BigDecimal.class);
|
|
|
SERVICE_TOTAL_PRICE = multiply(SERVICE_UNIT_PRICE, lastContractService.get("QUANTITY"));
|
|
|
|
|
|
+ //无需采购
|
|
|
+ if (orgContractService.getString("NEED_PURCHASE").equals("1") == false) {
|
|
|
+ SERVICE_UNIT_COST = TypeUtil.convert(lastContractService.get("UNIT_COST"), BigDecimal.class);//服务单元成本
|
|
|
+ SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, lastContractService.get("QUANTITY"));//服务总成本
|
|
|
+ }
|
|
|
+
|
|
|
BO lastServicePeriod = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD", lastPeriodId);
|
|
|
|
|
|
LocalDate last_period_begin_date = getLocalDate(lastServicePeriod.get("PERIOD_BEGIN_DATE"));
|
|
|
@@ -154,6 +164,9 @@ public class contractServiceAdj {
|
|
|
lastServicePeriod.set("PERIOD_PRICE", multiply(SERVICE_TOTAL_PRICE, periodRate));
|
|
|
lastServicePeriod.set("PARTYA_PERIOD_PRICE", multiply(lastContractService.get("PARTYA_TOTAL_PRICE"), periodRate));
|
|
|
lastServicePeriod.set("PERIOD_ADJUSTED_PRICE", lastServicePeriod.get("PERIOD_PRICE"));
|
|
|
+
|
|
|
+ lastServicePeriod.set("PERIOD_COST", multiply(SERVICE_TOTAL_COST, periodRate));
|
|
|
+
|
|
|
SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD", lastServicePeriod, conn);
|
|
|
|
|
|
}
|
|
|
@@ -166,6 +179,12 @@ public class contractServiceAdj {
|
|
|
|
|
|
SERVICE_TOTAL_PRICE = multiply(SERVICE_UNIT_PRICE, contractService.get("QUANTITY"));
|
|
|
|
|
|
+ //无需采购
|
|
|
+ if (orgContractService.getString("NEED_PURCHASE").equals("1") == false) {
|
|
|
+ SERVICE_UNIT_COST = contractService.get("UNIT_COST", BigDecimal.class);//服务单元成本
|
|
|
+ SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, contractService.get("QUANTITY"));//服务总成本
|
|
|
+ }
|
|
|
+
|
|
|
String vendor_account_id = DBSql.getString(conn, "select VENDOR_ACCOUNT_ID from BO_EU_DNIVT_SERVICE where ID=?", new Object[]{orgContractService.getString("OBJECT_ID")});//供应商账号
|
|
|
|
|
|
if (periodList != null && periodList.size() > 0) {
|
|
|
@@ -208,6 +227,8 @@ public class contractServiceAdj {
|
|
|
csp.set("PERIOD_ADJUSTED_PRICE", csp.get("PERIOD_PRICE"));
|
|
|
csp.set("PARTYA_PERIOD_PRICE", multiply(contractService.get("PARTYA_TOTAL_PRICE"), period.getRate()));//三方合同甲方含税总价
|
|
|
|
|
|
+ csp.set("PERIOD_COST", period.getRate().multiply(SERVICE_TOTAL_COST));
|
|
|
+
|
|
|
csp.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
csp.setBindId(orgContractService.getString("BINDID"));
|
|
|
SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD", csp, uc, conn);
|
|
|
@@ -512,7 +533,7 @@ public class contractServiceAdj {
|
|
|
//execServicePurchaseAdj(uc, adjBO.getId());
|
|
|
//DBSql.update("update bo_eu_dnctt_contract_service set PURCHASE_END_DATE=? where ID=?", new Object[]{LocalDateYYYYMMDD(newEndDate), serviceId});
|
|
|
|
|
|
- if (execServicePurchaseAdj(uc, adjBO.getId()) == false) {
|
|
|
+ if (execServicePurchaseAdj(uc, adjBO.getId(), null) == false) {
|
|
|
DBSql.update("delete from BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST where ID=? AND IS_EFFECTIVE<>'已执行'", new Object[]{adjBO.getId()});
|
|
|
} else {
|
|
|
DBSql.update("update bo_eu_dnctt_contract_service set PURCHASE_END_DATE=? where ID=?", new Object[]{LocalDateYYYYMMDD(newEndDate), serviceId});
|
|
|
@@ -527,15 +548,43 @@ public class contractServiceAdj {
|
|
|
* 执行服务调整--采购
|
|
|
* @param uc
|
|
|
* @param boId
|
|
|
+ * @param boName
|
|
|
* @return
|
|
|
*/
|
|
|
- public boolean execServicePurchaseAdj(UserContext uc, String boId) {
|
|
|
+ public boolean execServicePurchaseAdj(UserContext uc, String boId, String boName) {
|
|
|
//调整 服务
|
|
|
BO contractService = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", boId);
|
|
|
|
|
|
-
|
|
|
+ if (StringUtils.isNotBlank(boName) && !boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH")) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
String PERIOD_TYPE = contractService.getString("PURCHASE_PERIOD_TYPE");
|
|
|
|
|
|
+ int periodMonths;
|
|
|
+ switch (contractService.getString("PURCHASE_PERIOD_TYPE")) {
|
|
|
+ case "610":
|
|
|
+ periodMonths = 1; // 按月
|
|
|
+ break;
|
|
|
+ case "611":
|
|
|
+ periodMonths = 3; // 按季度
|
|
|
+ break;
|
|
|
+ case "612":
|
|
|
+ periodMonths = 6; // 按半年
|
|
|
+ break;
|
|
|
+ case "613":
|
|
|
+ periodMonths = 12; // 按年
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ periodMonths = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(boName)) {
|
|
|
+ boName = "BO_EU_DNIVT_ORDER_PAYMENT_PLAN";
|
|
|
+ } else {
|
|
|
+ PERIOD_TYPE = "610";//按月
|
|
|
+ }
|
|
|
+
|
|
|
LocalDate EFFECTIVE_DATE = getLocalDate(contractService.get("PURCHASE_START_DATE"));//服务生效日期
|
|
|
LocalDate EFFECTIVE_END_DATE = getLocalDate(contractService.get("PURCHASE_END_DATE"));//服务结束日期
|
|
|
|
|
|
@@ -551,9 +600,9 @@ public class contractServiceAdj {
|
|
|
conn.setAutoCommit(false);
|
|
|
|
|
|
//生效日期之后的服务周期删除
|
|
|
- DBSql.update(conn, "DELETE FROM BO_EU_DNIVT_ORDER_PAYMENT_PLAN WHERE CONTRACT_SERVICE_ID=? and PERIOD_BEGIN_DATE >=? and (PAY_AMOUNT=0 or PAY_AMOUNT is NULL)", new Object[]{contractService.get("CONTRACT_SERVICE_ID"), LocalDateYYYYMMDD(EFFECTIVE_DATE)});
|
|
|
+ DBSql.update(conn, "DELETE FROM " + boName + " WHERE CONTRACT_SERVICE_ID=? and PERIOD_BEGIN_DATE >=? and (PAY_AMOUNT=0 or PAY_AMOUNT is NULL)", new Object[]{contractService.get("CONTRACT_SERVICE_ID"), LocalDateYYYYMMDD(EFFECTIVE_DATE)});
|
|
|
|
|
|
- String lastPeriodId = DBSql.getString(conn, "select ID from BO_EU_DNIVT_ORDER_PAYMENT_PLAN where CONTRACT_SERVICE_ID=? and PERIOD_END_DATE >=? order by PERIOD_BEGIN_DATE asc", new Object[]{contractService.get("CONTRACT_SERVICE_ID"), LocalDateYYYYMMDD(EFFECTIVE_DATE)});
|
|
|
+ String lastPeriodId = DBSql.getString(conn, "select ID from " + boName + " where CONTRACT_SERVICE_ID=? and PERIOD_END_DATE >=? order by PERIOD_BEGIN_DATE asc", new Object[]{contractService.get("CONTRACT_SERVICE_ID"), LocalDateYYYYMMDD(EFFECTIVE_DATE)});
|
|
|
|
|
|
BigDecimal SERVICE_UNIT_COST = null;
|
|
|
BigDecimal SERVICE_TOTAL_COST = null;
|
|
|
@@ -580,13 +629,9 @@ public class contractServiceAdj {
|
|
|
SERVICE_UNIT_COST = TypeUtil.convert(contractService.get("UNIT_COST_1STMONTH"), BigDecimal.class);
|
|
|
SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, contractService.get("QUANTITY"));
|
|
|
|
|
|
- //BigDecimal ratio = new BigDecimal(EFFECTIVE_DATE.getDayOfMonth()).divide(new BigDecimal(EFFECTIVE_DATE.lengthOfMonth()), 10, BigDecimal.ROUND_HALF_UP);
|
|
|
- // ratio = BigDecimal.ONE.subtract(ratio);
|
|
|
-
|
|
|
BigDecimal ratio = new BigDecimal(EFFECTIVE_DATE.lengthOfMonth() - EFFECTIVE_DATE.getDayOfMonth() + 1)
|
|
|
.divide(new BigDecimal(EFFECTIVE_DATE.lengthOfMonth()), 10, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
-
|
|
|
COST_1STMONTH = SERVICE_TOTAL_COST.multiply(ratio);
|
|
|
|
|
|
EFFECTIVE_DATE = EFFECTIVE_DATE.plusMonths(1).withDayOfMonth(1);//下个月1号
|
|
|
@@ -600,11 +645,17 @@ public class contractServiceAdj {
|
|
|
SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, lastContractService.get("QUANTITY"));
|
|
|
} else {
|
|
|
SERVICE_UNIT_COST = TypeUtil.convert(lastContractService.get("UNIT_COST"), BigDecimal.class);
|
|
|
+
|
|
|
+ //拆算成月成本
|
|
|
+ if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH")) {
|
|
|
+ SERVICE_UNIT_COST = SERVICE_UNIT_COST.divide(new BigDecimal(periodMonths), 10, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+
|
|
|
SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, lastContractService.get("QUANTITY"));
|
|
|
}
|
|
|
|
|
|
|
|
|
- BO lastServicePeriod = SDK.getBOAPI().get("BO_EU_DNIVT_ORDER_PAYMENT_PLAN", lastPeriodId);
|
|
|
+ BO lastServicePeriod = SDK.getBOAPI().get(boName, lastPeriodId);
|
|
|
|
|
|
LocalDate last_period_begin_date = getLocalDate(lastServicePeriod.get("PERIOD_BEGIN_DATE"));
|
|
|
|
|
|
@@ -615,13 +666,19 @@ public class contractServiceAdj {
|
|
|
lastServicePeriod.set("PLAN_AMOUNT", multiply(SERVICE_TOTAL_COST, periodRate));
|
|
|
lastServicePeriod.set("REMAIN_AMOUNT", lastServicePeriod.get("PLAN_AMOUNT"));
|
|
|
|
|
|
- SDK.getBOAPI().update("BO_EU_DNIVT_ORDER_PAYMENT_PLAN", lastServicePeriod, conn);
|
|
|
+ SDK.getBOAPI().update(boName, lastServicePeriod, conn);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//获取服务周期
|
|
|
List<PeriodCalculationUtil.Period> periodList = PeriodCalculationUtil.getPeriodListByConfig(PERIOD_TYPE, START_DATE, EFFECTIVE_DATE, EFFECTIVE_END_DATE, contractService.getString("PURCHASE_CALC_METHOD_1STPERIOD"), "4638", contractService.getString("MONTH_1STQUARTER"));
|
|
|
|
|
|
+
|
|
|
SERVICE_UNIT_COST = TypeUtil.convert(contractService.get("UNIT_COST"), BigDecimal.class);
|
|
|
+ //拆算成月成本
|
|
|
+ if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH")) {
|
|
|
+ SERVICE_UNIT_COST = SERVICE_UNIT_COST.divide(new BigDecimal(periodMonths), 10, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
|
|
|
SERVICE_TOTAL_COST = multiply(SERVICE_UNIT_COST, contractService.get("QUANTITY"));
|
|
|
RowMap costProduct = DBSql.getMap("select * from BO_EU_DNIVT_ORDER_PRODUCT where CONTRACT_SERVICE_ID=?", new Object[]{contractService.get("CONTRACT_SERVICE_ID")});
|
|
|
@@ -634,9 +691,7 @@ public class contractServiceAdj {
|
|
|
int i = 0;
|
|
|
for (PeriodCalculationUtil.Period period : periodList) {
|
|
|
i++;
|
|
|
- ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance("obj_5cb4ae4a42944fd0a9a284ff4c64c65d", uc.getUID(), "付款计划");
|
|
|
BO paymentPlan = new BO();
|
|
|
- paymentPlan.setBindId(processInstance.getId());
|
|
|
paymentPlan.set("ORDER_ID", orderId);
|
|
|
paymentPlan.set("PLAN_DATE", period.getPeriodBeginDateStr());
|
|
|
paymentPlan.set("PERIOD_BEGIN_DATE", period.getPeriodBeginDateStr());
|
|
|
@@ -655,33 +710,43 @@ public class contractServiceAdj {
|
|
|
paymentPlan.set("CONTRACT_SERVICE_ID", orgContractService.getId());
|
|
|
paymentPlan.set("PAY_DESC", orgContractService.getString("NAME"));
|
|
|
paymentPlan.set("ACCOUNT_PAYEE", VENDOR_ACCOUNT_ID);//收款单位
|
|
|
- SDK.getBOAPI().create("BO_EU_DNIVT_ORDER_PAYMENT_PLAN", paymentPlan, processInstance, uc, conn);
|
|
|
+
|
|
|
+ if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN")) {
|
|
|
+ ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance("obj_5cb4ae4a42944fd0a9a284ff4c64c65d", uc.getUID(), "付款计划");
|
|
|
+ paymentPlan.setBindId(processInstance.getId());
|
|
|
+ SDK.getBOAPI().create(boName, paymentPlan, processInstance, uc, conn);
|
|
|
+ } else {
|
|
|
+ SDK.getBOAPI().createDataBO(boName, paymentPlan, uc, conn);
|
|
|
+ }
|
|
|
|
|
|
System.out.println("==== 创建付款计划:" + paymentPlan.get("PLAN_DATE") + ",金额:" + paymentPlan.get("PLAN_AMOUNT") + " ====");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- contractService.set("IS_EFFECTIVE", "已执行");
|
|
|
- SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", contractService, conn);
|
|
|
- DBSql.update(conn, "update BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST set IS_EFFECTIVE='作废' where CONTRACT_SERVICE_ID=? and PURCHASE_START_DATE >?", new Object[]{contractService.get("CONTRACT_SERVICE_ID"), LocalDateYYYYMMDD(EFFECTIVE_DATE)});
|
|
|
+ if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN")) {
|
|
|
|
|
|
- orgContractService.set("UNIT_COST", contractService.get("UNIT_COST"));
|
|
|
- orgContractService.set("TOTAL_COST", contractService.get("TOTAL_COST"));
|
|
|
- orgContractService.set("QUANTITY", contractService.get("QUANTITY"));
|
|
|
- orgContractService.set("PURCHASE_CALC_METHOD_1STPERIOD", contractService.get("PURCHASE_CALC_METHOD_1STPERIOD"));
|
|
|
- orgContractService.set("MONTH_1STQUARTER", contractService.get("MONTH_1STQUARTER"));
|
|
|
- orgContractService.set("PURCHASE_PERIOD_TYPE", contractService.get("PURCHASE_PERIOD_TYPE"));
|
|
|
- orgContractService.set("PURCHASE_END_DATE", contractService.get("PURCHASE_END_DATE"));
|
|
|
+ contractService.set("IS_EFFECTIVE", "已执行");
|
|
|
+ SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST", contractService, conn);
|
|
|
+ DBSql.update(conn, "update BO_EU_DNCTT_CONTRACT_SERVICE_PURCHASE_ADJUST set IS_EFFECTIVE='作废' where CONTRACT_SERVICE_ID=? and PURCHASE_START_DATE >?", new Object[]{contractService.get("CONTRACT_SERVICE_ID"), LocalDateYYYYMMDD(EFFECTIVE_DATE)});
|
|
|
|
|
|
- //如果合同服务上面的生效日期小于服务调整的生效日期,则将合同服务生效日期改为服务调整的生效日期
|
|
|
- if (orgContractService.get("PURCHASE_START_DATE", LocalDate.class).compareTo(contractService.get("PURCHASE_START_DATE", LocalDate.class)) < 0)
|
|
|
- orgContractService.set("PURCHASE_START_DATE", contractService.get("PURCHASE_START_DATE"));
|
|
|
+ orgContractService.set("UNIT_COST", contractService.get("UNIT_COST"));
|
|
|
+ orgContractService.set("TOTAL_COST", contractService.get("TOTAL_COST"));
|
|
|
+ orgContractService.set("QUANTITY", contractService.get("QUANTITY"));
|
|
|
+ orgContractService.set("PURCHASE_CALC_METHOD_1STPERIOD", contractService.get("PURCHASE_CALC_METHOD_1STPERIOD"));
|
|
|
+ orgContractService.set("MONTH_1STQUARTER", contractService.get("MONTH_1STQUARTER"));
|
|
|
+ orgContractService.set("PURCHASE_PERIOD_TYPE", contractService.get("PURCHASE_PERIOD_TYPE"));
|
|
|
+ orgContractService.set("PURCHASE_END_DATE", contractService.get("PURCHASE_END_DATE"));
|
|
|
|
|
|
- SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE", orgContractService, conn);
|
|
|
+ //如果合同服务上面的生效日期小于服务调整的生效日期,则将合同服务生效日期改为服务调整的生效日期
|
|
|
+ if (orgContractService.get("PURCHASE_START_DATE", LocalDate.class).compareTo(contractService.get("PURCHASE_START_DATE", LocalDate.class)) < 0)
|
|
|
+ orgContractService.set("PURCHASE_START_DATE", contractService.get("PURCHASE_START_DATE"));
|
|
|
+
|
|
|
+ SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE", orgContractService, conn);
|
|
|
|
|
|
+
|
|
|
+ }
|
|
|
conn.commit();
|
|
|
|
|
|
- return true;
|
|
|
} catch (SQLException e) {
|
|
|
|
|
|
e.printStackTrace();
|
|
|
@@ -690,12 +755,83 @@ public class contractServiceAdj {
|
|
|
} catch (SQLException e1) {
|
|
|
e1.printStackTrace();
|
|
|
}
|
|
|
- return false;
|
|
|
+
|
|
|
} finally {
|
|
|
if (conn != null)
|
|
|
DBSql.close(conn);
|
|
|
}
|
|
|
|
|
|
+ //生成每月的采购计划
|
|
|
+ if (boName.equals("BO_EU_DNIVT_ORDER_PAYMENT_PLAN")) {
|
|
|
+ execServicePurchaseAdj(uc, boId, "BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH");
|
|
|
+
|
|
|
+ //分摊采购成本
|
|
|
+ paySplitServiceMonth(uc, contractService.getString("CONTRACT_SERVICE_ID"));
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //合同服务采购成本平摊到服务周期上面
|
|
|
+ public void paySplitServiceMonth(UserContext uc, String contractServiceId) {
|
|
|
+
|
|
|
+ RowMap service = DBSql.getMap("select * from BO_EU_DNCTT_CONTRACT_SERVICE where ID=?", new Object[]{contractServiceId});
|
|
|
+
|
|
|
+ //付款计划
|
|
|
+ List<RowMap> payPlanList = DBSql.getMaps("select * from BO_EU_DNIVT_ORDER_PAYMENT_PLAN_MONTH where CONTRACT_SERVICE_ID=? ORDER BY PERIOD_BEGIN_DATE", new Object[]{contractServiceId});
|
|
|
+
|
|
|
+ if (payPlanList.isEmpty() || payPlanList.size() == 0)
|
|
|
+ return;
|
|
|
+
|
|
|
+ //收款
|
|
|
+ List<RowMap> contractServicePeriodList = DBSql.getMaps("select * from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where CONTRACT_SERVICE_ID=? ORDER BY PERIOD_BEGIN_DATE", new Object[]{contractServiceId});
|
|
|
+
|
|
|
+ if (contractServicePeriodList.isEmpty() || contractServicePeriodList.size() == 0)
|
|
|
+ return;
|
|
|
+
|
|
|
+ //服务:一次性收费
|
|
|
+ if (service.getString("PERIOD_TYPE").equals("609")) {
|
|
|
+ BigDecimal SUM_PLAN_AMOUNT = BigDecimal.ZERO;
|
|
|
+ for (RowMap payPlan : payPlanList) {
|
|
|
+
|
|
|
+ SUM_PLAN_AMOUNT = SUM_PLAN_AMOUNT.add(TypeUtil.convert(payPlan.get("PLAN_AMOUNT"), BigDecimal.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ DBSql.update("update BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD set PERIOD_COST=? where ID=? ", new Object[]{SUM_PLAN_AMOUNT, contractServicePeriodList.get(0).getString("ID")});
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ LocalDate LAST_PERIOD_END_DATE = null;
|
|
|
+ for (RowMap servicePeriod : contractServicePeriodList) {
|
|
|
+ //服务周期
|
|
|
+ LocalDate PERIOD_BEGIN_DATE = TypeUtil.convert(servicePeriod.get("PERIOD_BEGIN_DATE"), LocalDate.class);//开始日期
|
|
|
+ LocalDate PERIOD_END_DATE = TypeUtil.convert(servicePeriod.get("PERIOD_END_DATE"), LocalDate.class);//结束日期
|
|
|
+
|
|
|
+ BigDecimal SUM_PLAN_AMOUNT = BigDecimal.ZERO;
|
|
|
+ for (RowMap payPlan : payPlanList) {
|
|
|
+ LocalDate PAY_PERIOD_BEGIN_DATE = TypeUtil.convert(payPlan.get("PERIOD_BEGIN_DATE"), LocalDate.class);//开始日期
|
|
|
+ LocalDate PAY_PERIOD_END_DATE = TypeUtil.convert(payPlan.get("PERIOD_END_DATE"), LocalDate.class);//结束日期
|
|
|
+
|
|
|
+ if (PAY_PERIOD_END_DATE.isAfter(PERIOD_END_DATE)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (LAST_PERIOD_END_DATE != null && PAY_PERIOD_END_DATE.isAfter(LAST_PERIOD_END_DATE) == false) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ //合计付款计划
|
|
|
+ SUM_PLAN_AMOUNT = SUM_PLAN_AMOUNT.add(TypeUtil.convert(payPlan.get("PLAN_AMOUNT"), BigDecimal.class));
|
|
|
+
|
|
|
+ }
|
|
|
+ DBSql.update("update BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD set PERIOD_COST=? where ID=? ", new Object[]{SUM_PLAN_AMOUNT, servicePeriod.getString("ID")});
|
|
|
+
|
|
|
+ contractServiceLogger.info("服务周期:" + servicePeriod.getString("ID") + ":" + SUM_PLAN_AMOUNT);
|
|
|
+
|
|
|
+ LAST_PERIOD_END_DATE = PERIOD_END_DATE;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|