|
@@ -144,7 +144,7 @@ public class contractService {
|
|
|
contractNo = orgContractNo + "-S" + String.format("%03d", Integer.parseInt(lastNo) + 1);
|
|
contractNo = orgContractNo + "-S" + String.format("%03d", Integer.parseInt(lastNo) + 1);
|
|
|
contractBO.set("NO", contractNo);
|
|
contractBO.set("NO", contractNo);
|
|
|
} else {
|
|
} else {
|
|
|
- contractNo = orgContractNo + "-SOO1";
|
|
|
|
|
|
|
+ contractNo = orgContractNo + "-S001";
|
|
|
contractBO.set("NO", contractNo);
|
|
contractBO.set("NO", contractNo);
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
@@ -167,8 +167,7 @@ public class contractService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (idApply)
|
|
|
|
|
- SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_APPLY", contractBO);//更新合同
|
|
|
|
|
|
|
+ if (idApply) SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_APPLY", contractBO);//更新合同
|
|
|
else {
|
|
else {
|
|
|
dn.recordFormChanges.record(uc, contractBO, "合同编辑");
|
|
dn.recordFormChanges.record(uc, contractBO, "合同编辑");
|
|
|
SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT", contractBO);
|
|
SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT", contractBO);
|
|
@@ -198,7 +197,8 @@ public class contractService {
|
|
|
//更新合同产品上面的客户ID
|
|
//更新合同产品上面的客户ID
|
|
|
DBSql.update("update BO_EU_DNCTT_CONTRACT_COST set ACCOUNT_ID=?,BILL_ACCOUNT_ID=? where CONTRACT_ID=?", new Object[]{dto.getString("ACCOUNT_ID"), dto.getString("BILL_ACCOUNT_ID"), dto.getString("ID")});
|
|
DBSql.update("update BO_EU_DNCTT_CONTRACT_COST set ACCOUNT_ID=?,BILL_ACCOUNT_ID=? where CONTRACT_ID=?", new Object[]{dto.getString("ACCOUNT_ID"), dto.getString("BILL_ACCOUNT_ID"), dto.getString("ID")});
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+//2025年11月3日 新增服务后,不再自动生成服务周期
|
|
|
|
|
+/*
|
|
|
if (TYPE_ID.equals(cttConstant.CONTRACT_TYPE_SERVICE)) // 如果是服务合同
|
|
if (TYPE_ID.equals(cttConstant.CONTRACT_TYPE_SERVICE)) // 如果是服务合同
|
|
|
{
|
|
{
|
|
|
try {
|
|
try {
|
|
@@ -227,7 +227,7 @@ public class contractService {
|
|
|
return resultDto;
|
|
return resultDto;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+*/
|
|
|
resultDto.put("success", true);
|
|
resultDto.put("success", true);
|
|
|
|
|
|
|
|
return resultDto;
|
|
return resultDto;
|
|
@@ -1106,10 +1106,13 @@ public class contractService {
|
|
|
LocalDate START_DATE = getLocalDate(contract.get("START_DATE"));//服务开始日期
|
|
LocalDate START_DATE = getLocalDate(contract.get("START_DATE"));//服务开始日期
|
|
|
LocalDate END_DATE = getLocalDate(contract.get("END_DATE"));//合同结束日期
|
|
LocalDate END_DATE = getLocalDate(contract.get("END_DATE"));//合同结束日期
|
|
|
LocalDate EFFECTIVE_DATE = getLocalDate(service.get("EFFECTIVE_DATE"));//服务生效日期
|
|
LocalDate EFFECTIVE_DATE = getLocalDate(service.get("EFFECTIVE_DATE"));//服务生效日期
|
|
|
|
|
+ if (END_DATE == null) {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
//已经审批并提交则不能重新生成服务
|
|
//已经审批并提交则不能重新生成服务
|
|
|
if (DBSql.getInt("SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE APPROVE_AND_POST_USER_ID IS NOT NULL AND LENGTH(APPROVE_AND_POST_USER_ID)>1 AND APPROVE_AND_POST_DATE IS NOT NULL AND BINDID=? and CONTRACT_ID=? and CONTRACT_SERVICE_ID=? ", new Object[]{service.get("BINDID"), contract.get("ID"), service.get("ID")}) > 0) {
|
|
if (DBSql.getInt("SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE APPROVE_AND_POST_USER_ID IS NOT NULL AND LENGTH(APPROVE_AND_POST_USER_ID)>1 AND APPROVE_AND_POST_DATE IS NOT NULL AND BINDID=? and CONTRACT_ID=? and CONTRACT_SERVICE_ID=? ", new Object[]{service.get("BINDID"), contract.get("ID"), service.get("ID")}) > 0) {
|
|
|
- return true;
|
|
|
|
|
|
|
+ return false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//删除历史数据
|
|
//删除历史数据
|
|
@@ -1145,87 +1148,86 @@ public class contractService {
|
|
|
|
|
|
|
|
List<PeriodCalculationUtil.Period> periodList = PeriodCalculationUtil.getPeriodListByConfig(PERIOD_TYPE, START_DATE, EFFECTIVE_DATE, END_DATE, service.getString("CALC_METHOD_1STPERIOD"), service.getString("CALC_METHOD_1STYEAR"), service.getString("MONTH_1STQUARTER"));
|
|
List<PeriodCalculationUtil.Period> periodList = PeriodCalculationUtil.getPeriodListByConfig(PERIOD_TYPE, START_DATE, EFFECTIVE_DATE, END_DATE, service.getString("CALC_METHOD_1STPERIOD"), service.getString("CALC_METHOD_1STYEAR"), service.getString("MONTH_1STQUARTER"));
|
|
|
|
|
|
|
|
|
|
+ if (periodList != null && periodList.size() > 0) {
|
|
|
|
|
+ String PERIOD = periodList.get(0).getPeriodBeginDateStr() + "~" + periodList.get(periodList.size() - 1).getPeriodEndDateStr();
|
|
|
|
|
+ int i = 0;
|
|
|
|
|
+ for (PeriodCalculationUtil.Period period : periodList) {
|
|
|
|
|
|
|
|
- String PERIOD = periodList.get(0).getPeriodBeginDateStr() + "~" + periodList.get(periodList.size() - 1).getPeriodEndDateStr();
|
|
|
|
|
-
|
|
|
|
|
- int i = 0;
|
|
|
|
|
- for (PeriodCalculationUtil.Period period : periodList) {
|
|
|
|
|
-
|
|
|
|
|
- i++;
|
|
|
|
|
- BO csp = new BO();//服务周期
|
|
|
|
|
- csp.set("CONTRACT_ID", contract.get("ID"));
|
|
|
|
|
- csp.set("OBJECT_ID", service.get("OBJECT_ID"));
|
|
|
|
|
- csp.set("OBJECT_TYPE", service.get("OBJECT_TYPE"));
|
|
|
|
|
- csp.set("CONTRACT_SERVICE_ID", service.get("ID"));
|
|
|
|
|
|
|
+ i++;
|
|
|
|
|
+ BO csp = new BO();//服务周期
|
|
|
|
|
+ csp.set("CONTRACT_ID", contract.get("ID"));
|
|
|
|
|
+ csp.set("OBJECT_ID", service.get("OBJECT_ID"));
|
|
|
|
|
+ csp.set("OBJECT_TYPE", service.get("OBJECT_TYPE"));
|
|
|
|
|
+ csp.set("CONTRACT_SERVICE_ID", service.get("ID"));
|
|
|
|
|
|
|
|
- csp.set("PERIOD_BEGIN_DATE", period.getPeriodBeginDateStr());
|
|
|
|
|
- csp.set("PERIOD_END_DATE", period.getPeriodEndDateStr());
|
|
|
|
|
|
|
+ csp.set("PERIOD_BEGIN_DATE", period.getPeriodBeginDateStr());
|
|
|
|
|
+ csp.set("PERIOD_END_DATE", period.getPeriodEndDateStr());
|
|
|
|
|
|
|
|
- csp.set("QUANTITY", service.get("QUANTITY"));
|
|
|
|
|
|
|
+ csp.set("QUANTITY", service.get("QUANTITY"));
|
|
|
|
|
|
|
|
- //首月总价需要单独计算 613 按年支付 4591 开通日期所在月
|
|
|
|
|
- if (i == 1 && service.get("CALC_METHOD_1STPERIOD").equals("4591")) {
|
|
|
|
|
- //firstRate<1
|
|
|
|
|
- if (period.getRate().compareTo(BigDecimal.ONE) < 0) {
|
|
|
|
|
|
|
+ //首月总价需要单独计算 613 按年支付 4591 开通日期所在月
|
|
|
|
|
+ if (i == 1 && service.get("CALC_METHOD_1STPERIOD").equals("4591")) {
|
|
|
|
|
+ //firstRate<1
|
|
|
|
|
+ if (period.getRate().compareTo(BigDecimal.ONE) < 0) {
|
|
|
|
|
|
|
|
- //首月成本需要单独计算
|
|
|
|
|
- BigDecimal UNIT_PRICE_1STMONTH = toBigDecimal(service.get("UNIT_PRICE_1STMONTH"));
|
|
|
|
|
- UNIT_PRICE_1STMONTH = period.getRate().multiply(BigDecimal.valueOf(12)).multiply(UNIT_PRICE_1STMONTH);
|
|
|
|
|
- csp.set("PERIOD_PRICE", UNIT_PRICE_1STMONTH);
|
|
|
|
|
|
|
+ //首月成本需要单独计算
|
|
|
|
|
+ BigDecimal UNIT_PRICE_1STMONTH = toBigDecimal(service.get("UNIT_PRICE_1STMONTH"));
|
|
|
|
|
+ UNIT_PRICE_1STMONTH = period.getRate().multiply(BigDecimal.valueOf(12)).multiply(UNIT_PRICE_1STMONTH);
|
|
|
|
|
+ csp.set("PERIOD_PRICE", UNIT_PRICE_1STMONTH);
|
|
|
|
|
|
|
|
- //首期成本怎么算? 在同一个月 和不在 同一个月
|
|
|
|
|
- LocalDate PURCHASE_START_DATE = service.get("PURCHASE_START_DATE", LocalDate.class);
|
|
|
|
|
|
|
+ //首期成本怎么算? 在同一个月 和不在 同一个月
|
|
|
|
|
+ LocalDate PURCHASE_START_DATE = service.get("PURCHASE_START_DATE", LocalDate.class);
|
|
|
|
|
|
|
|
- if (EFFECTIVE_DATE.format(DateTimeFormatter.ofPattern("yyyyMM")).equals(PURCHASE_START_DATE.format(DateTimeFormatter.ofPattern("yyyyMM")))) {
|
|
|
|
|
- BigDecimal UNIT_COST_1STMONTH = toBigDecimal(service.get("UNIT_COST_1STMONTH"));
|
|
|
|
|
- UNIT_COST_1STMONTH = period.getRate().multiply(BigDecimal.valueOf(12)).multiply(UNIT_COST_1STMONTH);
|
|
|
|
|
- csp.set("PERIOD_COST", period.getRate().multiply(UNIT_COST_1STMONTH));
|
|
|
|
|
|
|
+ if (EFFECTIVE_DATE.format(DateTimeFormatter.ofPattern("yyyyMM")).equals(PURCHASE_START_DATE.format(DateTimeFormatter.ofPattern("yyyyMM")))) {
|
|
|
|
|
+ BigDecimal UNIT_COST_1STMONTH = toBigDecimal(service.get("UNIT_COST_1STMONTH"));
|
|
|
|
|
+ UNIT_COST_1STMONTH = period.getRate().multiply(BigDecimal.valueOf(12)).multiply(UNIT_COST_1STMONTH);
|
|
|
|
|
+ csp.set("PERIOD_COST", period.getRate().multiply(UNIT_COST_1STMONTH));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ csp.set("PERIOD_COST", period.getRate().multiply(SERVICE_TOTAL_COST));
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ csp.set("PERIOD_PRICE", period.getRate().multiply(SERVICE_TOTAL_PRICE));
|
|
|
csp.set("PERIOD_COST", period.getRate().multiply(SERVICE_TOTAL_COST));
|
|
csp.set("PERIOD_COST", period.getRate().multiply(SERVICE_TOTAL_COST));
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
} else {
|
|
} else {
|
|
|
csp.set("PERIOD_PRICE", period.getRate().multiply(SERVICE_TOTAL_PRICE));
|
|
csp.set("PERIOD_PRICE", period.getRate().multiply(SERVICE_TOTAL_PRICE));
|
|
|
|
|
+
|
|
|
csp.set("PERIOD_COST", period.getRate().multiply(SERVICE_TOTAL_COST));
|
|
csp.set("PERIOD_COST", period.getRate().multiply(SERVICE_TOTAL_COST));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- } else {
|
|
|
|
|
- csp.set("PERIOD_PRICE", period.getRate().multiply(SERVICE_TOTAL_PRICE));
|
|
|
|
|
-
|
|
|
|
|
- csp.set("PERIOD_COST", period.getRate().multiply(SERVICE_TOTAL_COST));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- csp.set("PERIOD_ADJUSTED_PRICE", csp.get("PERIOD_PRICE"));
|
|
|
|
|
|
|
+ csp.set("PERIOD_ADJUSTED_PRICE", csp.get("PERIOD_PRICE"));
|
|
|
|
|
|
|
|
- csp.set("PARTYA_PERIOD_PRICE", multiply(service.get("PARTYA_TOTAL_PRICE"), period.getRate()));//三方合同甲方含税总价
|
|
|
|
|
|
|
+ csp.set("PARTYA_PERIOD_PRICE", multiply(service.get("PARTYA_TOTAL_PRICE"), period.getRate()));//三方合同甲方含税总价
|
|
|
|
|
|
|
|
- csp.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
|
|
- csp.setBindId(service.getString("BINDID"));
|
|
|
|
|
- SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD", csp, uc, conn);
|
|
|
|
|
|
|
+ csp.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
|
|
+ csp.setBindId(service.getString("BINDID"));
|
|
|
|
|
+ SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD", csp, uc, conn);
|
|
|
|
|
|
|
|
|
|
|
|
|
- if (service.getString("OBJECT_TYPE").equals("2"))//服务包
|
|
|
|
|
- {
|
|
|
|
|
- //本周期成本
|
|
|
|
|
- String prorated_cost_change = DBSql.getString(conn, "select UNIT_COST from BO_EU_DNIVT_SERVICE where ID=?", new Object[]{service.getString("OBJECT_ID")});//供应商账号
|
|
|
|
|
- if (sbsList != null) {
|
|
|
|
|
- for (String sbs : sbsList) {
|
|
|
|
|
- BO cspbs = new BO();
|
|
|
|
|
- cspbs.set("CONTRACT_SERVICE_PERIOD_ID", csp.getId());
|
|
|
|
|
- cspbs.set("SERVICE_ID", sbs);
|
|
|
|
|
- cspbs.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
|
|
- cspbs.set("PERIOD_COST", prorated_cost_change);
|
|
|
|
|
- cspbs.setBindId(service.getString("BINDID"));
|
|
|
|
|
- SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD_BUNDLE_SERVICE", cspbs, uc, conn);
|
|
|
|
|
|
|
+ if (service.getString("OBJECT_TYPE").equals("2"))//服务包
|
|
|
|
|
+ {
|
|
|
|
|
+ //本周期成本
|
|
|
|
|
+ String prorated_cost_change = DBSql.getString(conn, "select UNIT_COST from BO_EU_DNIVT_SERVICE where ID=?", new Object[]{service.getString("OBJECT_ID")});//供应商账号
|
|
|
|
|
+ if (sbsList != null) {
|
|
|
|
|
+ for (String sbs : sbsList) {
|
|
|
|
|
+ BO cspbs = new BO();
|
|
|
|
|
+ cspbs.set("CONTRACT_SERVICE_PERIOD_ID", csp.getId());
|
|
|
|
|
+ cspbs.set("SERVICE_ID", sbs);
|
|
|
|
|
+ cspbs.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
|
|
+ cspbs.set("PERIOD_COST", prorated_cost_change);
|
|
|
|
|
+ cspbs.setBindId(service.getString("BINDID"));
|
|
|
|
|
+ SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD_BUNDLE_SERVICE", cspbs, uc, conn);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //更新合同服务上的
|
|
|
|
|
- DBSql.update(conn, "update BO_EU_DNCTT_CONTRACT_SERVICE set PERIOD=?,ADJUST_PERIOD=? where ID=? and BINDID=?", new Object[]{PERIOD, StringUtils.EMPTY, service.get("ID"), service.get("BINDID")});
|
|
|
|
|
- service.set("PERIOD", PERIOD);
|
|
|
|
|
- service.set("ADJUST_PERIOD", StringUtils.EMPTY);
|
|
|
|
|
|
|
|
|
|
|
|
+ //更新合同服务上的
|
|
|
|
|
+ DBSql.update(conn, "update BO_EU_DNCTT_CONTRACT_SERVICE set PERIOD=?,ADJUST_PERIOD=? where ID=? and BINDID=?", new Object[]{PERIOD, StringUtils.EMPTY, service.get("ID"), service.get("BINDID")});
|
|
|
|
|
+ service.set("PERIOD", PERIOD);
|
|
|
|
|
+ service.set("ADJUST_PERIOD", StringUtils.EMPTY);
|
|
|
|
|
+ }
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1239,6 +1241,7 @@ public class contractService {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public boolean ServiceAdjustEndDate(UserContext uc, BO service, LocalDate END_DATE, Connection conn) {
|
|
public boolean ServiceAdjustEndDate(UserContext uc, BO service, LocalDate END_DATE, Connection conn) {
|
|
|
|
|
+ if (END_DATE == null) return true;
|
|
|
|
|
|
|
|
String PERIOD_TYPE = service.getString("PERIOD_TYPE");//服务周期类型
|
|
String PERIOD_TYPE = service.getString("PERIOD_TYPE");//服务周期类型
|
|
|
//已经审批并提交则不能重新生成服务
|
|
//已经审批并提交则不能重新生成服务
|
|
@@ -1838,104 +1841,78 @@ public class contractService {
|
|
|
List<BO> serviceList2 = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE").connection(conn).addQuery("BINDID !=", contract.get("BINDID")).addQuery("CONTRACT_ID =", contract.get("ID")).list();
|
|
List<BO> serviceList2 = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE").connection(conn).addQuery("BINDID !=", contract.get("BINDID")).addQuery("CONTRACT_ID =", contract.get("ID")).list();
|
|
|
|
|
|
|
|
if (serviceList == null) serviceList = new ArrayList<BO>();
|
|
if (serviceList == null) serviceList = new ArrayList<BO>();
|
|
|
- if (serviceList2 != null && serviceList2.size() > 0)
|
|
|
|
|
- for (BO service : serviceList2) {
|
|
|
|
|
- serviceList.add(service);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (serviceList2 != null && serviceList2.size() > 0) for (BO service : serviceList2) {
|
|
|
|
|
+ serviceList.add(service);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
for (BO service : serviceList) {
|
|
for (BO service : serviceList) {
|
|
|
|
|
+ AddContractServiceProductOne(uc, contract, service, conn);
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- String PRODUCT_ID = null;
|
|
|
|
|
- if (service.getString("OBJECT_TYPE").equals("2"))//服务包
|
|
|
|
|
- {
|
|
|
|
|
- // String serviceIDS = DBSql.getString(conn, "select SERVICE_ID from BO_EU_DNIVT_SERVICE_BUNDLE where ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
|
|
- RowMap serviceBUNDLE = DBSql.getMap(conn, "SELECT SERVICE_ID,UNIT_COST,UNIT_PRICE FROM BO_EU_DNIVT_SERVICE_BUNDLE WHERE ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
|
|
- String serviceIDS = serviceBUNDLE.getString("SERVICE_ID");
|
|
|
|
|
|
|
|
|
|
- Double BUNDLE_UNIT_COST = serviceBUNDLE.getDouble("UNIT_COST");
|
|
|
|
|
- Double BUNDLE_UNIT_PRICE = serviceBUNDLE.getDouble("UNIT_PRICE");
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 增加服务产品
|
|
|
|
|
+ * @param uc
|
|
|
|
|
+ * @param contract
|
|
|
|
|
+ * @param service
|
|
|
|
|
+ * @param conn
|
|
|
|
|
+ * @return
|
|
|
|
|
+ * @throws SQLException
|
|
|
|
|
+ */
|
|
|
|
|
+ public boolean AddContractServiceProductOne(UserContext uc, RowMap contract, BO service, Connection conn) throws SQLException {
|
|
|
|
|
|
|
|
- List<RowMap> ivtServiceList = DBSql.getMaps(conn, "select ID,UNIT_COST,UNIT_PRICE from BO_EU_DNIVT_SERVICE where FIND_IN_SET(ID,?)", new Object[]{serviceIDS});
|
|
|
|
|
|
|
+ String PRODUCT_ID = null;
|
|
|
|
|
+ if (service.getString("OBJECT_TYPE").equals("2"))//服务包
|
|
|
|
|
+ {
|
|
|
|
|
+ // String serviceIDS = DBSql.getString(conn, "select SERVICE_ID from BO_EU_DNIVT_SERVICE_BUNDLE where ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
|
|
+ RowMap serviceBUNDLE = DBSql.getMap(conn, "SELECT SERVICE_ID,UNIT_COST,UNIT_PRICE FROM BO_EU_DNIVT_SERVICE_BUNDLE WHERE ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
|
|
+ String serviceIDS = serviceBUNDLE.getString("SERVICE_ID");
|
|
|
|
|
|
|
|
- RowMap ivtServiceSum = DBSql.getMap(conn, "SELECT SUM(UNIT_COST) AS SUM_COST,SUM(UNIT_PRICE) AS SUM_PRICE FROM BO_EU_DNIVT_SERVICE where FIND_IN_SET(ID,?)", new Object[]{serviceIDS});
|
|
|
|
|
|
|
+ Double BUNDLE_UNIT_COST = serviceBUNDLE.getDouble("UNIT_COST");
|
|
|
|
|
+ Double BUNDLE_UNIT_PRICE = serviceBUNDLE.getDouble("UNIT_PRICE");
|
|
|
|
|
|
|
|
- Map<String, Double> unitPriceMap = new HashMap<String, Double>();
|
|
|
|
|
- Map<String, Double> unitCostMap = new HashMap<String, Double>();
|
|
|
|
|
- for (RowMap ivtService : ivtServiceList) {
|
|
|
|
|
- Double UNIT_PRICE = ivtService.getDouble("UNIT_PRICE");
|
|
|
|
|
- Double UNIT_COST = ivtService.getDouble("UNIT_COST");
|
|
|
|
|
|
|
+ List<RowMap> ivtServiceList = DBSql.getMaps(conn, "select ID,UNIT_COST,UNIT_PRICE from BO_EU_DNIVT_SERVICE where FIND_IN_SET(ID,?)", new Object[]{serviceIDS});
|
|
|
|
|
|
|
|
- UNIT_PRICE = ivtServiceSum.getDouble("SUM_PRICE") == 0 ? 0.0 : BUNDLE_UNIT_PRICE * UNIT_PRICE / ivtServiceSum.getDouble("SUM_PRICE");
|
|
|
|
|
- unitPriceMap.put(ivtService.getString("ID"), UNIT_PRICE);
|
|
|
|
|
|
|
+ RowMap ivtServiceSum = DBSql.getMap(conn, "SELECT SUM(UNIT_COST) AS SUM_COST,SUM(UNIT_PRICE) AS SUM_PRICE FROM BO_EU_DNIVT_SERVICE where FIND_IN_SET(ID,?)", new Object[]{serviceIDS});
|
|
|
|
|
|
|
|
- UNIT_COST = ivtServiceSum.getDouble("SUM_COST") == 0 ? 0.0 : BUNDLE_UNIT_COST * UNIT_COST / ivtServiceSum.getDouble("SUM_COST");
|
|
|
|
|
- unitCostMap.put(ivtService.getString("ID"), UNIT_COST);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ Map<String, Double> unitPriceMap = new HashMap<String, Double>();
|
|
|
|
|
+ Map<String, Double> unitCostMap = new HashMap<String, Double>();
|
|
|
|
|
+ for (RowMap ivtService : ivtServiceList) {
|
|
|
|
|
+ Double UNIT_PRICE = ivtService.getDouble("UNIT_PRICE");
|
|
|
|
|
+ Double UNIT_COST = ivtService.getDouble("UNIT_COST");
|
|
|
|
|
|
|
|
- for (String serviceID : serviceIDS.split(",")) {
|
|
|
|
|
- String contractCostId = DBSql.getString(conn, "select ID from BO_EU_DNCTT_CONTRACT_COST where IS_SERVICE_PRODUCT=1 AND CONTRACT_ID=? and SERVICE_ID=? and PRODUCT_ID in(select PRODUCT_ID from BO_EU_DNIVT_SERVICE where ID=?)", new Object[]{contract.getString("ID"), service.getString("ID"), serviceID});
|
|
|
|
|
-
|
|
|
|
|
- String NEED_PURCHASE = service.getString("NEED_PURCHASE");
|
|
|
|
|
- if (NEED_PURCHASE.equals("1")) {
|
|
|
|
|
- Map<String, String> contractCost = new HashMap<String, String>();
|
|
|
|
|
- contractCost.put("ID", contractCostId);
|
|
|
|
|
- contractCost.put("SERVICE_ID", service.getString("ID"));
|
|
|
|
|
- contractCost.put("SERVICE_NAME", service.getString("NAME"));
|
|
|
|
|
- contractCost.put("serviceID", serviceID);
|
|
|
|
|
- contractCost.put("CONTRACT_ID", contract.getString("ID"));
|
|
|
|
|
- contractCost.put("QUANTITY", service.getString("QUANTITY"));
|
|
|
|
|
-
|
|
|
|
|
- contractCost.put("UNIT_PRICE", String.valueOf(unitPriceMap.get(serviceID)));
|
|
|
|
|
- contractCost.put("UNIT_COST", String.valueOf(unitCostMap.get(serviceID)));
|
|
|
|
|
-
|
|
|
|
|
- //采购
|
|
|
|
|
- contractCost.put("PURCHASE_PERIOD_TYPE", service.getString("PURCHASE_PERIOD_TYPE"));//采购周期
|
|
|
|
|
- String PURCHASE_START_DATE = service.getString("PURCHASE_START_DATE");
|
|
|
|
|
- if (StringUtils.isBlank(PURCHASE_START_DATE))
|
|
|
|
|
- PURCHASE_START_DATE = contract.getString("START_DATE");
|
|
|
|
|
-
|
|
|
|
|
- contractCost.put("PURCHASE_START_DATE", PURCHASE_START_DATE);//采购开始日期
|
|
|
|
|
- contractCost.put("CONTRACT_START_DATE", contract.getString("START_DATE"));
|
|
|
|
|
- contractCost.put("CONTRACT_END_DATE", contract.getString("END_DATE"));//采购结束日期
|
|
|
|
|
-
|
|
|
|
|
- contractCost.put("PURCHASE_CALC_METHOD_1STPERIOD", service.getString("PURCHASE_CALC_METHOD_1STPERIOD"));
|
|
|
|
|
- contractCost.put("CALC_METHOD_1STYEAR", service.getString("CALC_METHOD_1STYEAR"));
|
|
|
|
|
- contractCost.put("MONTH_1STQUARTER", service.getString("MONTH_1STQUARTER"));
|
|
|
|
|
-
|
|
|
|
|
- PRODUCT_ID = AddContractServiceProduct(uc, conn, contractCost);
|
|
|
|
|
- } else {
|
|
|
|
|
- //是否 删除 contractCostId 没有采购 没有拣货时可删除
|
|
|
|
|
- if (DBSql.getInt(conn, "select count(*) from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where CONTRACT_COST_ID=?", new Object[]{contractCostId}) == 0 && DBSql.getInt(conn, "select count(*) from BO_EU_DNIVT_ORDER_PRODUCT where CONTRACT_COST_ID=?", new Object[]{contractCostId}) == 0) {
|
|
|
|
|
- String contractCostBINDId = DBSql.getString(conn, "select BINDID from BO_EU_DNCTT_CONTRACT_COST where ID=?", new Object[]{contractCostId});
|
|
|
|
|
- SDK.getProcessAPI().deleteById(contractCostBINDId, uc.getUID());
|
|
|
|
|
- DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_COST where ID=?", new Object[]{contractCostId});
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ UNIT_PRICE = ivtServiceSum.getDouble("SUM_PRICE") == 0 ? 0.0 : BUNDLE_UNIT_PRICE * UNIT_PRICE / ivtServiceSum.getDouble("SUM_PRICE");
|
|
|
|
|
+ unitPriceMap.put(ivtService.getString("ID"), UNIT_PRICE);
|
|
|
|
|
+
|
|
|
|
|
+ UNIT_COST = ivtServiceSum.getDouble("SUM_COST") == 0 ? 0.0 : BUNDLE_UNIT_COST * UNIT_COST / ivtServiceSum.getDouble("SUM_COST");
|
|
|
|
|
+ unitCostMap.put(ivtService.getString("ID"), UNIT_COST);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for (String serviceID : serviceIDS.split(",")) {
|
|
|
|
|
+ String contractCostId = DBSql.getString(conn, "select ID from BO_EU_DNCTT_CONTRACT_COST where IS_SERVICE_PRODUCT=1 AND CONTRACT_ID=? and SERVICE_ID=? and PRODUCT_ID in(select PRODUCT_ID from BO_EU_DNIVT_SERVICE where ID=?)", new Object[]{contract.getString("ID"), service.getString("ID"), serviceID});
|
|
|
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- String contractCostId = DBSql.getString(conn, "select ID from BO_EU_DNCTT_CONTRACT_COST where IS_SERVICE_PRODUCT=1 AND CONTRACT_ID=? and SERVICE_ID=?", new Object[]{contract.getString("ID"), service.getString("ID")});
|
|
|
|
|
String NEED_PURCHASE = service.getString("NEED_PURCHASE");
|
|
String NEED_PURCHASE = service.getString("NEED_PURCHASE");
|
|
|
if (NEED_PURCHASE.equals("1")) {
|
|
if (NEED_PURCHASE.equals("1")) {
|
|
|
Map<String, String> contractCost = new HashMap<String, String>();
|
|
Map<String, String> contractCost = new HashMap<String, String>();
|
|
|
contractCost.put("ID", contractCostId);
|
|
contractCost.put("ID", contractCostId);
|
|
|
contractCost.put("SERVICE_ID", service.getString("ID"));
|
|
contractCost.put("SERVICE_ID", service.getString("ID"));
|
|
|
contractCost.put("SERVICE_NAME", service.getString("NAME"));
|
|
contractCost.put("SERVICE_NAME", service.getString("NAME"));
|
|
|
- contractCost.put("serviceID", service.getString("OBJECT_ID"));
|
|
|
|
|
|
|
+ contractCost.put("serviceID", serviceID);
|
|
|
contractCost.put("CONTRACT_ID", contract.getString("ID"));
|
|
contractCost.put("CONTRACT_ID", contract.getString("ID"));
|
|
|
contractCost.put("QUANTITY", service.getString("QUANTITY"));
|
|
contractCost.put("QUANTITY", service.getString("QUANTITY"));
|
|
|
|
|
|
|
|
- contractCost.put("UNIT_PRICE", service.getString("UNIT_PRICE"));
|
|
|
|
|
- contractCost.put("UNIT_COST", service.getString("UNIT_COST"));
|
|
|
|
|
|
|
+ contractCost.put("UNIT_PRICE", String.valueOf(unitPriceMap.get(serviceID)));
|
|
|
|
|
+ contractCost.put("UNIT_COST", String.valueOf(unitCostMap.get(serviceID)));
|
|
|
|
|
|
|
|
//采购
|
|
//采购
|
|
|
contractCost.put("PURCHASE_PERIOD_TYPE", service.getString("PURCHASE_PERIOD_TYPE"));//采购周期
|
|
contractCost.put("PURCHASE_PERIOD_TYPE", service.getString("PURCHASE_PERIOD_TYPE"));//采购周期
|
|
|
-
|
|
|
|
|
String PURCHASE_START_DATE = service.getString("PURCHASE_START_DATE");
|
|
String PURCHASE_START_DATE = service.getString("PURCHASE_START_DATE");
|
|
|
if (StringUtils.isBlank(PURCHASE_START_DATE))
|
|
if (StringUtils.isBlank(PURCHASE_START_DATE))
|
|
|
PURCHASE_START_DATE = contract.getString("START_DATE");
|
|
PURCHASE_START_DATE = contract.getString("START_DATE");
|
|
|
- contractCost.put("PURCHASE_START_DATE", PURCHASE_START_DATE);//采购开始日期
|
|
|
|
|
|
|
|
|
|
|
|
+ contractCost.put("PURCHASE_START_DATE", PURCHASE_START_DATE);//采购开始日期
|
|
|
contractCost.put("CONTRACT_START_DATE", contract.getString("START_DATE"));
|
|
contractCost.put("CONTRACT_START_DATE", contract.getString("START_DATE"));
|
|
|
contractCost.put("CONTRACT_END_DATE", contract.getString("END_DATE"));//采购结束日期
|
|
contractCost.put("CONTRACT_END_DATE", contract.getString("END_DATE"));//采购结束日期
|
|
|
|
|
|
|
@@ -1945,21 +1922,63 @@ public class contractService {
|
|
|
|
|
|
|
|
PRODUCT_ID = AddContractServiceProduct(uc, conn, contractCost);
|
|
PRODUCT_ID = AddContractServiceProduct(uc, conn, contractCost);
|
|
|
} else {
|
|
} else {
|
|
|
- //是否 删除 contractCostId
|
|
|
|
|
//是否 删除 contractCostId 没有采购 没有拣货时可删除
|
|
//是否 删除 contractCostId 没有采购 没有拣货时可删除
|
|
|
if (DBSql.getInt(conn, "select count(*) from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where CONTRACT_COST_ID=?", new Object[]{contractCostId}) == 0 && DBSql.getInt(conn, "select count(*) from BO_EU_DNIVT_ORDER_PRODUCT where CONTRACT_COST_ID=?", new Object[]{contractCostId}) == 0) {
|
|
if (DBSql.getInt(conn, "select count(*) from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where CONTRACT_COST_ID=?", new Object[]{contractCostId}) == 0 && DBSql.getInt(conn, "select count(*) from BO_EU_DNIVT_ORDER_PRODUCT where CONTRACT_COST_ID=?", new Object[]{contractCostId}) == 0) {
|
|
|
String contractCostBINDId = DBSql.getString(conn, "select BINDID from BO_EU_DNCTT_CONTRACT_COST where ID=?", new Object[]{contractCostId});
|
|
String contractCostBINDId = DBSql.getString(conn, "select BINDID from BO_EU_DNCTT_CONTRACT_COST where ID=?", new Object[]{contractCostId});
|
|
|
SDK.getProcessAPI().deleteById(contractCostBINDId, uc.getUID());
|
|
SDK.getProcessAPI().deleteById(contractCostBINDId, uc.getUID());
|
|
|
DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_COST where ID=?", new Object[]{contractCostId});
|
|
DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_COST where ID=?", new Object[]{contractCostId});
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ String contractCostId = DBSql.getString(conn, "select ID from BO_EU_DNCTT_CONTRACT_COST where IS_SERVICE_PRODUCT=1 AND CONTRACT_ID=? and SERVICE_ID=?", new Object[]{contract.getString("ID"), service.getString("ID")});
|
|
|
|
|
+ String NEED_PURCHASE = service.getString("NEED_PURCHASE");
|
|
|
|
|
+ if (NEED_PURCHASE.equals("1")) {
|
|
|
|
|
+ Map<String, String> contractCost = new HashMap<String, String>();
|
|
|
|
|
+ contractCost.put("ID", contractCostId);
|
|
|
|
|
+ contractCost.put("SERVICE_ID", service.getString("ID"));
|
|
|
|
|
+ contractCost.put("SERVICE_NAME", service.getString("NAME"));
|
|
|
|
|
+ contractCost.put("serviceID", service.getString("OBJECT_ID"));
|
|
|
|
|
+ contractCost.put("CONTRACT_ID", contract.getString("ID"));
|
|
|
|
|
+ contractCost.put("QUANTITY", service.getString("QUANTITY"));
|
|
|
|
|
+
|
|
|
|
|
+ contractCost.put("UNIT_PRICE", service.getString("UNIT_PRICE"));
|
|
|
|
|
+ contractCost.put("UNIT_COST", service.getString("UNIT_COST"));
|
|
|
|
|
+
|
|
|
|
|
+ //采购
|
|
|
|
|
+ contractCost.put("PURCHASE_PERIOD_TYPE", service.getString("PURCHASE_PERIOD_TYPE"));//采购周期
|
|
|
|
|
+
|
|
|
|
|
+ String PURCHASE_START_DATE = service.getString("PURCHASE_START_DATE");
|
|
|
|
|
+ if (StringUtils.isBlank(PURCHASE_START_DATE))
|
|
|
|
|
+ PURCHASE_START_DATE = contract.getString("START_DATE");
|
|
|
|
|
+ contractCost.put("PURCHASE_START_DATE", PURCHASE_START_DATE);//采购开始日期
|
|
|
|
|
+
|
|
|
|
|
+ contractCost.put("CONTRACT_START_DATE", contract.getString("START_DATE"));
|
|
|
|
|
+ contractCost.put("CONTRACT_END_DATE", contract.getString("END_DATE"));//采购结束日期
|
|
|
|
|
+
|
|
|
|
|
+ contractCost.put("PURCHASE_CALC_METHOD_1STPERIOD", service.getString("PURCHASE_CALC_METHOD_1STPERIOD"));
|
|
|
|
|
+ contractCost.put("CALC_METHOD_1STYEAR", service.getString("CALC_METHOD_1STYEAR"));
|
|
|
|
|
+ contractCost.put("MONTH_1STQUARTER", service.getString("MONTH_1STQUARTER"));
|
|
|
|
|
+
|
|
|
|
|
+ PRODUCT_ID = AddContractServiceProduct(uc, conn, contractCost);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //是否 删除 contractCostId
|
|
|
|
|
+ //是否 删除 contractCostId 没有采购 没有拣货时可删除
|
|
|
|
|
+ if (DBSql.getInt(conn, "select count(*) from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where CONTRACT_COST_ID=?", new Object[]{contractCostId}) == 0 && DBSql.getInt(conn, "select count(*) from BO_EU_DNIVT_ORDER_PRODUCT where CONTRACT_COST_ID=?", new Object[]{contractCostId}) == 0) {
|
|
|
|
|
+ String contractCostBINDId = DBSql.getString(conn, "select BINDID from BO_EU_DNCTT_CONTRACT_COST where ID=?", new Object[]{contractCostId});
|
|
|
|
|
+ SDK.getProcessAPI().deleteById(contractCostBINDId, uc.getUID());
|
|
|
|
|
+ DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_COST where ID=?", new Object[]{contractCostId});
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 一个服务对应添加一个合同产品
|
|
* 一个服务对应添加一个合同产品
|
|
|
* @param uc
|
|
* @param uc
|
|
@@ -2036,43 +2055,42 @@ public class contractService {
|
|
|
|
|
|
|
|
List<PeriodCalculationUtil.Period> periodList = PeriodCalculationUtil.getPeriodListByConfig(service.get("PURCHASE_PERIOD_TYPE"), LocalDate.parse(service.get("CONTRACT_START_DATE").substring(0, 10)), LocalDate.parse(service.get("PURCHASE_START_DATE").substring(0, 10)), LocalDate.parse(service.get("CONTRACT_END_DATE").substring(0, 10)), service.get("PURCHASE_CALC_METHOD_1STPERIOD"), service.get("CALC_METHOD_1STYEAR"), service.get("MONTH_1STQUARTER"));
|
|
List<PeriodCalculationUtil.Period> periodList = PeriodCalculationUtil.getPeriodListByConfig(service.get("PURCHASE_PERIOD_TYPE"), LocalDate.parse(service.get("CONTRACT_START_DATE").substring(0, 10)), LocalDate.parse(service.get("PURCHASE_START_DATE").substring(0, 10)), LocalDate.parse(service.get("CONTRACT_END_DATE").substring(0, 10)), service.get("PURCHASE_CALC_METHOD_1STPERIOD"), service.get("CALC_METHOD_1STYEAR"), service.get("MONTH_1STQUARTER"));
|
|
|
|
|
|
|
|
|
|
+ if (periodList != null && periodList.size() > 0) {
|
|
|
|
|
+ //首月成本单独计算 613 按年支付 4591 开通日期所在月
|
|
|
|
|
+ if (service.get("PURCHASE_CALC_METHOD_1STPERIOD").equals("4591")) {
|
|
|
|
|
+ BigDecimal firstRate = periodList.get(0).getRate();
|
|
|
|
|
+ //firstRate<1
|
|
|
|
|
+ if (firstRate.compareTo(BigDecimal.ONE) < 0) {
|
|
|
|
|
|
|
|
- //首月成本单独计算 613 按年支付 4591 开通日期所在月
|
|
|
|
|
- if (service.get("PURCHASE_CALC_METHOD_1STPERIOD").equals("4591")) {
|
|
|
|
|
- BigDecimal firstRate = periodList.get(0).getRate();
|
|
|
|
|
- //firstRate<1
|
|
|
|
|
- if (firstRate.compareTo(BigDecimal.ONE) < 0) {
|
|
|
|
|
|
|
+ //首月成本需要单独计算
|
|
|
|
|
+ BigDecimal UNIT_COST_1STMONTH = toBigDecimal(service.get("UNIT_COST_1STMONTH"));
|
|
|
|
|
|
|
|
- //首月成本需要单独计算
|
|
|
|
|
- BigDecimal UNIT_COST_1STMONTH = toBigDecimal(service.get("UNIT_COST_1STMONTH"));
|
|
|
|
|
|
|
+ UNIT_COST_1STMONTH = firstRate.multiply(BigDecimal.valueOf(12)).multiply(UNIT_COST_1STMONTH);
|
|
|
|
|
|
|
|
- UNIT_COST_1STMONTH = firstRate.multiply(BigDecimal.valueOf(12)).multiply(UNIT_COST_1STMONTH);
|
|
|
|
|
|
|
+ BigDecimal rate = periodList.stream().skip(1).map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
+ EXTENDED_COST = EXTENDED_COST.multiply(rate);
|
|
|
|
|
|
|
|
- BigDecimal rate = periodList.stream().skip(1).map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
- EXTENDED_COST = EXTENDED_COST.multiply(rate);
|
|
|
|
|
|
|
+ EXTENDED_COST = EXTENDED_COST.add(UNIT_COST_1STMONTH);
|
|
|
|
|
|
|
|
- EXTENDED_COST = EXTENDED_COST.add(UNIT_COST_1STMONTH);
|
|
|
|
|
|
|
+ contractCost.set("EXTENDED_COST", EXTENDED_COST);
|
|
|
|
|
|
|
|
- contractCost.set("EXTENDED_COST", EXTENDED_COST);
|
|
|
|
|
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ BigDecimal rate = periodList.stream().map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
+ EXTENDED_COST = EXTENDED_COST.multiply(rate);
|
|
|
|
|
+ contractCost.set("EXTENDED_COST", EXTENDED_COST);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
} else {
|
|
} else {
|
|
|
BigDecimal rate = periodList.stream().map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
BigDecimal rate = periodList.stream().map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
EXTENDED_COST = EXTENDED_COST.multiply(rate);
|
|
EXTENDED_COST = EXTENDED_COST.multiply(rate);
|
|
|
contractCost.set("EXTENDED_COST", EXTENDED_COST);
|
|
contractCost.set("EXTENDED_COST", EXTENDED_COST);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- } else {
|
|
|
|
|
- BigDecimal rate = periodList.stream().map(period -> period.getRate()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
- EXTENDED_COST = EXTENDED_COST.multiply(rate);
|
|
|
|
|
- contractCost.set("EXTENDED_COST", EXTENDED_COST);
|
|
|
|
|
|
|
+ //单元成本
|
|
|
|
|
+ contractCost.set("UNIT_COST", divideToBigDecimal(contractCost.get("EXTENDED_COST"), contractCost.get("QUANTITY")));
|
|
|
|
|
+ contractServiceLogger.info("计算合同成本周期结束:" + EXTENDED_COST);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- contractServiceLogger.info("计算合同成本周期结束:" + EXTENDED_COST);
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- //单元成本
|
|
|
|
|
- contractCost.set("UNIT_COST", divideToBigDecimal(contractCost.get("EXTENDED_COST"), contractCost.get("QUANTITY")));
|
|
|
|
|
|
|
|
|
|
//总价格
|
|
//总价格
|
|
|
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("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"));
|