|
|
@@ -128,8 +128,8 @@ public class contractService {
|
|
|
ContractExcManage(uc, bindid);//更新合同例外因素
|
|
|
}
|
|
|
|
|
|
- if (!isSubmit)
|
|
|
- return resultDto;
|
|
|
+ // if (!isSubmit)
|
|
|
+ // return resultDto;
|
|
|
|
|
|
contractServiceLogger.info("合同提交后,进行数据处理");
|
|
|
|
|
|
@@ -261,65 +261,105 @@ public class contractService {
|
|
|
List<BO> serviceList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE").connection(conn).addQuery("BINDID=", contract.get("BINDID")).list();
|
|
|
|
|
|
for (BO service : serviceList) {
|
|
|
- boolean isCreate = false;
|
|
|
- // 1、合同开始日期或结束日期变化
|
|
|
- LocalDate START_DATE = getLocalDate(contract.get("START_DATE"));//服务开始日期
|
|
|
- LocalDate END_DATE = getLocalDate(contract.get("END_DATE"));//合同结束日期
|
|
|
- LocalDate EFFECTIVE_DATE = getLocalDate(service.get("EFFECTIVE_DATE"));//服务生效日期
|
|
|
- String PERIOD = service.getString("PERIOD");//服务起止日期
|
|
|
- String ADJUST_PERIOD = service.getString("ADJUST_PERIOD");//服务调整的起止日期
|
|
|
- if (EFFECTIVE_DATE == null || (StringUtils.isBlank(PERIOD) && StringUtils.isBlank(ADJUST_PERIOD)))
|
|
|
- isCreate = true;
|
|
|
+ AddServiceServiceBundleOne(uc, conn, contract, service);
|
|
|
+ }
|
|
|
|
|
|
- if (EFFECTIVE_DATE == null)
|
|
|
- EFFECTIVE_DATE = START_DATE;
|
|
|
|
|
|
- if (StringUtils.isNotBlank(ADJUST_PERIOD)) {
|
|
|
- LocalDate ADJUST_PERIOD_START = getLocalDate(ADJUST_PERIOD.split("~")[0]);
|
|
|
- if (!ADJUST_PERIOD_START.isEqual(EFFECTIVE_DATE)) {
|
|
|
- isCreate = true;
|
|
|
- }
|
|
|
- if (StringUtils.isBlank(PERIOD)) {
|
|
|
- LocalDate ADJUST_PERIOD_END = getLocalDate(ADJUST_PERIOD.split("~")[1]);
|
|
|
- if (!ADJUST_PERIOD_END.isEqual(END_DATE)) {
|
|
|
- isCreate = true;
|
|
|
- }
|
|
|
- }
|
|
|
+ conn.commit();
|
|
|
+ return true;
|
|
|
+ } catch (SQLException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ conn.rollback();
|
|
|
+
|
|
|
+ contractServiceLogger.error("AddServiceServiceBundle--error--失败。。。", e);
|
|
|
+
|
|
|
+ } finally {
|
|
|
+ if (conn != null)
|
|
|
+ DBSql.close(conn);
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加服务
|
|
|
+ * @param uc
|
|
|
+ * @param conn
|
|
|
+ * @param contract
|
|
|
+ * @param service
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean AddServiceServiceBundleOne(UserContext uc, Connection conn, RowMap contract, BO service) {
|
|
|
+ if (service == null)
|
|
|
+ return false;
|
|
|
+ boolean isCreate = false;
|
|
|
+ // 1、合同开始日期或结束日期变化
|
|
|
+ LocalDate START_DATE = getLocalDate(contract.get("START_DATE"));//服务开始日期
|
|
|
+ LocalDate END_DATE = getLocalDate(contract.get("END_DATE"));//合同结束日期
|
|
|
+ LocalDate EFFECTIVE_DATE = getLocalDate(service.get("EFFECTIVE_DATE"));//服务生效日期
|
|
|
+ String PERIOD = service.getString("PERIOD");//服务起止日期
|
|
|
+ String ADJUST_PERIOD = service.getString("ADJUST_PERIOD");//服务调整的起止日期
|
|
|
+ if (EFFECTIVE_DATE == null || (StringUtils.isBlank(PERIOD) && StringUtils.isBlank(ADJUST_PERIOD)))
|
|
|
+ isCreate = true;
|
|
|
+
|
|
|
+ if (EFFECTIVE_DATE == null) {
|
|
|
+ EFFECTIVE_DATE = START_DATE;
|
|
|
+ isCreate = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(ADJUST_PERIOD)) {
|
|
|
+ LocalDate ADJUST_PERIOD_START = getLocalDate(ADJUST_PERIOD.split("~")[0]);
|
|
|
+ if (!ADJUST_PERIOD_START.isEqual(EFFECTIVE_DATE)) {
|
|
|
+ isCreate = true;
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(PERIOD)) {
|
|
|
+ LocalDate ADJUST_PERIOD_END = getLocalDate(ADJUST_PERIOD.split("~")[1]);
|
|
|
+ if (!ADJUST_PERIOD_END.isEqual(END_DATE)) {
|
|
|
+ isCreate = true;
|
|
|
}
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtils.isNotBlank(PERIOD)) {
|
|
|
- LocalDate PERIOD_END = getLocalDate(PERIOD.split("~")[1]);
|
|
|
- if (!PERIOD_END.isEqual(END_DATE)) {
|
|
|
- isCreate = true;
|
|
|
- }
|
|
|
- if (StringUtils.isBlank(ADJUST_PERIOD)) {
|
|
|
- LocalDate PERIOD_START = getLocalDate(PERIOD.split("~")[0]);
|
|
|
- if (!PERIOD_START.isEqual(EFFECTIVE_DATE)) {
|
|
|
- isCreate = true;
|
|
|
- }
|
|
|
- }
|
|
|
+ if (StringUtils.isNotBlank(PERIOD)) {
|
|
|
+ LocalDate PERIOD_END = getLocalDate(PERIOD.split("~")[1]);
|
|
|
+ if (!PERIOD_END.isEqual(END_DATE)) {
|
|
|
+ isCreate = true;
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(ADJUST_PERIOD)) {
|
|
|
+ LocalDate PERIOD_START = getLocalDate(PERIOD.split("~")[0]);
|
|
|
+ if (!PERIOD_START.isEqual(EFFECTIVE_DATE)) {
|
|
|
+ isCreate = true;
|
|
|
}
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ String effectiveDateStr = EFFECTIVE_DATE.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
|
+ effectiveDateStr = "%" + effectiveDateStr + "%";
|
|
|
+ //生效日期修改了
|
|
|
+ if (DBSql.getInt("SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST WHERE CONTRACT_SERVICE_ID=? AND EFFECTIVE_DATE LIKE ?", new Object[]{service.get("ID"), effectiveDateStr}) == 0 && DBSql.getInt("SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID=? AND PERIOD_BEGIN_DATE LIKE ?", new Object[]{service.get("ID"), effectiveDateStr}) == 0) {
|
|
|
+ isCreate = true;
|
|
|
+ }
|
|
|
|
|
|
- //2、服务单价或数量变化???
|
|
|
- if (service.get("ADJUSTED_PRICE") == null || StringUtils.isBlank(service.getString("ADJUSTED_PRICE"))) {
|
|
|
- isCreate = true;
|
|
|
- } else {
|
|
|
- BigDecimal ADJUSTED_PRICE = new BigDecimal(service.getString("ADJUSTED_PRICE"));
|
|
|
|
|
|
- ADJUSTED_PRICE = ADJUSTED_PRICE.setScale(8, RoundingMode.HALF_UP);
|
|
|
+ //2、服务单价或数量变化???
|
|
|
+ if (service.get("ADJUSTED_PRICE") == null || StringUtils.isBlank(service.getString("ADJUSTED_PRICE"))) {
|
|
|
+ isCreate = true;
|
|
|
+ } else {
|
|
|
+ BigDecimal ADJUSTED_PRICE = new BigDecimal(service.getString("ADJUSTED_PRICE"));
|
|
|
+
|
|
|
+ ADJUSTED_PRICE = ADJUSTED_PRICE.setScale(8, RoundingMode.HALF_UP);
|
|
|
|
|
|
- if (ADJUSTED_PRICE.compareTo(multiply(service.get("QUANTITY"), service.get("UNIT_PRICE"))) != 0) {
|
|
|
- isCreate = true;
|
|
|
- }
|
|
|
- }
|
|
|
+ if (ADJUSTED_PRICE.compareTo(multiply(service.get("QUANTITY"), service.get("UNIT_PRICE"))) != 0) {
|
|
|
+ isCreate = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (!isCreate)
|
|
|
- continue;
|
|
|
+ if (!isCreate)
|
|
|
+ return true;
|
|
|
|
|
|
- //服务已经审批并提交则不需要重新生成
|
|
|
- // 暂时不考虑 审批并提交之后修改服务,不需要重新生成
|
|
|
- if (DBSql.getInt("SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST 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_ADJUST 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) {
|
|
|
/*
|
|
|
boolean flag = EditServiceServiceBundle(conn, uc, contract, (RowMap) service.asMap());//调整未审批的服务
|
|
|
if (!flag) {
|
|
|
@@ -327,11 +367,11 @@ public class contractService {
|
|
|
return false;
|
|
|
}
|
|
|
*/
|
|
|
- continue;
|
|
|
- }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
- //暂时不考虑 审批并提交之后,修改服务,不需要重新生成
|
|
|
- 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) {
|
|
|
/*
|
|
|
boolean flag = EditServiceServiceBundle(conn, uc, contract, (RowMap) service.asMap());//调整未审批的服务
|
|
|
if (!flag) {
|
|
|
@@ -340,244 +380,229 @@ public class contractService {
|
|
|
}
|
|
|
|
|
|
*/
|
|
|
- continue;
|
|
|
- }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
- //删除历史数据
|
|
|
- if (StringUtils.isNotBlank(ADJUST_PERIOD)) {
|
|
|
+ //删除历史数据
|
|
|
+ if (StringUtils.isNotBlank(ADJUST_PERIOD)) {
|
|
|
|
|
|
- List<String> csaIdList = DBSql.getList(conn, "select ID from BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST where BINDID=? and CONTRACT_ID=? and CONTRACT_SERVICE_ID=?", String.class, new Object[]{service.get("BINDID"), contract.get("ID"), service.get("ID")});
|
|
|
+ List<String> csaIdList = DBSql.getList(conn, "select ID from BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST where BINDID=? and CONTRACT_ID=? and CONTRACT_SERVICE_ID=?", String.class, new Object[]{service.get("BINDID"), contract.get("ID"), service.get("ID")});
|
|
|
|
|
|
- for (String csaId : csaIdList) {
|
|
|
- DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST_BUNDLE_SERVICE where BINDID=? and CONTRACT_SERVICE_ADJUST_ID=? ", new Object[]{service.get("BINDID"), csaId});
|
|
|
- }
|
|
|
+ for (String csaId : csaIdList) {
|
|
|
+ DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST_BUNDLE_SERVICE where BINDID=? and CONTRACT_SERVICE_ADJUST_ID=? ", new Object[]{service.get("BINDID"), csaId});
|
|
|
+ }
|
|
|
|
|
|
- DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST where BINDID=? and CONTRACT_ID=? and CONTRACT_SERVICE_ID=?", new Object[]{service.get("BINDID"), contract.get("ID"), service.get("ID")});
|
|
|
- }
|
|
|
+ DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST where BINDID=? and CONTRACT_ID=? and CONTRACT_SERVICE_ID=?", new Object[]{service.get("BINDID"), contract.get("ID"), service.get("ID")});
|
|
|
+ }
|
|
|
|
|
|
- if (StringUtils.isNotBlank(PERIOD)) {
|
|
|
- List<String> cspIdList = DBSql.getList(conn, "select ID from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where BINDID=? and CONTRACT_ID=? and OBJECT_ID=? and CONTRACT_SERVICE_ID=?", String.class, new Object[]{service.get("BINDID"), contract.get("ID"), service.get("OBJECT_ID"), service.get("ID")});
|
|
|
- for (String cspId : cspIdList) {
|
|
|
- DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD_BUNDLE_SERVICE where BINDID=? and CONTRACT_SERVICE_PERIOD_ID=? ", new Object[]{service.get("BINDID"), cspId});
|
|
|
- }
|
|
|
- DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where BINDID=? and CONTRACT_ID=? and OBJECT_ID=? and CONTRACT_SERVICE_ID=?", new Object[]{service.get("BINDID"), contract.get("ID"), service.get("OBJECT_ID"), service.get("ID")});
|
|
|
- }
|
|
|
+ if (StringUtils.isNotBlank(PERIOD)) {
|
|
|
+ List<String> cspIdList = DBSql.getList(conn, "select ID from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where BINDID=? and CONTRACT_ID=? and OBJECT_ID=? and CONTRACT_SERVICE_ID=?", String.class, new Object[]{service.get("BINDID"), contract.get("ID"), service.get("OBJECT_ID"), service.get("ID")});
|
|
|
+ for (String cspId : cspIdList) {
|
|
|
+ DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD_BUNDLE_SERVICE where BINDID=? and CONTRACT_SERVICE_PERIOD_ID=? ", new Object[]{service.get("BINDID"), cspId});
|
|
|
+ }
|
|
|
+ DBSql.update(conn, "delete from BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD where BINDID=? and CONTRACT_ID=? and OBJECT_ID=? and CONTRACT_SERVICE_ID=?", new Object[]{service.get("BINDID"), contract.get("ID"), service.get("OBJECT_ID"), service.get("ID")});
|
|
|
+ }
|
|
|
|
|
|
- service.set("CONTRACT_ID", contract.get("ID"));
|
|
|
- service.set("EFFECTIVE_DATE", EFFECTIVE_DATE);//生效日期
|
|
|
+ service.set("CONTRACT_ID", contract.get("ID"));
|
|
|
+ service.set("EFFECTIVE_DATE", EFFECTIVE_DATE);//生效日期
|
|
|
|
|
|
- if (service.getString("OBJECT_TYPE").equals("1"))//服务
|
|
|
- {
|
|
|
- int NEED_PURCHASE = DBSql.getInt(conn, "select NEED_PURCHASE from BO_EU_DNIVT_SERVICE where ID=? ", new Object[]{service.getString("OBJECT_ID")});
|
|
|
+ if (service.getString("OBJECT_TYPE").equals("1"))//服务
|
|
|
+ {
|
|
|
+ int NEED_PURCHASE = DBSql.getInt(conn, "select NEED_PURCHASE from BO_EU_DNIVT_SERVICE where ID=? ", new Object[]{service.getString("OBJECT_ID")});
|
|
|
|
|
|
- if (NEED_PURCHASE == 1)//需要购买
|
|
|
- {
|
|
|
- service.set("STATUS_ID", cttConstant.CONTRACT_SERVICE_STATUS_WAIT_INSTALL);//待安装
|
|
|
- } else {
|
|
|
- service.set("STATUS_ID", cttConstant.CONTRACT_SERVICE_STATUS_NO_INSTALL);//不需要购买
|
|
|
- }
|
|
|
- }
|
|
|
+ if (NEED_PURCHASE == 1)//需要购买
|
|
|
+ {
|
|
|
+ service.set("STATUS_ID", cttConstant.CONTRACT_SERVICE_STATUS_WAIT_INSTALL);//待安装
|
|
|
+ } else {
|
|
|
+ service.set("STATUS_ID", cttConstant.CONTRACT_SERVICE_STATUS_NO_INSTALL);//不需要购买
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- int maxPeriod = contract.getInt("PERIOD_TYPE") > service.get("PERIOD_TYPE", Integer.class) ? contract.getInt("PERIOD_TYPE") : service.get("PERIOD_TYPE", Integer.class); // 合同与服务周期类型中较大的周期类型
|
|
|
+ int maxPeriod = contract.getInt("PERIOD_TYPE") > service.get("PERIOD_TYPE", Integer.class) ? contract.getInt("PERIOD_TYPE") : service.get("PERIOD_TYPE", Integer.class); // 合同与服务周期类型中较大的周期类型
|
|
|
|
|
|
- BigDecimal rate = GetPeriodRate(contract.getString("PERIOD_TYPE"), service.getString("PERIOD_TYPE"));
|
|
|
+ BigDecimal rate = GetPeriodRate(contract.getString("PERIOD_TYPE"), service.getString("PERIOD_TYPE"));
|
|
|
|
|
|
- BigDecimal unit_cost = service.get("UNIT_COST", BigDecimal.class);
|
|
|
- BigDecimal unit_price = service.get("UNIT_PRICE", BigDecimal.class);
|
|
|
+ BigDecimal unit_cost = service.get("UNIT_COST", BigDecimal.class);
|
|
|
+ BigDecimal unit_price = service.get("UNIT_PRICE", BigDecimal.class);
|
|
|
|
|
|
- // 合同周期更长,服务周期使用合同周期,单价和成本根据周期倍数翻倍
|
|
|
- if (rate.compareTo(BigDecimal.ONE) > 0) {
|
|
|
- unit_cost = unit_cost.multiply(rate);
|
|
|
- service.set("UNIT_COST", unit_cost);
|
|
|
- unit_price = unit_price.multiply(rate);
|
|
|
- service.set("UNIT_PRICE", unit_price);
|
|
|
- }
|
|
|
+ // 合同周期更长,服务周期使用合同周期,单价和成本根据周期倍数翻倍
|
|
|
+ if (rate.compareTo(BigDecimal.ONE) > 0) {
|
|
|
+ unit_cost = unit_cost.multiply(rate);
|
|
|
+ service.set("UNIT_COST", unit_cost);
|
|
|
+ unit_price = unit_price.multiply(rate);
|
|
|
+ service.set("UNIT_PRICE", unit_price);
|
|
|
+ }
|
|
|
|
|
|
- contractServiceLogger.info("计算-service-ADJUSTED_PRICE");
|
|
|
+ contractServiceLogger.info("计算-service-ADJUSTED_PRICE");
|
|
|
|
|
|
- service.set("ADJUSTED_PRICE", multiply(service.get("QUANTITY"), service.get("UNIT_PRICE")));//总价
|
|
|
+ service.set("ADJUSTED_PRICE", multiply(service.get("QUANTITY"), service.get("UNIT_PRICE")));//总价
|
|
|
|
|
|
- SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE", service, conn);//保存
|
|
|
+ SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE", service, conn);//保存
|
|
|
|
|
|
- List<String> sbsList = null;
|
|
|
- String serviceIds = DBSql.getString("select SERVICE_ID from BO_EU_DNIVT_SERVICE_BUNDLE where ID=?", new Object[]{service.get("OBJECT_ID")});
|
|
|
- if (StringUtils.isNotBlank(serviceIds)) {
|
|
|
- sbsList = Arrays.asList(serviceIds.split(","));
|
|
|
- }
|
|
|
+ List<String> sbsList = null;
|
|
|
+ String serviceIds = DBSql.getString("select SERVICE_ID from BO_EU_DNIVT_SERVICE_BUNDLE where ID=?", new Object[]{service.get("OBJECT_ID")});
|
|
|
+ if (StringUtils.isNotBlank(serviceIds)) {
|
|
|
+ sbsList = Arrays.asList(serviceIds.split(","));
|
|
|
+ }
|
|
|
/*
|
|
|
if (service.getString("OBJECT_TYPE").equals("2"))//服务包
|
|
|
sbsList = DBSql.getMaps(conn, "SELECT * FROM BO_EU_DNIVT_SERVICE_BUNDLE_SERVICE WHERE SERVICE_BUNDLE_ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
*/
|
|
|
- String BILL_METHOD_ID = null;//计费方式 4601:自然月 4602:实际月
|
|
|
- if (service.getString("OBJECT_TYPE").equals("2"))//服务包
|
|
|
- {
|
|
|
- BILL_METHOD_ID = DBSql.getString(conn, "select BILL_METHOD_ID from BO_EU_DNIVT_SERVICE_BUNDLE where ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
- // 插入合同服务包对应的服务 ctt_contract_service_bundle_service
|
|
|
- if (sbsList != null) {
|
|
|
- for (String sbs : sbsList) {
|
|
|
- if (DBSql.getInt(conn, "select count(1) from BO_EU_DNCTT_CONTRACT_SERVICE_BUNDLE_SERVICE where SERVICE_ID=? and CONTRACT_SERVICE_ID=?", new Object[]{sbs, service.get("ID")}) == 0) {
|
|
|
- BO csbs = new BO();
|
|
|
- csbs.set("SERVICE_ID", sbs);
|
|
|
- csbs.set("CONTRACT_SERVICE_ID", service.get("ID"));
|
|
|
- csbs.setBindId(service.getString("BINDID"));
|
|
|
- SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_BUNDLE_SERVICE", csbs, uc, conn);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+ String BILL_METHOD_ID = null;//计费方式 4601:自然月 4602:实际月
|
|
|
+ if (service.getString("OBJECT_TYPE").equals("2"))//服务包
|
|
|
+ {
|
|
|
+ BILL_METHOD_ID = DBSql.getString(conn, "select BILL_METHOD_ID from BO_EU_DNIVT_SERVICE_BUNDLE where ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
+ // 插入合同服务包对应的服务 ctt_contract_service_bundle_service
|
|
|
+ if (sbsList != null) {
|
|
|
+ for (String sbs : sbsList) {
|
|
|
+ if (DBSql.getInt(conn, "select count(1) from BO_EU_DNCTT_CONTRACT_SERVICE_BUNDLE_SERVICE where SERVICE_ID=? and CONTRACT_SERVICE_ID=?", new Object[]{sbs, service.get("ID")}) == 0) {
|
|
|
+ BO csbs = new BO();
|
|
|
+ csbs.set("SERVICE_ID", sbs);
|
|
|
+ csbs.set("CONTRACT_SERVICE_ID", service.get("ID"));
|
|
|
+ csbs.setBindId(service.getString("BINDID"));
|
|
|
+ SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_BUNDLE_SERVICE", csbs, uc, conn);
|
|
|
}
|
|
|
- } else {
|
|
|
- BILL_METHOD_ID = DBSql.getString(conn, "select BILL_METHOD_ID from BO_EU_DNIVT_SERVICE where ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
+
|
|
|
}
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ BILL_METHOD_ID = DBSql.getString(conn, "select BILL_METHOD_ID from BO_EU_DNIVT_SERVICE where ID=?", new Object[]{service.getString("OBJECT_ID")});
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- String vendor_account_id = DBSql.getString(conn, "select VENDOR_ACCOUNT_ID from BO_EU_DNIVT_SERVICE where ID=?", new Object[]{service.getString("OBJECT_ID")});//供应商账号
|
|
|
+ String vendor_account_id = DBSql.getString(conn, "select VENDOR_ACCOUNT_ID from BO_EU_DNIVT_SERVICE where ID=?", new Object[]{service.getString("OBJECT_ID")});//供应商账号
|
|
|
|
|
|
|
|
|
- //如果不是从一号开始,则需要调整到从1号开始
|
|
|
- if (BILL_METHOD_ID.equals("4601") && START_DATE.getDayOfMonth() != 1) {
|
|
|
- //本月底日期
|
|
|
- LocalDate currMontLastDay = START_DATE.with(TemporalAdjusters.lastDayOfMonth());
|
|
|
- if (currMontLastDay.isBefore(END_DATE))
|
|
|
- START_DATE = currMontLastDay.plusDays(1);//周期开始日期
|
|
|
- }
|
|
|
+ //如果不是从一号开始,则需要调整到从1号开始
|
|
|
+ if (StringUtils.isNotBlank(BILL_METHOD_ID) && BILL_METHOD_ID.equals("4601") && START_DATE.getDayOfMonth() != 1) {
|
|
|
+ //本月底日期
|
|
|
+ LocalDate currMontLastDay = START_DATE.with(TemporalAdjusters.lastDayOfMonth());
|
|
|
+ if (currMontLastDay.isBefore(END_DATE))
|
|
|
+ START_DATE = currMontLastDay.plusDays(1);//周期开始日期
|
|
|
+ }
|
|
|
|
|
|
- // 计算首周期起止日期,并判断是否需要新增服务调整记录
|
|
|
- Map<String, Object> firstPeriodDate = getFirstPeriodDate(START_DATE, END_DATE, EFFECTIVE_DATE, contract.getString("PERIOD_TYPE"), service.getString("PERIOD_TYPE"));
|
|
|
- boolean isStartOfPeriod = (boolean) firstPeriodDate.get("isStartOfPeriod");
|
|
|
- // 合同服务的周期起止日期
|
|
|
- LocalDate start = getLocalDate(firstPeriodDate.get("periodStart"));
|
|
|
- LocalDate end = getLocalDate(firstPeriodDate.get("periodEnd"));
|
|
|
- ADJUST_PERIOD = null;
|
|
|
-
|
|
|
- contractServiceLogger.info("getFirstPeriodDate" + firstPeriodDate.toString());
|
|
|
-
|
|
|
- //增加服务周期调整
|
|
|
- if (!isStartOfPeriod) {
|
|
|
- LocalDate periodEnd = getNextPeriodStart(start, String.valueOf(maxPeriod)).minusDays(1);//周期结束日期
|
|
|
- BigDecimal periodRate = divideToBigDecimal(GetPeriodDays(EFFECTIVE_DATE, end), GetPeriodDays(start, periodEnd)); // 首周期占整周期比例
|
|
|
- BO csa = new BO();//合同服务调整
|
|
|
- csa.set("CONTRACT_ID", contract.get("ID"));
|
|
|
- csa.set("OBJECT_ID", service.get("ID"));
|
|
|
- csa.set("OBJECT_TYPE", service.get("OBJECT_TYPE"));
|
|
|
- csa.set("QUANTITY_CHANGE", service.get("QUANTITY"));
|
|
|
- csa.set("CONTRACT_SERVICE_ID", service.get("ID"));
|
|
|
- csa.set("EFFECTIVE_DATE", EFFECTIVE_DATE);
|
|
|
- csa.set("END_DATE", end);
|
|
|
-
|
|
|
- ADJUST_PERIOD = LocalDateYYYYMMDD(EFFECTIVE_DATE) + "~" + LocalDateYYYYMMDD(end);
|
|
|
-
|
|
|
- csa.set("PRORATED_COST_CHANGE", service.get("ADJUSTED_PRICE"));
|
|
|
-
|
|
|
- contractServiceLogger.info("计算-csa-ADJUST_PRORATED_PRICE_CHANGE");
|
|
|
- csa.set("ADJUST_PRORATED_PRICE_CHANGE", multiply(service.get("ADJUSTED_PRICE"), periodRate));
|
|
|
- csa.set("PRORATED_PRICE_CHANGE", csa.get("ADJUST_PRORATED_PRICE_CHANGE"));
|
|
|
- csa.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
- csa.setBindId(service.getString("BINDID"));
|
|
|
- SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST", csa, uc, conn);
|
|
|
-
|
|
|
- // 插入服务调整表包含的服务ctt_contract_service_adjust_bundle_service
|
|
|
- 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 csabs = new BO();
|
|
|
- csabs.set("CONTRACT_SERVICE_ADJUST_ID", csa.getId());
|
|
|
- csabs.set("SERVICE_ID", sbs);
|
|
|
- csabs.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
- csabs.set("PRORATED_COST_CHANGE", prorated_cost_change);
|
|
|
- csabs.setBindId(service.getString("BINDID"));
|
|
|
- SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST_BUNDLE_SERVICE", csabs, uc, conn);
|
|
|
- }
|
|
|
- }
|
|
|
+ // 计算首周期起止日期,并判断是否需要新增服务调整记录
|
|
|
+ Map<String, Object> firstPeriodDate = getFirstPeriodDate(START_DATE, END_DATE, EFFECTIVE_DATE, contract.getString("PERIOD_TYPE"), service.getString("PERIOD_TYPE"));
|
|
|
+ boolean isStartOfPeriod = (boolean) firstPeriodDate.get("isStartOfPeriod");
|
|
|
+ // 合同服务的周期起止日期
|
|
|
+ LocalDate start = getLocalDate(firstPeriodDate.get("periodStart"));
|
|
|
+ LocalDate end = getLocalDate(firstPeriodDate.get("periodEnd"));
|
|
|
+ ADJUST_PERIOD = null;
|
|
|
+
|
|
|
+ contractServiceLogger.info("getFirstPeriodDate" + firstPeriodDate.toString());
|
|
|
+
|
|
|
+ //增加服务周期调整
|
|
|
+ if (!isStartOfPeriod) {
|
|
|
+ LocalDate periodEnd = getNextPeriodStart(start, String.valueOf(maxPeriod)).minusDays(1);//周期结束日期
|
|
|
+ BigDecimal periodRate = divideToBigDecimal(GetPeriodDays(EFFECTIVE_DATE, end), GetPeriodDays(start, periodEnd)); // 首周期占整周期比例
|
|
|
+ BO csa = new BO();//合同服务调整
|
|
|
+ csa.set("CONTRACT_ID", contract.get("ID"));
|
|
|
+ csa.set("OBJECT_ID", service.get("ID"));
|
|
|
+ csa.set("OBJECT_TYPE", service.get("OBJECT_TYPE"));
|
|
|
+ csa.set("QUANTITY_CHANGE", service.get("QUANTITY"));
|
|
|
+ csa.set("CONTRACT_SERVICE_ID", service.get("ID"));
|
|
|
+ csa.set("EFFECTIVE_DATE", EFFECTIVE_DATE);
|
|
|
+ csa.set("END_DATE", end);
|
|
|
+
|
|
|
+ ADJUST_PERIOD = LocalDateYYYYMMDD(EFFECTIVE_DATE) + "~" + LocalDateYYYYMMDD(end);
|
|
|
+
|
|
|
+ csa.set("PRORATED_COST_CHANGE", service.get("ADJUSTED_PRICE"));
|
|
|
+
|
|
|
+ contractServiceLogger.info("计算-csa-ADJUST_PRORATED_PRICE_CHANGE");
|
|
|
+ csa.set("ADJUST_PRORATED_PRICE_CHANGE", multiply(service.get("ADJUSTED_PRICE"), periodRate));
|
|
|
+ csa.set("PRORATED_PRICE_CHANGE", csa.get("ADJUST_PRORATED_PRICE_CHANGE"));
|
|
|
+ csa.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
+ csa.setBindId(service.getString("BINDID"));
|
|
|
+ SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST", csa, uc, conn);
|
|
|
+
|
|
|
+ // 插入服务调整表包含的服务ctt_contract_service_adjust_bundle_service
|
|
|
+ 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 csabs = new BO();
|
|
|
+ csabs.set("CONTRACT_SERVICE_ADJUST_ID", csa.getId());
|
|
|
+ csabs.set("SERVICE_ID", sbs);
|
|
|
+ csabs.set("VENDOR_ACCOUNT_ID", vendor_account_id);
|
|
|
+ csabs.set("PRORATED_COST_CHANGE", prorated_cost_change);
|
|
|
+ csabs.setBindId(service.getString("BINDID"));
|
|
|
+ SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_ADJUST_BUNDLE_SERVICE", csabs, uc, conn);
|
|
|
}
|
|
|
- start = end.plusDays(1); // 周期开始日期指
|
|
|
}
|
|
|
+ }
|
|
|
+ start = end.plusDays(1); // 周期开始日期指
|
|
|
+ }
|
|
|
|
|
|
- PERIOD = null;
|
|
|
- //生成服务周期
|
|
|
- if (start.isBefore(END_DATE)) {
|
|
|
- PERIOD = LocalDateYYYYMMDD(start);
|
|
|
- //循环添加全部周期
|
|
|
- while (!start.isAfter(END_DATE)) {
|
|
|
- BigDecimal periodRate = BigDecimal.ONE;
|
|
|
- LocalDate periodEnd = getNextPeriodStart(start, String.valueOf(maxPeriod)).minusDays(1);//本周期结束时间
|
|
|
- if (periodEnd.isAfter(END_DATE)) {//如果结束日期大于合同结束日期,则计算结束日期和合同结束日期的差值,并计算该差值占整周期的比例
|
|
|
- periodRate = divideToBigDecimal(GetPeriodDays(start, END_DATE), GetPeriodDays(start, periodEnd));
|
|
|
- periodEnd = END_DATE;
|
|
|
- }
|
|
|
+ PERIOD = null;
|
|
|
+ //生成服务周期
|
|
|
+ if (start.isBefore(END_DATE)) {
|
|
|
+ PERIOD = LocalDateYYYYMMDD(start);
|
|
|
+ //循环添加全部周期
|
|
|
+ while (!start.isAfter(END_DATE)) {
|
|
|
+ BigDecimal periodRate = BigDecimal.ONE;
|
|
|
+ LocalDate periodEnd = getNextPeriodStart(start, String.valueOf(maxPeriod)).minusDays(1);//本周期结束时间
|
|
|
+ if (periodEnd.isAfter(END_DATE)) {//如果结束日期大于合同结束日期,则计算结束日期和合同结束日期的差值,并计算该差值占整周期的比例
|
|
|
+ periodRate = divideToBigDecimal(GetPeriodDays(start, END_DATE), GetPeriodDays(start, periodEnd));
|
|
|
+ periodEnd = END_DATE;
|
|
|
+ }
|
|
|
|
|
|
- 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", start);
|
|
|
- csp.set("PERIOD_END_DATE", periodEnd);
|
|
|
- csp.set("QUANTITY", service.get("QUANTITY"));
|
|
|
-
|
|
|
- contractServiceLogger.info("计算-csp-PERIOD_PRICE");
|
|
|
- BigDecimal period_price = multiply(service.get("UNIT_PRICE"), service.get("QUANTITY"));
|
|
|
- period_price = periodRate.multiply(period_price);
|
|
|
- csp.set("PERIOD_PRICE", period_price);
|
|
|
-
|
|
|
- contractServiceLogger.info("计算-csp-PERIOD_COST");
|
|
|
- BigDecimal period_cost = multiply(service.get("PERIOD_COST"), service.get("QUANTITY"));
|
|
|
- period_cost = periodRate.multiply(period_cost);
|
|
|
- csp.set("PERIOD_COST", period_cost);
|
|
|
-
|
|
|
- csp.set("PERIOD_ADJUSTED_PRICE", csp.get("PERIOD_PRICE"));
|
|
|
-
|
|
|
- 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);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ 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"));
|
|
|
|
|
|
- if (periodEnd != null) {
|
|
|
- start = periodEnd.plusDays(1);
|
|
|
- }
|
|
|
- }
|
|
|
+ csp.set("PERIOD_BEGIN_DATE", start);
|
|
|
+ csp.set("PERIOD_END_DATE", periodEnd);
|
|
|
+ csp.set("QUANTITY", service.get("QUANTITY"));
|
|
|
|
|
|
- PERIOD = PERIOD + "~" + LocalDateYYYYMMDD(END_DATE);
|
|
|
- }
|
|
|
+ contractServiceLogger.info("计算-csp-PERIOD_PRICE");
|
|
|
+ BigDecimal period_price = multiply(service.get("UNIT_PRICE"), service.get("QUANTITY"));
|
|
|
+ period_price = periodRate.multiply(period_price);
|
|
|
+ csp.set("PERIOD_PRICE", period_price);
|
|
|
|
|
|
- //更新合同服务上的
|
|
|
- DBSql.update(conn, "update BO_EU_DNCTT_CONTRACT_SERVICE set PERIOD=?,ADJUST_PERIOD=? where ID=? and BINDID=?", new Object[]{PERIOD, ADJUST_PERIOD, service.get("ID"), service.get("BINDID")});
|
|
|
- }
|
|
|
+ contractServiceLogger.info("计算-csp-PERIOD_COST");
|
|
|
+ BigDecimal period_cost = multiply(service.get("PERIOD_COST"), service.get("QUANTITY"));
|
|
|
+ period_cost = periodRate.multiply(period_cost);
|
|
|
+ csp.set("PERIOD_COST", period_cost);
|
|
|
|
|
|
+ csp.set("PERIOD_ADJUSTED_PRICE", csp.get("PERIOD_PRICE"));
|
|
|
|
|
|
- conn.commit();
|
|
|
- return true;
|
|
|
- } catch (SQLException e) {
|
|
|
- e.printStackTrace();
|
|
|
- conn.rollback();
|
|
|
+ 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);
|
|
|
|
|
|
- contractServiceLogger.error("AddServiceServiceBundle--error--失败。。。", e);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- } finally {
|
|
|
- if (conn != null)
|
|
|
- DBSql.close(conn);
|
|
|
+ if (periodEnd != null) {
|
|
|
+ start = periodEnd.plusDays(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ PERIOD = PERIOD + "~" + LocalDateYYYYMMDD(END_DATE);
|
|
|
}
|
|
|
- return false;
|
|
|
+
|
|
|
+ //更新合同服务上的
|
|
|
+ DBSql.update(conn, "update BO_EU_DNCTT_CONTRACT_SERVICE set PERIOD=?,ADJUST_PERIOD=? where ID=? and BINDID=?", new Object[]{PERIOD, ADJUST_PERIOD, service.get("ID"), service.get("BINDID")});
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -598,7 +623,7 @@ public class contractService {
|
|
|
* @param uc
|
|
|
* @return
|
|
|
*/
|
|
|
- private boolean AddContractServiceProduct(UserContext uc, RowMap contract) throws SQLException {
|
|
|
+ public boolean AddContractServiceProduct(UserContext uc, RowMap contract) throws SQLException {
|
|
|
contractServiceLogger.info("新增服务或服务包");
|
|
|
|
|
|
Connection conn = null;
|
|
|
@@ -610,6 +635,7 @@ public class contractService {
|
|
|
|
|
|
for (BO service : serviceList) {
|
|
|
|
|
|
+ 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")});
|
|
|
@@ -621,7 +647,8 @@ public class contractService {
|
|
|
contractCost.put("SERVICE_ID", service.getString("ID"));
|
|
|
contractCost.put("serviceID", serviceID);
|
|
|
contractCost.put("CONTRACT_ID", contract.getString("ID"));
|
|
|
- AddContractServiceProduct(uc, conn, contractCost);
|
|
|
+ contractCost.put("QUANTITY", service.getString("QUANTITY"));
|
|
|
+ PRODUCT_ID = AddContractServiceProduct(uc, conn, contractCost);
|
|
|
}
|
|
|
} else {
|
|
|
String contractCostId = DBSql.getString(conn, "select ID from BO_EU_DNCTT_CONTRACT_COST where CONTRACT_ID=? and SERVICE_ID=?", new Object[]{contract.getString("ID"), service.getString("ID")});
|
|
|
@@ -630,8 +657,10 @@ public class contractService {
|
|
|
contractCost.put("SERVICE_ID", service.getString("ID"));
|
|
|
contractCost.put("serviceID", service.getString("OBJECT_ID"));
|
|
|
contractCost.put("CONTRACT_ID", contract.getString("ID"));
|
|
|
- AddContractServiceProduct(uc, conn, contractCost);
|
|
|
+ contractCost.put("QUANTITY", service.getString("QUANTITY"));
|
|
|
+ PRODUCT_ID = AddContractServiceProduct(uc, conn, contractCost);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
conn.commit();
|
|
|
return true;
|
|
|
@@ -652,7 +681,7 @@ public class contractService {
|
|
|
* @param service
|
|
|
* @return
|
|
|
*/
|
|
|
- private boolean AddContractServiceProduct(UserContext uc, Connection conn, Map<String, String> service) {
|
|
|
+ private String AddContractServiceProduct(UserContext uc, Connection conn, Map<String, String> service) {
|
|
|
contractServiceLogger.info("新增合同产品");
|
|
|
System.out.println(service);
|
|
|
BO contractCost = null;
|
|
|
@@ -668,24 +697,29 @@ public class contractService {
|
|
|
contractCost.set("SERVICE_ID", service.get("SERVICE_ID"));
|
|
|
contractCost.set("PRODUCT_ID", DBSql.getString(conn, "select PRODUCT_ID from BO_EU_DNIVT_SERVICE where ID=?", new Object[]{service.get("serviceID")}));
|
|
|
|
|
|
- BO product = SDK.getBOAPI().get("BO_EU_DNIVT_PRODUCT", contractCost.getString("PRODUCT_ID"));
|
|
|
+ if (StringUtils.isNotBlank(contractCost.getString("PRODUCT_ID"))) {
|
|
|
+ BO product = SDK.getBOAPI().get("BO_EU_DNIVT_PRODUCT", contractCost.getString("PRODUCT_ID"));
|
|
|
|
|
|
- contractCost.set("NAME", product.getString("NAME"));
|
|
|
+ if (product != null) {
|
|
|
+ contractCost.set("NAME", product.getString("NAME"));
|
|
|
+ contractCost.set("DESCRIPTION", product.getString("DESCRIPTION"));
|
|
|
+ contractCost.set("COST_CODE_ID", product.getString("COST_CODE_ID"));
|
|
|
+ contractCost.set("UNIT_COST", product.getString("UNIT_COST"));
|
|
|
+ contractCost.set("UNIT_PRICE", product.getString("UNIT_PRICE"));
|
|
|
+ contractCost.set("PRODUCT_NAME", product.getString("NAME"));
|
|
|
|
|
|
- contractCost.set("DESCRIPTION", product.getString("DESCRIPTION"));
|
|
|
- contractCost.set("COST_CODE_ID", product.getString("COST_CODE_ID"));
|
|
|
- contractCost.set("UNIT_COST", product.getString("UNIT_COST"));
|
|
|
- contractCost.set("UNIT_PRICE", product.getString("UNIT_PRICE"));
|
|
|
- contractCost.set("TAX_CATEGORY_ID", DBSql.getString("select TAX_CATEGORY_ID from BO_EU_DND_COST_CODE where ID=?", new Object[]{product.getString("COST_CODE_ID")}));
|
|
|
- contractCost.set("COST_CODE_NAME", DBSql.getString("select NAME from BO_EU_DND_COST_CODE where ID=?", new Object[]{product.getString("COST_CODE_ID")}));
|
|
|
- contractCost.set("PRODUCT_NAME", product.getString("NAME"));
|
|
|
+ contractCost.set("TAX_CATEGORY_ID", DBSql.getString("select TAX_CATEGORY_ID from BO_EU_DND_COST_CODE where OID=?", new Object[]{product.getString("COST_CODE_ID")}));
|
|
|
+ contractCost.set("COST_CODE_NAME", DBSql.getString("select NAME from BO_EU_DND_COST_CODE where OID=?", new Object[]{product.getString("COST_CODE_ID")}));
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (contractCost.isNew()) {
|
|
|
SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_COST", contractCost, contractCost.getBindId(), uc.getUID());
|
|
|
} else {
|
|
|
SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST", contractCost);
|
|
|
}
|
|
|
- return false;
|
|
|
+
|
|
|
+ return contractCost.getId();
|
|
|
}
|
|
|
|
|
|
private static String LocalDateYYYYMMDD(LocalDate date) {
|
|
|
@@ -768,10 +802,9 @@ public class contractService {
|
|
|
LocalDate end;
|
|
|
|
|
|
if (serviceEffect.isBefore(start)) {
|
|
|
-
|
|
|
dto.put("periodStart", serviceEffect);
|
|
|
dto.put("periodEnd", start.minusDays(1));
|
|
|
- dto.put("isStartOfPeriod", true);
|
|
|
+ dto.put("isStartOfPeriod", false);
|
|
|
// 返回结果
|
|
|
return dto;
|
|
|
}
|
|
|
@@ -942,16 +975,19 @@ public class contractService {
|
|
|
// 判断排除费用代码是否为空,如果为空,则清空排除费用代码
|
|
|
if (StringUtils.isBlank(exclusionCostCode)) {
|
|
|
//清空
|
|
|
- DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_COST_CODE SET CLOSED =1 WHERE BINDID = ? OR CONTRACT_ID=?", new Object[]{rowMap.getString("ID"), rowMap.getString("BINDID")});
|
|
|
+ //DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_COST_CODE SET CLOSED =1 WHERE BINDID = ? OR CONTRACT_ID=?", new Object[]{rowMap.getString("ID"), rowMap.getString("BINDID")});
|
|
|
+ DBSql.update("DELETE FROM BO_EU_DNCTT_CONTRACT_EXCLUSION_COST_CODE WHERE BINDID = ? OR CONTRACT_ID=?", new Object[]{rowMap.getString("ID"), rowMap.getString("BINDID")});
|
|
|
} else {
|
|
|
String[] exclusionCostCodeArr = exclusionCostCode.split(",");
|
|
|
for (String costCode : exclusionCostCodeArr) {
|
|
|
+ /*
|
|
|
String ccID = DBSql.getString("SELECT ID FROM BO_EU_DNCTT_CONTRACT_EXCLUSION_COST_CODE WHERE (BINDID =? OR CONTRACT_ID=?) AND COST_CODE_ID = ?", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), costCode});
|
|
|
//更新
|
|
|
if (StringUtils.isNotBlank(ccID)) {
|
|
|
DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_COST_CODE SET CLOSED =0,BINDID =?,CONTRACT_ID=? WHERE ID = ?", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), ccID});
|
|
|
continue;
|
|
|
}
|
|
|
+ */
|
|
|
//新增
|
|
|
BO bo = new BO();
|
|
|
bo.set("BINDID", rowMap.getString("BINDID"));
|
|
|
@@ -961,21 +997,27 @@ public class contractService {
|
|
|
}
|
|
|
|
|
|
//删除
|
|
|
- DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_COST_CODE SET CLOSED =1 WHERE (BINDID = ? OR CONTRACT_ID=?) AND COST_CODE_ID NOT IN (?)", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), exclusionCostCode});
|
|
|
+ //DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_COST_CODE SET CLOSED =1 WHERE (BINDID = ? OR CONTRACT_ID=?) AND COST_CODE_ID NOT IN (?)", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), exclusionCostCode});
|
|
|
+
|
|
|
+ DBSql.update("DELETE FROM BO_EU_DNCTT_CONTRACT_EXCLUSION_COST_CODE WHERE (BINDID = ? OR CONTRACT_ID=?) AND COST_CODE_ID NOT IN (?)", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), exclusionCostCode});
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isBlank(exclusionRole)) {
|
|
|
//清空
|
|
|
- DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_ROLE SET CLOSED =1 WHERE BINDID = ? OR CONTRACT_ID=?", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID")});
|
|
|
+ // DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_ROLE SET CLOSED =1 WHERE BINDID = ? OR CONTRACT_ID=?", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID")});
|
|
|
+ DBSql.update("DELETE FROM BO_EU_DNCTT_CONTRACT_EXCLUSION_ROLE WHERE BINDID = ? OR CONTRACT_ID=?", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID")});
|
|
|
} else {
|
|
|
String[] exclusionRoleArr = exclusionRole.split(",");
|
|
|
for (String role : exclusionRoleArr) {
|
|
|
+ /*
|
|
|
String roleID = DBSql.getString("SELECT ID FROM BO_EU_DNCTT_CONTRACT_EXCLUSION_ROLE WHERE (BINDID =? OR CONTRACT_ID=?) AND ROLE_ID = ?", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), role});
|
|
|
//更新
|
|
|
if (StringUtils.isNotBlank(roleID)) {
|
|
|
DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_ROLE SET CLOSED =0,BINDID =?,CONTRACT_ID=? WHERE ID = ?", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), roleID});
|
|
|
continue;
|
|
|
}
|
|
|
+
|
|
|
+ */
|
|
|
//新增
|
|
|
BO bo = new BO();
|
|
|
bo.set("BINDID", rowMap.getString("BINDID"));
|
|
|
@@ -985,7 +1027,8 @@ public class contractService {
|
|
|
}
|
|
|
|
|
|
//删除
|
|
|
- DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_ROLE SET CLOSED =1 WHERE (BINDID = ? OR CONTRACT_ID=?) AND ROLE_ID NOT IN (?)", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), exclusionRole});
|
|
|
+ // DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_EXCLUSION_ROLE SET CLOSED =1 WHERE (BINDID = ? OR CONTRACT_ID=?) AND ROLE_ID NOT IN (?)", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), exclusionRole});
|
|
|
+ DBSql.update("DELETE FROM BO_EU_DNCTT_CONTRACT_EXCLUSION_ROLE WHERE (BINDID = ? OR CONTRACT_ID=?) AND ROLE_ID NOT IN (?)", new Object[]{rowMap.getString("BINDID"), rowMap.getString("ID"), exclusionRole});
|
|
|
}
|
|
|
return true;
|
|
|
}
|