yuxc
2024-06-21 cc6354cee46ff8facbd16c8919f2616c9031acdb
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java
@@ -1,11 +1,13 @@
package com.vci.web.service.impl;
import com.vci.client.bof.ClientLinkObject;
import com.vci.corba.common.data.UserEntityInfo;
import com.vci.corba.omd.data.BusinessObject;
import com.vci.corba.omd.data.LinkObject;
import com.vci.corba.workflow.data.FlowInstanceInfo;
import com.vci.corba.workflow.data.MapTransfersInfo;
import com.vci.corba.workflow.data.TasksAssignedInfo;
import com.vci.file.dto.VciFileObjectDTO;
import com.vci.omd.utils.ObjectTool;
import com.vci.starter.web.constant.QueryOptionConstant;
import com.vci.starter.web.enumpck.DataSecretEnum;
import com.vci.starter.web.exception.VciBaseException;
@@ -146,7 +148,7 @@
        Map<String, String> conditionMap = WebUtil.getOidQuery(config.getOids());
        conditionMap.put(WebBoServiceI.QUERY_FILTER_SECRET, "false");
        conditionMap.put(WebBoServiceI.QUERY_FILTER_DATARIGHT, "false");
        List<com.vci.client.bof.ClientBusinessObject> allCbo = boService.queryCBO(config.getBtmType().toLowerCase().trim(), conditionMap);
        List<BusinessObject> allCbo = boService.queryCBO(config.getBtmType().toLowerCase().trim(), conditionMap);
        if (allCbo == null || allCbo.size() == 0) {
            throw new VciBaseException(msgCodePrefix + "dataNotNull", new String[]{});
        }
