java110
2021-09-13 657ae0775ce6f6895487d2a4bc2f24a568742cca
service-common/src/main/java/com/java110/common/smo/impl/OaWorkflowUserInnerServiceSMOImpl.java
@@ -263,8 +263,13 @@
            throw new IllegalArgumentException("任务已处理");
        }
        //扩展 工作流功能
        doTaskAuditAgree(reqJson);
        //判断是否为结束流程
        if("1500".equals(reqJson.getString("auditCode"))){
            doTaskFinish(reqJson);
        }else {
            //扩展 工作流功能
            doTaskAuditAgree(reqJson);
        }
        String processInstanceId = task.getProcessInstanceId();
        Authentication.setAuthenticatedUserId(reqJson.getString("nextUserId"));
@@ -278,6 +283,25 @@
            return true;
        }
        return false;
    }
    private void doTaskFinish(JSONObject reqJson){
        OaWorkflowDataDto oaWorkflowDataDto = new OaWorkflowDataDto();
        oaWorkflowDataDto.setStoreId(reqJson.getString("storeId"));
        oaWorkflowDataDto.setBusinessKey(reqJson.getString("id"));
        oaWorkflowDataDto.setPage(1);
        oaWorkflowDataDto.setRow(1);
        List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto);
        if(oaWorkflowDataDtos == null || oaWorkflowDataDtos.size() < 1){
            return;
        }
        //修改 当前 为完成
        OaWorkflowDataPo   oaWorkflowDataPo = new OaWorkflowDataPo();
        oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId());
        oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        oaWorkflowDataPo.setContext(reqJson.getString("auditMessage"));
        oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo);
    }
    /**
@@ -553,6 +577,7 @@
        List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows();
        JSONObject taskObj = null;
        taskObj = new JSONObject();
        taskObj.put("assignee", "-1"); //  默认 不需要指定下一个处理人 表示结束
        boolean isReturn = false;
        //遍历输出连线
        for (SequenceFlow outgoingFlow : outgoingFlows) {
@@ -575,25 +600,31 @@
                    taskObj.put("backIndex", outgoingFlow.getTargetFlowElement().getName());
                    isReturn = true;
                }
                //结束
                vars.put("auditCode", "1500");
                if (isCondition(outgoingFlow.getConditionExpression(), vars)) {
                    //true 获取输出节点名称
                    taskObj.put("exit", outgoingFlow.getTargetFlowElement().getName());
                    isReturn = true;
                }
                if (!isReturn) {
                    String assignee = ((UserTask) targetFlowElement).getAssignee();
                    if (!StringUtil.isEmpty(assignee) && assignee.indexOf("${") < 0) {
                        taskObj.put("assignee", assignee); // 下一节点处理人
                    }
                    if ("${startUserId}".equals(assignee)) {
                        taskObj.put("assignee", reqJson.getString("startUserId")); // 开始人
                    }
                    if ("${nextUserId}".equals(assignee)) {
                        taskObj.put("assignee", "-2"); // 需要前台指定
                    }
                    taskObj.put("next", outgoingFlow.getTargetFlowElement().getName());
                }
            }
            //如果下一个为 结束节点
            if (targetFlowElement instanceof EndEvent) {
                Map vars = new HashMap();
                vars.put("auditCode", "1100");
                if (isCondition(outgoingFlow.getConditionExpression(), vars)) {
                    taskObj.put("assignee", "-1"); // 没有下一处理人了
                }
                //true 获取输出节点名称
                taskObj.put("exit", "1");
            }
        }
        tasks.add(taskObj);