提交 9457bcbd authored 作者: whydesc's avatar whydesc

--工作流实现分支

上级 c9689b4d
...@@ -12,7 +12,8 @@ ...@@ -12,7 +12,8 @@
import {ref, watch} from "vue"; import {ref, watch} from "vue";
// import formCreate from "@form-create/ant-design-vue"; // import formCreate from "@form-create/ant-design-vue";
// import { default as formCreate } from '@form-create/ant-design-vue' // import { default as formCreate } from '@form-create/ant-design-vue'
import * as formCreate from '@form-create/ant-design-vue' //import * as formCreate from '@form-create/ant-design-vue'
import formCreate from '@form-create/ant-design-vue';
const option = ref([]); const option = ref([]);
const rule = ref([]); const rule = ref([]);
......
...@@ -10,9 +10,9 @@ ...@@ -10,9 +10,9 @@
<script setup> <script setup>
import {ref, watch} from "vue"; import {ref, watch} from "vue";
//import formCreate from "@form-create/ant-design-vue"; import formCreate from "@form-create/ant-design-vue";
// import { default as formCreate } from '@form-create/ant-design-vue' // import { default as formCreate } from '@form-create/ant-design-vue'
import * as formCreate from '@form-create/ant-design-vue' //import * as formCreate from '@form-create/ant-design-vue'
const option = ref([]); const option = ref([]);
const rule = ref([]); const rule = ref([]);
......
...@@ -24,11 +24,26 @@ ...@@ -24,11 +24,26 @@
</a-button> </a-button>
</a-space> </a-space>
</div> </div>
<div class="action-right"> <div class="action-right">
<div class="next-node-info"> <div class="next-node-info">
<span class="next-node-label">下一节点:</span> <span class="next-node-label">下一节点:</span>
<a-tag color="blue" class="next-node-tag"> <a-select
v-model:value="nextNodeNameSele"
placeholder="请选择下一个节点"
style="width: 100%"
@change="handleChange"
v-if="shownextNodeNameSele"
>
<a-select-option
v-for="item in tableOptions"
:key="item.id"
:value="item.value"
>
{{ item.name }}
</a-select-option>
</a-select>
<a-tag color="blue" class="next-node-tag" v-if="shownextNodeNametext">
{{ nextNodeName || '等待确定下一节点' }} {{ nextNodeName || '等待确定下一节点' }}
</a-tag> </a-tag>
</div> </div>
...@@ -226,10 +241,21 @@ ...@@ -226,10 +241,21 @@
const formKey = ref(0); const formKey = ref(0);
const showApprovalUi = ref(true); const showApprovalUi = ref(true);
const flowData = ref<any>({}); const flowData = ref<any>({});
const flowRecordList = ref<any[]>([]); const flowRecordList = ref<any[]>([]);
const nextNodeName = ref(''); const nextNodeName = ref('');
const nextNode = ref<any>(null); const nextNode = ref<any>(null);
const nextNodenum = ref(0);
const tableOptions = ref([]);
const nextNodeNameSele = ref('');
const nextNodeNameSelevue = ref(0);
const shownextNodeNameSele = ref(true);
const shownextNodeNametext = ref(false);
const res0 = ref();
const res1 = ref();
const res3 = ref();
const taskForm = reactive({ const taskForm = reactive({
returnTaskShow: false, returnTaskShow: false,
...@@ -366,6 +392,8 @@ ...@@ -366,6 +392,8 @@
} }
let { taskId } = taskForm; let { taskId } = taskForm;
if (!taskId) { if (!taskId) {
// try to resolve taskId by business id from workFlowData // try to resolve taskId by business id from workFlowData
const dataId = workFlowData.value?.dataId || workFlowData.value?.id || workFlowData.value?.businessId; const dataId = workFlowData.value?.dataId || workFlowData.value?.id || workFlowData.value?.businessId;
...@@ -389,6 +417,7 @@ ...@@ -389,6 +417,7 @@
const resData = await flowTaskForm({ taskId }); const resData = await flowTaskForm({ taskId });
const { flowForm = {} } = resData; const { flowForm = {} } = resData;
formTp.value = flowForm.formTp; formTp.value = flowForm.formTp;
if (flowForm.formTp == '1') { if (flowForm.formTp == '1') {
await refCruInnerForm.value.iniData(flowForm); await refCruInnerForm.value.iniData(flowForm);
} else { } else {
...@@ -484,6 +513,10 @@ ...@@ -484,6 +513,10 @@
comment: '', comment: '',
values: {}, values: {},
}; };
//找到选择的下一步节点
if(nextNodenum.value>1){
submitData.values['userTaskid'] = nextNodeNameSelevue.value;
}
if (!showApprovalUi.value) { if (!showApprovalUi.value) {
await complete(submitData); await complete(submitData);
...@@ -491,12 +524,18 @@ ...@@ -491,12 +524,18 @@
return false; return false;
} }
const formData = await validate(); const formData = await validate();
Object.assign(submitData, formData); Object.assign(submitData, formData);
submitData.comment = submitData.comment || ''; submitData.comment = submitData.comment || '';
if (!isFixed.value) { //alert("dd"+isFixed.value);
// if (!isFixed.value) {
//alert("dd"+userType.value);
if (userType.value === 'user') { if (userType.value === 'user') {
submitData.values['approval'] = formData.checkSendUser;
submitData.values['approvalType'] = 'user';
if (formData.checkSendUser) { if (formData.checkSendUser) {
submitData.values['approval'] = formData.checkSendUser; submitData.values['approval'] = formData.checkSendUser;
submitData.values['approvalType'] = 'user'; submitData.values['approvalType'] = 'user';
...@@ -505,8 +544,8 @@ ...@@ -505,8 +544,8 @@
submitData.values['approval'] = formData.checkSendRole; submitData.values['approval'] = formData.checkSendRole;
submitData.values['approvalType'] = 'role'; submitData.values['approvalType'] = 'role';
} }
} // }
console.log("执行发送 ",submitData);
// 执行发送 // 执行发送
const result = await complete(submitData); const result = await complete(submitData);
...@@ -539,6 +578,56 @@ ...@@ -539,6 +578,56 @@
console.log('流程图加载完成'); console.log('流程图加载完成');
}; };
const handleChange = (value: string) => {
console.log(`selected ${value}`);
nextNodeNameSelevue.value=value;
console.log(" nextNodeNameSelevue.value ",nextNodeNameSelevue.value);
if(value==0){
ChangeSelectNodeAfter(res0);
}
if(value==1){
ChangeSelectNodeAfter(res1);
}
if(value==2){
ChangeSelectNodeAfter(res2);
}
};
function ChangeSelectNodeAfter(res) {
isFixed.value = res.dataType == 'fixed' ? true : false;
if (isFixed.value && !isApproval.value) {
showApprovalUi.value;
}
nextNode.value = res;
nextNodeName.value = res.userTask?.name || '';
//alert(""+res.dataType);
if (res.type === 'role') {
removeSchemaByFiled('checkSendUser');
if (res.dataType === 'fixed' && res.userTask?.candidateGroups) {
setFieldsValue({
checkSendRole: res.userTask.candidateGroups,
});
}
} else {
removeSchemaByFiled('checkSendRole');
if (res.dataType === 'fixed' && res.userTask?.assignee) {
setFieldsValue({
checkSendUser: res.userTask.assignee,
});
}
}
}
const iniData = async (data: any) => { const iniData = async (data: any) => {
try { try {
// 设置工作流数据 // 设置工作流数据
...@@ -563,37 +652,60 @@ ...@@ -563,37 +652,60 @@
} }
if (taskForm.taskId) { if (taskForm.taskId) {
const res = await getNextFlowNode({ taskId: taskForm.taskId }); const reslist = await getNextFlowNode({ taskId: taskForm.taskId });
if (res == null) {
console.log("getNextFlowNode reslist ",reslist);
if (reslist == null) {
nextNodeName.value = '结束'; nextNodeName.value = '结束';
removeSchemaByFiled('checkSendRole'); removeSchemaByFiled('checkSendRole');
removeSchemaByFiled('checkSendUser'); removeSchemaByFiled('checkSendUser');
showApprovalUi.value = isApproval.value; showApprovalUi.value = isApproval.value;
shownextNodeNameSele.value =false;
shownextNodeNametext.value =true;
return false; return false;
} }else{
shownextNodeNameSele.value =true;
shownextNodeNametext.value =false;
isFixed.value = res.dataType == 'fixed' ? true : false; nextNodenum.value=reslist.length;
if (isFixed.value && !isApproval.value) {
showApprovalUi.value;
}
nextNode.value = res;
nextNodeName.value = res.userTask?.name || '';
if (res.type === 'role') { //why工作流修改
removeSchemaByFiled('checkSendUser'); // 使用 for 循环赋值
if (res.dataType === 'fixed' && res.userTask?.candidateGroups) { for (let i = 0; i <reslist.length; i++) {
setFieldsValue({ let resb = reslist[i];
checkSendRole: res.userTask.candidateGroups, tableOptions.value.push({
id: `${i}`,
name: `${resb.userTask.name}`,
value: `${i}`
}); });
} }
} else { nextNodeNameSele.value = tableOptions.value[0].name;
removeSchemaByFiled('checkSendRole');
if (res.dataType === 'fixed' && res.userTask?.assignee) {
setFieldsValue({ // tableOptions.value = res.userTaskList;
checkSendUser: res.userTask.assignee,
});
const res = reslist[0]; // 获取第一行数据
console.log("res ",res);
ChangeSelectNodeAfter(res);
if(reslist.length==1){
res0.value = reslist[0];
}
if(reslist.length==2){
res0.value = reslist[0];
res1.value = reslist[1];
} }
if(reslist.length==3){
res0.value = reslist[0];
res1.value = reslist[1];
res2.value = reslist[2];
}
} }
} }
......
...@@ -16,6 +16,10 @@ public class FlowNextDto implements Serializable { ...@@ -16,6 +16,10 @@ public class FlowNextDto implements Serializable {
* 节点对象 * 节点对象
*/ */
private UserTask userTask; private UserTask userTask;
/**
* 待办节点对象 why工作流修改
*/
private List<UserTask> userTaskList;
/** /**
* 待办人员 * 待办人员
*/ */
......
...@@ -18,4 +18,5 @@ public class FlowTaskVo { ...@@ -18,4 +18,5 @@ public class FlowTaskVo {
private String assignee; private String assignee;
private List<String> candidateUsers; private List<String> candidateUsers;
private List<String> candidateGroups; private List<String> candidateGroups;
private String userTaskid;
} }
...@@ -41,7 +41,7 @@ public class FindNextNodeUtil { ...@@ -41,7 +41,7 @@ public class FindNextNodeUtil {
if (getSubProcess(flowElements, flowElement) != null) { if (getSubProcess(flowElements, flowElement) != null) {
flowElement = getSubProcess(flowElements, flowElement); flowElement = getSubProcess(flowElements, flowElement);
} }
} }else {
//获取Task的出线信息--可以拥有多个 //获取Task的出线信息--可以拥有多个
List<SequenceFlow> outGoingFlows = null; List<SequenceFlow> outGoingFlows = null;
if (flowElement instanceof Task) { if (flowElement instanceof Task) {
...@@ -55,13 +55,16 @@ public class FindNextNodeUtil { ...@@ -55,13 +55,16 @@ public class FindNextNodeUtil {
} else if (flowElement instanceof CallActivity) { } else if (flowElement instanceof CallActivity) {
outGoingFlows = ((CallActivity) flowElement).getOutgoingFlows(); outGoingFlows = ((CallActivity) flowElement).getOutgoingFlows();
} }
int outGoingFlowssize = outGoingFlows.size();
if (outGoingFlows != null && outGoingFlows.size() > 0) { if (outGoingFlows != null && outGoingFlows.size() > 0) {
int lxxh = outGoingFlows.size() - outGoingFlowssize;
//遍历所有的出线--找到可以正确执行的那一条 //遍历所有的出线--找到可以正确执行的那一条
for (SequenceFlow sequenceFlow : outGoingFlows) { for (SequenceFlow sequenceFlow : outGoingFlows) {
//1.有表达式,且为true //1.有表达式,且为true
//2.无表达式 //2.无表达式
String expression = sequenceFlow.getConditionExpression(); String expression = sequenceFlow.getConditionExpression();
if (expression == null ||Boolean.parseBoolean( if (expression == null || Boolean.parseBoolean(
String.valueOf( String.valueOf(
result(map, expression.substring(expression.lastIndexOf("{") + 1, expression.lastIndexOf("}")))))) { result(map, expression.substring(expression.lastIndexOf("{") + 1, expression.lastIndexOf("}")))))) {
//出线的下一节点 //出线的下一节点
...@@ -92,10 +95,17 @@ public class FindNextNodeUtil { ...@@ -92,10 +95,17 @@ public class FindNextNodeUtil {
} }
//排他网关 //排他网关
else if (nextFlowElement instanceof ExclusiveGateway) { else if (nextFlowElement instanceof ExclusiveGateway) {
next(flowElements, nextFlowElement, map, nextUser); if (lxxh > 0) {
// continue;
}
//next(flowElements, nextFlowElement, map, nextUser);
nextByGateway(flowElements, nextFlowElement, map, nextUser);
} }
//并行网关 //并行网关
else if (nextFlowElement instanceof ParallelGateway) { else if (nextFlowElement instanceof ParallelGateway) {
if (lxxh > 0) {
// continue;
}
next(flowElements, nextFlowElement, map, nextUser); next(flowElements, nextFlowElement, map, nextUser);
} }
//接收任务 //接收任务
...@@ -115,6 +125,91 @@ public class FindNextNodeUtil { ...@@ -115,6 +125,91 @@ public class FindNextNodeUtil {
next(flowElements, nextFlowElement, map, nextUser); next(flowElements, nextFlowElement, map, nextUser);
} }
} }
lxxh++;
}
}
}
}
public static void nextByGateway(Collection<FlowElement> flowElements, FlowElement flowElement, Map<String, Object> map, List<UserTask> nextUser) {
//如果是结束节点
if (flowElement instanceof EndEvent) {
//如果是子任务的结束节点
if (getSubProcess(flowElements, flowElement) != null) {
flowElement = getSubProcess(flowElements, flowElement);
}
}
//获取Task的出线信息--可以拥有多个
List<SequenceFlow> outGoingFlows = null;
if (flowElement instanceof Task) {
outGoingFlows = ((Task) flowElement).getOutgoingFlows();
} else if (flowElement instanceof Gateway) {
outGoingFlows = ((Gateway) flowElement).getOutgoingFlows();
} else if (flowElement instanceof StartEvent) {
outGoingFlows = ((StartEvent) flowElement).getOutgoingFlows();
} else if (flowElement instanceof SubProcess) {
outGoingFlows = ((SubProcess) flowElement).getOutgoingFlows();
} else if (flowElement instanceof CallActivity) {
outGoingFlows = ((CallActivity) flowElement).getOutgoingFlows();
}
if (outGoingFlows != null && outGoingFlows.size() > 0) {
//遍历所有的出线--找到可以正确执行的那一条
for (SequenceFlow sequenceFlow : outGoingFlows) {
//1.有表达式,且为true
//2.无表达式
String expression = sequenceFlow.getConditionExpression();
//出线的下一节点
String nextFlowElementID = sequenceFlow.getTargetRef();
if (checkSubProcess(nextFlowElementID, flowElements, nextUser)) {
continue;
}
//查询下一节点的信息
FlowElement nextFlowElement = getFlowElementById(nextFlowElementID, flowElements);
//调用流程
if (nextFlowElement instanceof CallActivity) {
CallActivity ca = (CallActivity) nextFlowElement;
if (ca.getLoopCharacteristics() != null) {
UserTask userTask = new UserTask();
userTask.setId(ca.getId());
userTask.setId(ca.getId());
userTask.setLoopCharacteristics(ca.getLoopCharacteristics());
userTask.setName(ca.getName());
nextUser.add(userTask);
}
next(flowElements, nextFlowElement, map, nextUser);
}
//用户任务
if (nextFlowElement instanceof UserTask) {
nextUser.add((UserTask) nextFlowElement);
}
//排他网关
else if (nextFlowElement instanceof ExclusiveGateway) {
next(flowElements, nextFlowElement, map, nextUser);
}
//并行网关
else if (nextFlowElement instanceof ParallelGateway) {
next(flowElements, nextFlowElement, map, nextUser);
}
//接收任务
else if (nextFlowElement instanceof ReceiveTask) {
next(flowElements, nextFlowElement, map, nextUser);
}
//服务任务
else if (nextFlowElement instanceof ServiceTask) {
next(flowElements, nextFlowElement, map, nextUser);
}
//子任务的起点
else if (nextFlowElement instanceof StartEvent) {
next(flowElements, nextFlowElement, map, nextUser);
}
//结束节点
else if (nextFlowElement instanceof EndEvent) {
next(flowElements, nextFlowElement, map, nextUser);
}
} }
} }
} }
...@@ -215,9 +310,12 @@ public class FindNextNodeUtil { ...@@ -215,9 +310,12 @@ public class FindNextNodeUtil {
public static Object result(Map<String, Object> map, String expression) { public static Object result(Map<String, Object> map, String expression) {
FelEngine fel = new FelEngineImpl(); FelEngine fel = new FelEngineImpl();
FelContext ctx = fel.getContext(); FelContext ctx = fel.getContext();
if(map!=null){
for (Map.Entry<String, Object> entry : map.entrySet()) { for (Map.Entry<String, Object> entry : map.entrySet()) {
ctx.set(entry.getKey(), entry.getValue()); ctx.set(entry.getKey(), entry.getValue());
} }
}
Object result = fel.eval(expression); Object result = fel.eval(expression);
return result; return result;
} }
......
...@@ -104,10 +104,12 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow ...@@ -104,10 +104,12 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow
String zdmc=""; String zdmc="";
String zdval=""; String zdval="";
if(formValues.get("dataName")==null){ if(formValues.get("dataName")==null){
if(formValues.get("_value")!=null) {
Map zdv=(Map)formValues.get("_value"); Map zdv = (Map) formValues.get("_value");
zdmc=(String)zdv.get("dataName"); zdmc = (String) zdv.get("dataName");
zdval=zdv.get("dataId").toString(); zdval = zdv.get("dataId").toString();
}
}else{ }else{
zdmc=(String)formValues.get("dataName"); zdmc=(String)formValues.get("dataName");
......
...@@ -115,6 +115,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask ...@@ -115,6 +115,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.NORMAL.getType(), taskVo.getComment()); taskService.addComment(taskVo.getTaskId(), taskVo.getInstanceId(), FlowComment.NORMAL.getType(), taskVo.getComment());
//Long userId = SecurityUtils.getLoginUser().getUser().getUserId(); //Long userId = SecurityUtils.getLoginUser().getUser().getUserId();
SysUser loginUser = iFlowThirdService.getLoginUser(); SysUser loginUser = iFlowThirdService.getLoginUser();
taskService.complete(taskVo.getTaskId(), taskVo.getValues()); taskService.complete(taskVo.getTaskId(), taskVo.getValues());
Object userTypeObject = taskVo.getValues().get("approvalType"); Object userTypeObject = taskVo.getValues().get("approvalType");
...@@ -122,6 +123,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask ...@@ -122,6 +123,7 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
Task nextTask = taskService.createTaskQuery() Task nextTask = taskService.createTaskQuery()
.processInstanceId(taskVo.getInstanceId()) .processInstanceId(taskVo.getInstanceId())
.singleResult(); .singleResult();
if(nextTask!=null){
String userType = userTypeObject.toString(); String userType = userTypeObject.toString();
String approvalId = taskVo.getValues().get("approval").toString(); String approvalId = taskVo.getValues().get("approval").toString();
if(userType.equals("user")) { if(userType.equals("user")) {
...@@ -130,6 +132,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask ...@@ -130,6 +132,8 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
taskService.addCandidateGroup(nextTask.getId(),approvalId); taskService.addCandidateGroup(nextTask.getId(),approvalId);
} }
} }
}
} }
//判断是否是最后一个节点 //判断是否是最后一个节点
...@@ -1579,12 +1583,17 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask ...@@ -1579,12 +1583,17 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
*/ */
@Override @Override
public Result getNextFlowNode(FlowTaskVo flowTaskVo) { public Result getNextFlowNode(FlowTaskVo flowTaskVo) {
/** 1个节点 逻辑
// todo 似乎逻辑未写完,待检查 // todo 似乎逻辑未写完,待检查
FlowNextDto flowNextDto = this.getNextFlowNode(flowTaskVo.getTaskId(), flowTaskVo.getValues()); FlowNextDto flowNextDto = this.getNextFlowNode(flowTaskVo.getTaskId(), flowTaskVo.getValues());
// if (flowNextDto==null) { // if (flowNextDto==null) {
// return Result.OK("流程已完结", null); // return Result.OK("流程已完结", null);
// } // }
return Result.OK(flowNextDto); return Result.OK(flowNextDto);
*/
List<FlowNextDto> flowNextDto = this.getNextFlowNodeList(flowTaskVo.getTaskId(), flowTaskVo.getValues());
return Result.OK(flowNextDto);
} }
/** /**
...@@ -1657,6 +1666,12 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask ...@@ -1657,6 +1666,12 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
flowNextDto.setNodeisApprove(issApprove); flowNextDto.setNodeisApprove(issApprove);
} }
//why工作流修改
if(nextUserTask!=null&&nextUserTask.size()>0){
flowNextDto.setUserTaskList(nextUserTask);
}
return flowNextDto; return flowNextDto;
} }
...@@ -1664,6 +1679,90 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask ...@@ -1664,6 +1679,90 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
return null; return null;
} }
/**
* 获取下一个节点信息,流程定义上的节点信息
* @param taskId 当前节点id
* @param values 流程变量
* @return 如果返回null,表示没有下一个节点,流程结束
*/
public List<FlowNextDto> getNextFlowNodeList(String taskId, Map<String, Object> values) {
List<FlowNextDto> FlowNextDtoList=new ArrayList<>();
//当前节点
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if (Objects.nonNull(task)) {
// 下个任务节点
List<UserTask> nextUserTask = FindNextNodeUtil.getNextUserTasks(repositoryService, task, values);
if (CollectionUtils.isNotEmpty(nextUserTask)) {
for (UserTask userTask : nextUserTask) {
FlowNextDto flowNextDto = new FlowNextDto();
flowNextDto.setUserTask(userTask);
//待办人员
List<SysUser> sysUserFromTask = this.getSysUserFromTask(userTask);
flowNextDto.setUserList(sysUserFromTask);
MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics();
if (Objects.nonNull(multiInstance)) {
// 会签 多实例
String collectionString = multiInstance.getInputDataItem();
Object colObj = values.get(collectionString);
List<String> userNameList = null;
if(colObj!=null){
userNameList = (List) colObj;
}
if (CollUtil.isNotEmpty(userNameList)){
// 待办人员从变量中获取 否则就是节点中配置的用户 sysUserFromTask
List<SysUser> userList = Lists.newArrayList();
for (String username : userNameList) {
SysUser userByUsername = iFlowThirdService.getUserByUsername(username);
if (userByUsername==null){
throw new CustomException(username + " 用户名未找到");
} else {
userList.add(userByUsername);
}
}
flowNextDto.setUserList(userList);
} else {
// 变量中没有传入,写入节点中配置的用户
List<String> collect_username = sysUserFromTask.stream().map(SysUser::getUsername).collect(Collectors.toList());
values.put(collectionString,collect_username);
}
} else {
// todo 读取自定义节点属性做些啥?
//String dataType = userTask.getAttributeValue(ProcessConstants.NAMASPASE, ProcessConstants.PROCESS_CUSTOM_DATA_TYPE);
String dataType="fixed";
String userType = userTask.getAttributeValue(ProcessConstants.NAMASPASE, ProcessConstants.PROCESS_CUSTOM_USER_TYPE);
flowNextDto.setType(userType);
if(userType.equals("user")&&(userTask.getAssignee()==null||(userTask.getAssignee()!=null&&userTask.getAssignee().equals("")))){
dataType="dynamic";
}
if(userType.equals("role")&&(userTask.getCandidateGroups()==null||(userTask.getCandidateGroups()!=null&&userTask.getCandidateGroups().size()==0))){
dataType="dynamic";
}
if(userType.equals("role")&&(userTask.getCandidateGroups()!=null&&userTask.getCandidateGroups().size()>0)){
dataType="fixed";
}
flowNextDto.setDataType(dataType);
}
boolean issApprove=this.getNextFlowNodeIsApprove(taskId);
flowNextDto.setNodeisApprove(issApprove);
FlowNextDtoList.add(flowNextDto);
}
return FlowNextDtoList;
}
}
return null;
}
public List<SysUser> getSysUserFromTask(UserTask userTask) { public List<SysUser> getSysUserFromTask(UserTask userTask) {
String assignee = userTask.getAssignee(); String assignee = userTask.getAssignee();
if (StrUtil.isNotBlank(assignee)){ if (StrUtil.isNotBlank(assignee)){
...@@ -1981,9 +2080,12 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask ...@@ -1981,9 +2080,12 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask
String formUrlparval=""; String formUrlparval="";
String formUrlpar=""; String formUrlpar="";
if(formValues.get("dataId")==null){ if(formValues.get("dataId")==null){
if(formValues.get("_value")!=null){
Map zdv=(Map)formValues.get("_value"); Map zdv=(Map)formValues.get("_value");
formUrlpar=(String)zdv.get("dataName"); formUrlpar=(String)zdv.get("dataName");
formUrlparval=zdv.get("dataId").toString(); formUrlparval=zdv.get("dataId").toString();
}
}else{ }else{
formUrlparval=formValues.get("dataId").toString(); formUrlparval=formValues.get("dataId").toString();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论