|
@@ -10,6 +10,7 @@ import com.jeeplus.flowable.utils.FlowableUtils;
|
|
|
import com.jeeplus.sys.domain.User;
|
|
|
import com.jeeplus.sys.service.UserService;
|
|
|
import com.jeeplus.sys.service.dto.UserDTO;
|
|
|
+import com.jeeplus.sys.utils.StringUtils;
|
|
|
import com.jeeplus.sys.utils.UserUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.flowable.bpmn.model.FlowElement;
|
|
@@ -18,8 +19,12 @@ import org.flowable.bpmn.model.UserTask;
|
|
|
import org.flowable.common.engine.impl.el.ExpressionManager;
|
|
|
import org.flowable.engine.HistoryService;
|
|
|
import org.flowable.engine.RepositoryService;
|
|
|
+import org.flowable.engine.RuntimeService;
|
|
|
import org.flowable.engine.delegate.DelegateExecution;
|
|
|
+import org.flowable.engine.history.HistoricProcessInstance;
|
|
|
import org.flowable.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
|
|
|
+import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
|
|
|
+import org.flowable.engine.runtime.ProcessInstance;
|
|
|
import org.flowable.task.api.history.HistoricTaskInstance;
|
|
|
import org.flowable.task.service.TaskService;
|
|
|
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
|
@@ -155,7 +160,6 @@ public class ExtUserTaskActivityBehavior extends UserTaskActivityBehavior {
|
|
|
candidateUserIds.add(map.get ("id").toString ());
|
|
|
}
|
|
|
}
|
|
|
- //如果字符串中包含 "zsCurrentUserSql:" 则进行如下代码替换和处理
|
|
|
if(flowAssignee.getValue ().contains("zsbxCurrentUserSql:")){
|
|
|
//对应sql为:select su.* from sys_user_role a left join sys_role sr on sr.id = a.role_id left join sys_user su on su.id = a.user_id left join sys_office so on so.id = su.office_id where sr.en_name= 'bmzr' and so.id = (select office_id from sys_user where id = @currentUser.id)
|
|
|
//用于查询当前登录人的部门主任人员信息
|
|
@@ -178,6 +182,37 @@ public class ExtUserTaskActivityBehavior extends UserTaskActivityBehavior {
|
|
|
candidateUserIds.add(map.get ("id").toString ());
|
|
|
}
|
|
|
}
|
|
|
+ //如果字符串中包含 "gsldbxCurrentUserSql:" 则进行如下代码替换和处理
|
|
|
+ if(flowAssignee.getValue ().contains("gsldbxCurrentUserSql:")){
|
|
|
+ String sql = flowAssignee.getValue ();
|
|
|
+ // 流程发起人
|
|
|
+ ProcessInstance processInstance = SpringUtil.getBean(RuntimeService.class)
|
|
|
+ .createProcessInstanceQuery()
|
|
|
+ .processInstanceId(execution.getProcessInstanceId())
|
|
|
+ .singleResult();
|
|
|
+ if(null != processInstance && StringUtils.isNotBlank(processInstance.getStartUserId())){
|
|
|
+ String startUserId = processInstance.getStartUserId();
|
|
|
+ //通过查询流程发起人确认发起人所在部门以及部门分管领导信息
|
|
|
+ if(sql.contains("@currentUser.id")){
|
|
|
+ //将标志进行去除
|
|
|
+ sql = sql.replaceAll("gsldbxCurrentUserSql:","");
|
|
|
+ //将判断条件进行替换
|
|
|
+ sql = sql.replaceAll("@currentUser.id","'" + startUserId + "'");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //如果找不到发起人信息 则审核人默认为 角色 总经办人员信息
|
|
|
+ sql = "SELECT su.* FROM sys_user_role a LEFT JOIN sys_role sr ON sr.id = a.role_id LEFT JOIN sys_user su ON su.id = a.user_id LEFT JOIN sys_office so ON so.id = su.office_id WHERE sr.en_name = 'zjb'";
|
|
|
+ }
|
|
|
+ //设定部门分管领导为审核人
|
|
|
+ List<Map<String, Object>> maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
|
|
|
+ if(null == maps || maps.size()==0){
|
|
|
+ sql = "SELECT su.* FROM sys_user_role a LEFT JOIN sys_role sr ON sr.id = a.role_id LEFT JOIN sys_user su ON su.id = a.user_id LEFT JOIN sys_office so ON so.id = su.office_id WHERE sr.en_name = 'zjb'";
|
|
|
+ maps = SpringUtil.getBean(JdbcTemplate.class).queryForList(sql);
|
|
|
+ }
|
|
|
+ for (Map<String, Object> map : maps) {
|
|
|
+ candidateUserIds.add(map.get ("id").toString ());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
break;
|
|
|
}
|