소스 검색

应付款-付款功能

HULEI 1 개월 전
부모
커밋
f0f874c65b
1개의 변경된 파일83개의 추가작업 그리고 37개의 파일을 삭제
  1. 83 37
      com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractApproveController.java

+ 83 - 37
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractApproveController.java

@@ -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());
         }
     }