Bläddra i källkod

6、合同服务调整,增加合同服务修改表、表单、视图;保存后数据同步到合同服务上并生成对应的合同产品、合同服务周期;

zhangyao 4 månader sedan
förälder
incheckning
a850f07696

BIN
com.awspaas.user.apps.donenow_ctt/lib/com.awspaas.user.apps.donenow_ctt.jar


+ 50 - 3
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractCreateController.java

@@ -1,6 +1,7 @@
 package com.awspaas.user.apps.donenow_ctt.controller;
 
 import com.actionsoft.bpms.bo.engine.BO;
+import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance;
 import com.actionsoft.bpms.commons.database.RowMap;
 import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
 import com.actionsoft.bpms.server.UserContext;
@@ -14,6 +15,8 @@ import org.apache.commons.lang3.StringUtils;
 
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 /**
@@ -189,8 +192,7 @@ public class contractCreateController {
      */
     @Mapping(value = "com.awspaas.user.apps.donenow_ctt.contract_cost_delete", desc = "合同产品删除")
     public ResponseObject deleteContractProduct(UserContext uc, String costIds) {
-        if (StringUtils.isBlank(costIds))
-            return ResponseObject.newErrResponse("请选择要删除的条目!");
+        if (StringUtils.isBlank(costIds)) return ResponseObject.newErrResponse("请选择要删除的条目!");
 
         String[] costIdArr = costIds.split(",");
         String sql = "SELECT * FROM BO_EU_DNCTT_CONTRACT_COST WHERE ID IN(";
@@ -216,7 +218,21 @@ public class contractCreateController {
             return ResponseObject.newErrResponse(StringUtils.join(errorList, "、") + ",无法删除!");
         }
 
-        String delSql = "DELETE FROM BO_EU_DNCTT_CONTRACT_COST WHERE ID IN(";
+        for (RowMap cost : costList) {
+            SDK.getProcessAPI().deleteById(cost.getString("BINDID"), uc.getUID());
+        }
+        return ResponseObject.newOkResponse();
+    }
+
+    /**
+     * 删除合同服务
+     */
+    @Mapping(value = "com.awspaas.user.apps.donenow_ctt.contract_service_delete", desc = "删除合同服务")
+    public ResponseObject deleteContractService(UserContext uc, String serviceIds) {
+        String[] costIdArr = serviceIds.split(",");
+
+
+        String delSql = "DELETE FROM BO_EU_DNCTT_CONTRACT_SERVICE WHERE ID IN(";
         for (int i = 0; costIdArr.length > i; i++) {
             delSql += "?,";
         }
@@ -226,5 +242,36 @@ public class contractCreateController {
         return ResponseObject.newOkResponse();
     }
 
+    /**
+     * 编辑合同服务
+     */
+    @Mapping(value = "com.awspaas.user.apps.donenow_ctt.contract_service_edit")
+    public ResponseObject editContractService(UserContext uc, String serviceId) {
+
+        RowMap contractService = DBSql.getMap("SELECT * FROM BO_EU_DNCTT_CONTRACT_SERVICE WHERE ID=?", new Object[]{serviceId});
+        contractService.remove("ID");
+        contractService.remove("BINDID");
+
+        ProcessInstance contractInstance = SDK.getProcessAPI().createBOProcessInstance("obj_e4b0c7ae587c406b808f3a4785f05e23", uc.getUID(), "服务调整-" + contractService.getString("NAME") + "-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
+
+        BO editBO = new BO();
+        editBO.setAll(contractService);
+        editBO.set("CONTRACT_SERVICE_ID", serviceId);
+        editBO.set("OLD_UNIT_PRICE", contractService.get("UNIT_PRICE"));
+        editBO.set("OLD_TOTAL_PRICE", contractService.get("TOTAL_PRICE"));
+        editBO.set("OLD_UNIT_COST", contractService.get("UNIT_COST"));
+        editBO.set("OLD_QUANTITY", contractService.get("QUANTITY"));
+        editBO.set("OLD_TOTAL_COST", contractService.get("TOTAL_COST"));
+        editBO.setBindId(contractInstance.getId());
+
+        SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_SERVICE_EDIT", editBO, contractInstance, uc);
+
+        String processUrl = SDK.getFormAPI().getFormURL(SDK.getPortalAPI().getPortalUrl(), uc.getSessionId(), contractInstance.getId(), null, 1, null, editBO.getId(), null, true);
+
+        ResponseObject responseObject = ResponseObject.newOkResponse();
+        responseObject.setData(processUrl);
+
+        return responseObject;
+    }
 
 }

+ 83 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/contractCreateFormAfterSave.java

@@ -11,6 +11,7 @@ import com.awspaas.user.apps.donenow_ctt.service.contractService;
 
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.util.Map;
 
 public class contractCreateFormAfterSave extends ExecuteListener {
 
@@ -26,6 +27,8 @@ public class contractCreateFormAfterSave extends ExecuteListener {
         return "1.0";
     }
 
+    private final String[] excludesArray = new String[]{"ID", "ORGID", "BINDID", "CREATEDATE", "CREATEUSER", "UPDATEDATE", "UPDATEUSER", "PROCESSDEFID", "ISEND"};
+
     /**
      * 保存合同
      * @param processExecutionContext
@@ -71,5 +74,85 @@ public class contractCreateFormAfterSave extends ExecuteListener {
         }
 
 
+        //新增服务
+        if (boName.equals("BO_EU_DNCTT_CONTRACT_SERVICE") && processExecutionContext.getProcessInstance().getProcessDefId().equals("obj_58693e03feac4879901430440b42efd9")) {
+            System.out.println("保存合同服务--BO_EU_DNCTT_CONTRACT_SERVICE");
+            BO formData = (BO) processExecutionContext.getParameter(ListenerConst.FORM_EVENT_PARAM_FORMDATA);
+            if (formData != null)
+                formData = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE", formData.getId());
+            if (formData != null) {
+                Connection conn = null;
+                try {
+                    conn = DBSql.open();
+                    conn.setAutoCommit(false);
+
+                    BO contractBO = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT", formData.getString("CONTRACT_ID"));
+                    formData.set("BINDID", contractBO.getBindId());
+                    SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE", formData);
+
+                    RowMap dto = new RowMap(contractBO.asMap());
+
+                    contractService.getInstance().AddContractServiceProduct(processExecutionContext.getUserContext(), dto);//新增服务或者服务包--关联产品
+
+                    contractService.getInstance().AddServiceServiceBundleOne(processExecutionContext.getUserContext(), conn, dto, formData);//保存合同
+                    conn.commit();
+                } catch (SQLException e) {
+
+                    e.printStackTrace();
+                    conn.rollback();
+
+                } finally {
+                    if (conn != null)
+                        DBSql.close(conn);
+                }
+            }
+
+        }
+
+        //修改服务
+        if (boName.equals("BO_EU_DNCTT_CONTRACT_SERVICE_EDIT") && processExecutionContext.getProcessInstance().getProcessDefId().equals("obj_e4b0c7ae587c406b808f3a4785f05e23")) {
+            System.out.println("保存合同服务--BO_EU_DNCTT_CONTRACT_SERVICE");
+            BO formData = (BO) processExecutionContext.getParameter(ListenerConst.FORM_EVENT_PARAM_FORMDATA);
+            if (formData != null)
+                formData = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE_EDIT", formData.getId());
+            if (formData != null) {
+                Connection conn = null;
+                try {
+                    conn = DBSql.open();
+                    conn.setAutoCommit(false);
+
+                    BO contractServiceBO = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_SERVICE", formData.getString("CONTRACT_SERVICE_ID"));
+
+                    Map<String, Object> contractServiceMap = formData.asMap();
+
+                    for (String key : excludesArray) {
+                        contractServiceMap.remove(key);
+                    }
+                    contractServiceBO.setAll(contractServiceMap);
+
+                    SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE", contractServiceBO);
+
+                    BO contractBO = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT", contractServiceBO.getString("CONTRACT_ID"));
+
+                    RowMap dto = new RowMap(contractBO.asMap());
+
+                    contractService.getInstance().AddContractServiceProduct(processExecutionContext.getUserContext(), dto);//新增服务或者服务包--关联产品
+
+                    contractService.getInstance().AddServiceServiceBundleOne(processExecutionContext.getUserContext(), conn, dto, contractServiceBO);//保存合同
+                    conn.commit();
+                } catch (SQLException e) {
+
+                    e.printStackTrace();
+                    conn.rollback();
+
+                } finally {
+                    if (conn != null)
+                        DBSql.close(conn);
+                }
+            }
+
+        }
+
+
     }
 }

+ 9 - 1
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -633,7 +633,15 @@ public class contractService {
             conn = DBSql.open();
             conn.setAutoCommit(false);
             //获取服务列表
-            List<BO> serviceList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE").connection(conn).addQuery("BINDID=", contract.get("BINDID")).list();//需要采购
+            List<BO> serviceList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE").connection(conn).addQuery("BINDID=", contract.get("BINDID")).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 (serviceList2 != null && serviceList2.size() > 0)
+                for (BO service : serviceList2) {
+                    serviceList.add(service);
+                }
 
             for (BO service : serviceList) {
 

BIN
com.awspaas.user.apps.donenow_ivt/lib/com.awspaas.user.apps.donenow_ivt.jar