|
|
@@ -372,10 +372,8 @@ public class contractCreateController {
|
|
|
@Mapping(value = "com.awspaas.user.apps.donenow_ctt.contract_service_period")
|
|
|
public ResponseObject servicePeriod(UserContext uc, String contractId, String serviceIds) {
|
|
|
|
|
|
- if (StringUtils.isBlank(contractId))
|
|
|
- return ResponseObject.newErrResponse("请选择合同");
|
|
|
- if (StringUtils.isBlank(serviceIds))
|
|
|
- return ResponseObject.newErrResponse("请选择合同服务");
|
|
|
+ if (StringUtils.isBlank(contractId)) return ResponseObject.newErrResponse("请选择合同");
|
|
|
+ if (StringUtils.isBlank(serviceIds)) return ResponseObject.newErrResponse("请选择合同服务");
|
|
|
|
|
|
BO contractBO = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT", contractId);
|
|
|
|
|
|
@@ -395,7 +393,7 @@ public class contractCreateController {
|
|
|
for (String serviceId : serviceIds.split(",")) {
|
|
|
BO contraService = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE").addQuery("CONTRACT_ID =", contractId).addQuery("ID =", serviceId).detail();
|
|
|
|
|
|
- LocalDate EFFECTIVE_DATE = getLocalDate(contractBO.get("EFFECTIVE_DATE"));//服务生效日期
|
|
|
+ LocalDate EFFECTIVE_DATE = getLocalDate(contraService.get("EFFECTIVE_DATE"));//服务生效日期
|
|
|
if (EFFECTIVE_DATE == null) {
|
|
|
return ResponseObject.newErrResponse("请先设置服务生效日期");
|
|
|
}
|
|
|
@@ -405,6 +403,8 @@ public class contractCreateController {
|
|
|
services.add(contraService);
|
|
|
}
|
|
|
|
|
|
+ StringBuilder errMsg = new StringBuilder();
|
|
|
+ StringBuilder succMsg = new StringBuilder();
|
|
|
Connection conn = null;
|
|
|
try {
|
|
|
conn = DBSql.open();
|
|
|
@@ -416,12 +416,98 @@ public class contractCreateController {
|
|
|
// 3、服务周期分为调整前和调整后两个周期;生效日期之后按照新的数量、单价重新生成服务周期;
|
|
|
contractService.getInstance().AddService(uc, conn, dto, contraService);//保存合同
|
|
|
contractService.getInstance().AddContractServiceProductOne(uc, dto, contraService, conn);//新增服务或者服务包--关联产品
|
|
|
+ if (DBSql.getInt(conn, "SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID=? ", new Object[]{contraService.get("ID")}) == 0) {
|
|
|
+ errMsg.append(contraService.get("NAME") + "生成服务周期失败,");
|
|
|
+ } else {
|
|
|
+ succMsg.append(contraService.get("NAME") + "生成服务周期成功,");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ conn.commit();
|
|
|
+ } catch (SQLException e) {
|
|
|
+
|
|
|
+ e.printStackTrace();
|
|
|
+ try {
|
|
|
+ conn.rollback();
|
|
|
+ } catch (SQLException e1) {
|
|
|
+ e1.printStackTrace();
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ if (conn != null) DBSql.close(conn);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (errMsg.length() > 0) {
|
|
|
+ if (succMsg.length() > 0) return ResponseObject.newWarnResponse(succMsg.toString() + errMsg.toString());
|
|
|
+ return ResponseObject.newErrResponse(errMsg.toString());
|
|
|
+ }
|
|
|
+ return ResponseObject.newOkResponse();
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * 生成合同服务成本
|
|
|
+ * @param uc
|
|
|
+ * @param contractId
|
|
|
+ * @param serviceIds
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Mapping(value = "com.awspaas.user.apps.donenow_ctt.contract_service_cost")
|
|
|
+ public ResponseObject serviceCost(UserContext uc, String contractId, String serviceIds) {
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(contractId)) return ResponseObject.newErrResponse("请选择合同");
|
|
|
+ if (StringUtils.isBlank(serviceIds)) return ResponseObject.newErrResponse("请选择合同服务");
|
|
|
+
|
|
|
+ BO contractBO = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT", contractId);
|
|
|
+
|
|
|
+ // 1、合同开始日期或结束日期变化
|
|
|
+ LocalDate START_DATE = getLocalDate(contractBO.get("START_DATE"));//服务开始日期
|
|
|
+ LocalDate END_DATE = getLocalDate(contractBO.get("END_DATE"));//合同结束日期
|
|
|
+
|
|
|
+ if (END_DATE == null || START_DATE == null) {
|
|
|
+ return ResponseObject.newErrResponse("请先设置合同计费开始日期和计费结束日期");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (START_DATE.isAfter(END_DATE)) {
|
|
|
+ return ResponseObject.newErrResponse("合同开始日期不能大于结束日期");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<BO> services = new ArrayList<>();
|
|
|
+ for (String serviceId : serviceIds.split(",")) {
|
|
|
+ BO contraService = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE").addQuery("CONTRACT_ID =", contractId).addQuery("ID =", serviceId).detail();
|
|
|
+
|
|
|
+ LocalDate EFFECTIVE_DATE = getLocalDate(contraService.get("PURCHASE_START_DATE"));//服务生效日期
|
|
|
+ if (EFFECTIVE_DATE == null) {
|
|
|
+ return ResponseObject.newErrResponse("请先设置采购单开始日期");
|
|
|
+ }
|
|
|
+ if (EFFECTIVE_DATE.isBefore(START_DATE) || EFFECTIVE_DATE.isAfter(END_DATE)) {
|
|
|
+ return ResponseObject.newErrResponse("采购单开始日期必须在合同计费开始日期和结束日期之间");
|
|
|
+ }
|
|
|
+
|
|
|
+ String NEED_PURCHASE = contraService.getString("NEED_PURCHASE");
|
|
|
+ if (NEED_PURCHASE.equals("1") == false) {
|
|
|
+ return ResponseObject.newErrResponse("请选择需要采购的服务");
|
|
|
+ }
|
|
|
+ services.add(contraService);
|
|
|
+ }
|
|
|
|
|
|
+ StringBuilder errMsg = new StringBuilder();
|
|
|
+ StringBuilder succMsg = new StringBuilder();
|
|
|
|
|
|
- if (DBSql.getInt("SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE CONTRACT_SERVICE_ID=? ", new Object[]{contraService.get("ID")}) > 0) {
|
|
|
+ Connection conn = null;
|
|
|
+ try {
|
|
|
+ conn = DBSql.open();
|
|
|
+ conn.setAutoCommit(false);
|
|
|
|
|
|
+ RowMap dto = new RowMap(contractBO.asMap());
|
|
|
+ for (BO contraService : services) {
|
|
|
+
|
|
|
+ contractService.getInstance().AddContractServiceProductOne(uc, dto, contraService, conn);//新增服务或者服务包--关联产品
|
|
|
+
|
|
|
+ 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[]{contraService.getString("CONTRACT_ID"), contraService.getString("ID")});
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(contractCostId)) {
|
|
|
+ errMsg.append(contraService.get("NAME") + "生成服务产品失败,");
|
|
|
} else {
|
|
|
- return ResponseObject.newErrResponse("生成服务周期失败!");
|
|
|
+ succMsg.append(contraService.get("NAME") + "生成服务产品成功,");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -435,10 +521,22 @@ public class contractCreateController {
|
|
|
e1.printStackTrace();
|
|
|
}
|
|
|
} finally {
|
|
|
- if (conn != null)
|
|
|
- DBSql.close(conn);
|
|
|
+ if (conn != null) DBSql.close(conn);
|
|
|
+ }
|
|
|
+ if (errMsg.length() > 0) {
|
|
|
+ if (succMsg.length() > 0) return ResponseObject.newWarnResponse(succMsg.toString() + errMsg.toString());
|
|
|
+ return ResponseObject.newErrResponse(errMsg.toString());
|
|
|
}
|
|
|
+ return ResponseObject.newOkResponse();
|
|
|
+ }
|
|
|
|
|
|
+ @Mapping(value = "com.awspaas.user.apps.donenow_ctt.contract_service_add")
|
|
|
+ public ResponseObject serviceAdd(UserContext uc, String contractId) {
|
|
|
+ ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance("obj_58693e03feac4879901430440b42efd9", uc.getUID(), "合同服务");
|
|
|
+ BO service = new BO();
|
|
|
+ service.setBindId(processInstance.getId());
|
|
|
+ service.set("CONTRACT_ID", contractId);
|
|
|
+ SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_SERVICE", service, processInstance, uc);
|
|
|
return ResponseObject.newOkResponse();
|
|
|
}
|
|
|
|