|
|
@@ -1,5 +1,5 @@
|
|
|
package com.awspaas.user.apps.donenow_ctt.controller;
|
|
|
-
|
|
|
+import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
|
|
|
import com.actionsoft.bpms.bo.engine.BO;
|
|
|
import com.actionsoft.bpms.commons.database.RowMap;
|
|
|
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
|
|
|
@@ -2073,53 +2073,99 @@ public class contractApproveController {
|
|
|
}
|
|
|
|
|
|
@Mapping(value = "com.awspaas.user.apps.donenow_ivt.insertPayRequestDetail")
|
|
|
- public ResponseObject insertPayRequestDetail(UserContext uc, String paymentPlanId, String payRequestId) {
|
|
|
+ public ResponseObject insertPayRequestDetail(UserContext uc, String paymentPlanId) {
|
|
|
try {
|
|
|
- String querySql = "SELECT " +
|
|
|
- "PROJECT_LOCATION, PERIOD_BEGIN_DATE, PERIOD_END_DATE, LOCATION, EXTTEXT3, " +
|
|
|
- "ORDER_NO, PAY_DESC, PLAN_AMOUNT, PLAN_DATE, AMOUNT, REMARK, " +
|
|
|
- "PLAN_NO, PAYMENT_PLAN_ID, ORDER_ID, CONTRACT_SERVICE_ID, CONTRACT_COST_ID " +
|
|
|
- "FROM VIEW_EU_DNIVT_ORDER_PAYMENT_PLAN " +
|
|
|
- "WHERE PAY_PLAN_ID = ?";
|
|
|
- Map<String, Object> planData = DBSql.getMap(querySql, new Object[]{paymentPlanId});
|
|
|
-
|
|
|
- if (planData == null) {
|
|
|
- return ResponseObject.newErrResponse("未找到支付计划ID为 " + paymentPlanId + " 的数据");
|
|
|
+ String[] planIds = paymentPlanId.split(",");
|
|
|
+ if (planIds.length == 0) {
|
|
|
+ return ResponseObject.newErrResponse("支付计划ID不能为空");
|
|
|
}
|
|
|
+ String planId = planIds[0];
|
|
|
+
|
|
|
+ // 检查是否已存在
|
|
|
+ String checkSql = "SELECT BINDID " +
|
|
|
+ "FROM BO_EU_DNIVT_PAY_REQUEST_DETAIL " +
|
|
|
+ "WHERE PAYMENT_PLAN_ID = ?";
|
|
|
+ Map<String, Object> existingBind = DBSql.getMap(checkSql, new Object[]{planId});
|
|
|
+
|
|
|
+ if (existingBind != null) {
|
|
|
+ String existingBindId = existingBind.get("BINDID").toString();
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("isCreated", false);
|
|
|
+ result.put("mainBindId", existingBindId);
|
|
|
+ result.put("message", "已创建请求单主表:bindId");
|
|
|
+ ResponseObject responseObject = ResponseObject.newOkResponse();
|
|
|
+ responseObject.setData(result);
|
|
|
+
|
|
|
+ if(DBSql.getInt("select count(1) from wfc_task where processinstid=?",new Object[]{existingBindId})==0)
|
|
|
+ SDK.getProcessAPI().startById(existingBindId);
|
|
|
|
|
|
- BO detailBO = new BO();
|
|
|
-
|
|
|
- detailBO.set("PAY_REQUEST_ID", payRequestId);
|
|
|
- detailBO.set("PAY_PLAN_ID", planData.get("PAY_PLAN_ID"));
|
|
|
- detailBO.set("PROJECT_LOCATION", planData.get("PROJECT_LOCATION"));
|
|
|
- detailBO.set("PERIOD_BEGIN_DATE", planData.get("PERIOD_BEGIN_DATE"));
|
|
|
- detailBO.set("PERIOD_END_DATE", planData.get("PERIOD_END_DATE"));
|
|
|
- detailBO.set("LOCATION", planData.get("LOCATION"));
|
|
|
- detailBO.set("EXTTEXT3", planData.get("EXTTEXT3"));
|
|
|
- detailBO.set("ORDER_NO", planData.get("ORDER_NO"));
|
|
|
- detailBO.set("PAY_DESC", planData.get("PAY_DESC"));
|
|
|
- detailBO.set("PLAN_AMOUNT", planData.get("PLAN_AMOUNT"));
|
|
|
- detailBO.set("PLAN_DATE", planData.get("PLAN_DATE"));
|
|
|
- detailBO.set("AMOUNT", planData.get("AMOUNT"));
|
|
|
- detailBO.set("REMARK", planData.get("REMARK"));
|
|
|
- detailBO.set("PLAN_NO", planData.get("PLAN_NO"));
|
|
|
- detailBO.set("PAYMENT_PLAN_ID", planData.get("PAYMENT_PLAN_ID"));
|
|
|
- detailBO.set("ORDER_ID", planData.get("ORDER_ID"));
|
|
|
- detailBO.set("CONTRACT_SERVICE_ID", planData.get("CONTRACT_SERVICE_ID"));
|
|
|
- detailBO.set("CONTRACT_COST_ID", planData.get("CONTRACT_COST_ID"));
|
|
|
-
|
|
|
- SDK.getBOAPI().createDataBO("BO_EU_DNIVT_PAY_REQUEST_DETAIL", detailBO, uc);
|
|
|
+
|
|
|
+ return responseObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ String payRequestId = planId;
|
|
|
+ ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance(
|
|
|
+ "obj_8cf0923593b7465490c4e1f73e98d4d3",
|
|
|
+ uc.getUID(),
|
|
|
+ "支付请求单-" + payRequestId
|
|
|
+ );
|
|
|
+
|
|
|
+ BO mainPayRequestBO = new BO();
|
|
|
+ mainPayRequestBO.setBindId(processInstance.getId());
|
|
|
+ SDK.getBOAPI().create("BO_EU_DNIVT_PAY_REQUEST", mainPayRequestBO, processInstance, uc);
|
|
|
+
|
|
|
+ SDK.getProcessAPI().start(processInstance);
|
|
|
+
|
|
|
+ String mainRecordId = mainPayRequestBO.getId();
|
|
|
+ String mainBindId = mainPayRequestBO.getBindId();
|
|
|
+ List<String> detailIds = new ArrayList<>();
|
|
|
+
|
|
|
+ for (String pid : planIds) {
|
|
|
+ String querySql = "SELECT " +
|
|
|
+ "PROJECT_LOCATION, PERIOD_BEGIN_DATE, PERIOD_END_DATE, LOCATION, " +
|
|
|
+ "PAY_DESC, PLAN_AMOUNT, PLAN_DATE, PAY_AMOUNT, REMARK, " +
|
|
|
+ "PLAN_NO, ORDER_ID, CONTRACT_SERVICE_ID, CONTRACT_COST_ID " +
|
|
|
+ "FROM VIEW_EU_DNIVT_ORDER_PAYMENT_PLAN " +
|
|
|
+ "WHERE ID = ?";
|
|
|
+ Map<String, Object> planData = DBSql.getMap(querySql, new Object[]{pid});
|
|
|
+
|
|
|
+ if (planData != null) {
|
|
|
+ BO detailBO = new BO();
|
|
|
+ detailBO.setBindId(mainBindId);
|
|
|
+ detailBO.set("PAYMENT_PLAN_ID", pid);
|
|
|
+ detailBO.set("PROJECT_LOCATION", planData.get("PROJECT_LOCATION"));
|
|
|
+ detailBO.set("PERIOD_BEGIN_DATE", planData.get("PERIOD_BEGIN_DATE"));
|
|
|
+ detailBO.set("PERIOD_END_DATE", planData.get("PERIOD_END_DATE"));
|
|
|
+ detailBO.set("LOCATION", planData.get("LOCATION"));
|
|
|
+ detailBO.set("PAY_DESC", planData.get("PAY_DESC"));
|
|
|
+ detailBO.set("PLAN_AMOUNT", planData.get("PLAN_AMOUNT"));
|
|
|
+ detailBO.set("PLAN_DATE", planData.get("PLAN_DATE"));
|
|
|
+ detailBO.set("AMOUNT", planData.get("PAY_AMOUNT"));
|
|
|
+ detailBO.set("REMARK", planData.get("REMARK"));
|
|
|
+ detailBO.set("PLAN_NO", planData.get("PLAN_NO"));
|
|
|
+ detailBO.set("ORDER_ID", planData.get("ORDER_ID"));
|
|
|
+ detailBO.set("CONTRACT_SERVICE_ID", planData.get("CONTRACT_SERVICE_ID"));
|
|
|
+ detailBO.set("CONTRACT_COST_ID", planData.get("CONTRACT_COST_ID"));
|
|
|
+
|
|
|
+ SDK.getBOAPI().createDataBO("BO_EU_DNIVT_PAY_REQUEST_DETAIL", detailBO, uc);
|
|
|
+ detailIds.add(detailBO.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
- result.put("recordId", detailBO.getId());
|
|
|
- result.put("message", "数据插入成功");
|
|
|
+ result.put("isCreated", true);
|
|
|
+ result.put("mainRecordId", mainRecordId);
|
|
|
+ result.put("mainBindId", mainBindId);
|
|
|
+ result.put("detailRecordIds", detailIds);
|
|
|
+ result.put("message", "成功创建支付请求单及" + detailIds.size() + "条明细记录。");
|
|
|
|
|
|
ResponseObject responseObject = ResponseObject.newOkResponse();
|
|
|
responseObject.setData(result);
|
|
|
return responseObject;
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- return ResponseObject.newErrResponse("数据插入失败:" + e.getMessage());
|
|
|
+ return ResponseObject.newErrResponse("创建支付请求单及明细失败:" + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
|