@@ -154,11 +156,11 @@
        //查询数据是否已经发起了流程
        //查询input连接里是不是有流程实例,并且流程实例不等于终止
        conditionMap.put("oid", " in (select f_oid from platformlt_" + processDao.getTaskDataLink() + " where oid " + conditionMap.get("oid").replace("\\IN", " in ") + ")");
        List<com.vci.client.bof.ClientBusinessObject> workInstanceCbos = boService.queryCBO(processDao.getWorkIntanceBtmType(), conditionMap);
        List<BusinessObject> workInstanceCbos = boService.queryCBO(processDao.getWorkIntanceBtmType(), conditionMap);
        if (workInstanceCbos != null && workInstanceCbos.size() > 0) {
            for (com.vci.client.bof.ClientBusinessObject workInstance : workInstanceCbos) {
                if (!workInstance.getLcStatus().equalsIgnoreCase("Obsoleted")) {
                    throw new VciBaseException(msgCodePrefix + "dataSubmitedToProcess", new String[]{workInstance.getName(), workInstance.getCreator()});
            for (BusinessObject workInstance : workInstanceCbos) {
                if (!workInstance.lcStatus.equalsIgnoreCase("Obsoleted")) {
                    throw new VciBaseException(msgCodePrefix + "dataSubmitedToProcess", new String[]{workInstance.name, workInstance.creator});
                }
            }
        }
@@ -167,14 +169,14 @@
        String[][] objectPropertyValues = new String[allCbo.size()][4];
        String[] objIds = new String[allCbo.size()];//业务数据的组件
        for (int i = 0; i < allCbo.size(); i++) {
            com.vci.client.bof.ClientBusinessObject cbo = allCbo.get(i);
            BusinessObject cbo = allCbo.get(i);
            String[] values = new String[4];
            values[0] = cbo.getOid();
            values[1] = cbo.getRevisionid();
            values[2] = cbo.getNameoid();
            values[3] = cbo.getBtmName();
            values[0] = cbo.oid;
            values[1] = cbo.revisionid;
            values[2] = cbo.nameoid;
            values[3] = cbo.btName;
            objectPropertyValues[i] = values;
            objIds[i] = cbo.getOid();
            objIds[i] = cbo.oid;
        }
        FlowInstanceInfo flowInstanceInfo = new FlowInstanceInfo();
@@ -471,15 +473,15 @@
        Map<String, String> conditionMap = new HashMap<String, String>();
        conditionMap.put("f_btwname", processDao.getWorkitemBtmType());
        conditionMap.put("f_oid", QueryOptionConstant.IN + "(" + WebUtil.toInSql(taskIds) + ")");
        List<ClientLinkObject> allLinkData = loService.queryCLO(processDao.getTaskDataLink(), conditionMap);
        List<LinkObject> allLinkData = loService.queryCLO(processDao.getTaskDataLink(), conditionMap);
        String[][] objectPropertyValues = new String[allLinkData.size()][4];
        for (int i = 0; i < allLinkData.size(); i++) {
            ClientLinkObject clo = allLinkData.get(i);
            LinkObject clo = allLinkData.get(i);
            String[] values = new String[4];
            values[0] = clo.getToOid();
            values[1] = clo.getToRevisionOid();
            values[2] = clo.getToNameOid();
            values[3] = clo.getToBTMName();
            values[0] = clo.toOid;
            values[1] = clo.toRevOid;
            values[2] = clo.toNameOid;
            values[3] = clo.toBTName;
            objectPropertyValues[i] = values;
        }
        if ("未命名路由".equalsIgnoreCase(outCome)) {
@@ -592,24 +594,24 @@
        //查询流程实例
        Map<String, String> conditionMap = new HashMap<String, String>();
        conditionMap.put("executionid", executionId.trim() + "*");//会有子流程
        List<com.vci.client.bof.ClientBusinessObject> workInstanceCbos = boService.queryCBO(processDao.getWorkIntanceBtmType(), conditionMap);
        List<BusinessObject> workInstanceCbos = boService.queryCBO(processDao.getWorkIntanceBtmType(), conditionMap);
        if (workInstanceCbos == null || workInstanceCbos.size() == 0) {
            throw new VciBaseException(msgCodePrefix + "executionNotExist");
        }
        //判断是否都是执行状态,前端的判断能被跳过
        List<com.vci.client.bof.ClientBusinessObject> needUpdateCbos = new ArrayList<>();
        List<BusinessObject> needUpdateCbos = new ArrayList<>();
        List<String> workInstanceOids = new ArrayList<String>();
        for (com.vci.client.bof.ClientBusinessObject cbo : workInstanceCbos) {
            if (!cbo.getLcStatus().equalsIgnoreCase("Executing")) {
        for (BusinessObject cbo : workInstanceCbos) {
            if (!cbo.lcStatus.equalsIgnoreCase("Executing")) {
                throw new VciBaseException(msgCodePrefix + "processNotExecutionStatus");
            }
            needUpdateCbos.add(cbo);
            workInstanceOids.add(cbo.getAttributeValue("executionid"));
            workInstanceOids.add(ObjectTool.getBOAttributeValue(cbo,"executionid"));
        }
        //找相关的流程任务对象,并且是正在执行中的
        conditionMap.put("executionid", QueryOptionConstant.IN + "(" + WebUtil.toInSql(workInstanceOids.toArray(new String[0])) + ")");
        conditionMap.put("lcstatus", "Executing");
        List<com.vci.client.bof.ClientBusinessObject> workItemCbos = boService.queryCBO(processDao.getWorkitemBtmType(), conditionMap);
        List<BusinessObject> workItemCbos = boService.queryCBO(processDao.getWorkitemBtmType(), conditionMap);
        if (workItemCbos != null && workItemCbos.size() > 0) {
            needUpdateCbos.addAll(workItemCbos);
        }
@@ -632,24 +634,24 @@
        //查询流程实例
        Map<String, String> conditionMap = new HashMap<String, String>();
        conditionMap.put("executionid", executionId.trim() + "*");//会有子流程
        List<com.vci.client.bof.ClientBusinessObject> workInstanceCbos = boService.queryCBO(processDao.getWorkIntanceBtmType(), conditionMap);
        List<BusinessObject> workInstanceCbos = boService.queryCBO(processDao.getWorkIntanceBtmType(), conditionMap);
        if (workInstanceCbos == null || workInstanceCbos.size() == 0) {
            throw new VciBaseException(msgCodePrefix + "executionNotExist");
        }
        //判断是否都是执行状态,前端的判断能被跳过
        List<com.vci.client.bof.ClientBusinessObject> needUpdateCbos = new ArrayList<>();
        List<BusinessObject> needUpdateCbos = new ArrayList<>();
        List<String> workInstanceOids = new ArrayList<String>();
        for (com.vci.client.bof.ClientBusinessObject cbo : workInstanceCbos) {
            if (!cbo.getLcStatus().equalsIgnoreCase("Suspended")) {
        for (BusinessObject cbo : workInstanceCbos) {
            if (!cbo.lcStatus.equalsIgnoreCase("Suspended")) {
                throw new VciBaseException(msgCodePrefix + "processNotSuspendedStatus");
            }
            needUpdateCbos.add(cbo);
            workInstanceOids.add(cbo.getOid());
            workInstanceOids.add(cbo.oid);
        }
        //找相关的流程任务对象,并且是正在执行中的
        conditionMap.put("executionid", QueryOptionConstant.IN + "(" + WebUtil.toInSql(workInstanceOids.toArray(new String[0])) + ")");
        conditionMap.put("lcstatus", "Suspended");
        List<com.vci.client.bof.ClientBusinessObject> workItemCbos = boService.queryCBO(processDao.getWorkitemBtmType(), conditionMap);
        List<BusinessObject> workItemCbos = boService.queryCBO(processDao.getWorkitemBtmType(), conditionMap);
        if (workItemCbos != null && workItemCbos.size() > 0) {
            needUpdateCbos.addAll(workItemCbos);
        }
@@ -706,7 +708,7 @@
            }
        }
        List<String> causeList = Arrays.asList(new String[]{primaryKeyName});
        List<com.vci.client.bof.ClientBusinessObject> cbos = boService.queryCBO(btmType, conditionMap, null, causeList);
        List<BusinessObject> cbos = boService.queryCBO(btmType, conditionMap, null, causeList);
        if (cbos == null || cbos.size() == 0) {
            throw new VciBaseException("发起流程的业务数据全部不符合要求");
        }
@@ -715,9 +717,9 @@
        for (String oid : oidArray) {
            oidSet.add(oid);
        }
        for (com.vci.client.bof.ClientBusinessObject cbo : cbos) {
            if (oidSet.contains(cbo.getAttributeValue(primaryKeyName))) {
                oidSet.remove(cbo.getAttributeValue(primaryKeyName));
        for (BusinessObject cbo : cbos) {
            if (oidSet.contains(ObjectTool.getBOAttributeValue(cbo,primaryKeyName))) {
                oidSet.remove(ObjectTool.getBOAttributeValue(cbo,primaryKeyName));
            }
        }
        if (oidSet.size() > 0) {