deptToDoTaskPage接口优化

This commit is contained in:
wangliwen 2022-07-19 15:06:38 +08:00
parent b843f76d0f
commit df7e2a3824
3 changed files with 122 additions and 98 deletions

View File

@ -21,7 +21,6 @@ import io.renren.modules.resourceMountApply.dto.TResourceMountApplyDTO;
import io.renren.modules.resourceMountApply.service.TResourceMountApplyService; import io.renren.modules.resourceMountApply.service.TResourceMountApplyService;
import io.renren.modules.security.user.SecurityUser; import io.renren.modules.security.user.SecurityUser;
import io.renren.modules.sys.dto.SysUserDTO; import io.renren.modules.sys.dto.SysUserDTO;
import io.renren.modules.sys.entity.SysUserEntity;
import io.renren.modules.sys.service.SysRoleUserService; import io.renren.modules.sys.service.SysRoleUserService;
import io.renren.modules.sys.service.SysUserService; import io.renren.modules.sys.service.SysUserService;
import org.activiti.engine.HistoryService; import org.activiti.engine.HistoryService;
@ -55,6 +54,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -67,6 +70,9 @@ public class ActTaskService extends BaseServiceImpl {
private static final Logger logger = LoggerFactory.getLogger(ActTaskService.class); private static final Logger logger = LoggerFactory.getLogger(ActTaskService.class);
private static final ObjectMapper oMapper = new ObjectMapper(); private static final ObjectMapper oMapper = new ObjectMapper();
private static Integer cpuNUm = Runtime.getRuntime().availableProcessors();
private static final ExecutorService executor = Executors.newFixedThreadPool(cpuNUm);
public static String Task_HANDLE_STATE = "handleState"; //任务节点处理状态key public static String Task_HANDLE_STATE = "handleState"; //任务节点处理状态key
public static String Task_HANDLE_STATE_AGREE = "agree"; //同意 public static String Task_HANDLE_STATE_AGREE = "agree"; //同意
public static String Task_HANDLE_STATE_REJECTED = "rejected"; //驳回 public static String Task_HANDLE_STATE_REJECTED = "rejected"; //驳回
@ -160,17 +166,25 @@ public class ActTaskService extends BaseServiceImpl {
limit = Integer.parseInt((String) params.get(Constant.LIMIT)); limit = Integer.parseInt((String) params.get(Constant.LIMIT));
} }
List<SysUserDTO> sysUserList = sysUserService.list(new HashMap()); List<SysUserDTO> sysUserList = sysUserService.list(new HashMap());
List<TaskDTO> taskDtoList = new ArrayList<>(); List<TaskDTO> taskDtoList = new CopyOnWriteArrayList<>();
for (SysUserDTO user : sysUserList) { Integer finalCurPage = curPage;
String userId = user.getId().toString(); Integer finalLimit = limit;
List<Long> count = new CopyOnWriteArrayList<>();
List<CompletableFuture> completableFutureList =
sysUserList.stream().filter(index -> null != index.getId()).map(index -> {
CompletableFuture completableFuture = CompletableFuture.runAsync(() -> {
TaskQuery taskQuery = taskService.createTaskQuery(); TaskQuery taskQuery = taskService.createTaskQuery();
if (StringUtils.isNotEmpty(userId)) { List<Task> list = taskQuery.taskAssignee(index.getId().toString())
taskQuery.taskAssignee(userId); .orderByTaskCreateTime().desc()
} .includeProcessVariables()
taskQuery.orderByTaskCreateTime().desc(); .listPage((finalCurPage - 1) * finalLimit, finalCurPage * finalLimit);
List<Task> list = taskQuery.active().includeProcessVariables().list(); count.add(taskQuery.taskAssignee(index.getId().toString())
.orderByTaskCreateTime().desc().count());
taskDtoList.addAll(tasks2TaskDtos(list)); taskDtoList.addAll(tasks2TaskDtos(list));
} });
return completableFuture;
}).collect(Collectors.toList());
CompletableFuture.allOf(completableFutureList.toArray(new CompletableFuture[completableFutureList.size()])).join();
Page<TaskDTO> page = new Page(curPage, limit); Page<TaskDTO> page = new Page(curPage, limit);
int j = Math.min(curPage * limit, taskDtoList.size()); int j = Math.min(curPage * limit, taskDtoList.size());
if (taskDtoList.isEmpty()) { if (taskDtoList.isEmpty()) {
@ -180,7 +194,7 @@ public class ActTaskService extends BaseServiceImpl {
ArrayList<TaskDTO> recordLists = new ArrayList<>(); ArrayList<TaskDTO> recordLists = new ArrayList<>();
recordLists.addAll(taskDtoList.stream().distinct().skip((curPage - 1) * limit).limit(limit).collect(Collectors.toList())); recordLists.addAll(taskDtoList.stream().distinct().skip((curPage - 1) * limit).limit(limit).collect(Collectors.toList()));
page.setRecords(recordLists); page.setRecords(recordLists);
page.setTotal(taskDtoList.stream().distinct().count()); page.setTotal(count.stream().mapToLong(index -> index.longValue()).sum());
} }
return page; return page;
} }

View File

@ -14,6 +14,7 @@ import io.renren.modules.security.user.UserDetail;
import io.renren.modules.sys.dao.SysDeptDao; import io.renren.modules.sys.dao.SysDeptDao;
import io.renren.modules.sys.dao.SysRegionDao; import io.renren.modules.sys.dao.SysRegionDao;
import io.renren.modules.sys.dao.SysUserDao; import io.renren.modules.sys.dao.SysUserDao;
import io.renren.modules.sys.dto.SysRoleDTO;
import io.renren.modules.sys.dto.SysUserDTO; import io.renren.modules.sys.dto.SysUserDTO;
import io.renren.modules.sys.entity.SysDeptEntity; import io.renren.modules.sys.entity.SysDeptEntity;
import io.renren.modules.sys.entity.SysRegionEntity; import io.renren.modules.sys.entity.SysRegionEntity;
@ -21,12 +22,9 @@ import io.renren.modules.sys.entity.SysUserEntity;
import io.renren.modules.sys.enums.JhDeptEnum; import io.renren.modules.sys.enums.JhDeptEnum;
import io.renren.modules.sys.enums.JhDeptsEnum; import io.renren.modules.sys.enums.JhDeptsEnum;
import io.renren.modules.sys.enums.SuperAdminEnum; import io.renren.modules.sys.enums.SuperAdminEnum;
import io.renren.modules.sys.service.SysDeptService; import io.renren.modules.sys.service.*;
import io.renren.modules.sys.service.SysRoleUserService;
import io.renren.modules.sys.service.SysUserPostService;
import io.renren.modules.sys.service.SysUserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -56,6 +54,11 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
private SysUserDao sysUserDao; private SysUserDao sysUserDao;
@Autowired @Autowired
private SysRegionDao regionDao; private SysRegionDao regionDao;
@Autowired
private SysRoleService sysRoleService;
@Value("${big_date.assignee_role_name}")
private String roleName; // 具备审批的角色名称
@Override @Override
public PageData<SysUserDTO> page(Map<String, Object> params) { public PageData<SysUserDTO> page(Map<String, Object> params) {
@ -84,7 +87,10 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
if (user.getSuperAdmin() == SuperAdminEnum.NO.value()) { if (user.getSuperAdmin() == SuperAdminEnum.NO.value()) {
params.put("deptIdList", sysDeptService.getSubDeptIdList(user.getDeptId())); params.put("deptIdList", sysDeptService.getSubDeptIdList(user.getDeptId()));
} }
SysRoleDTO roleDTO = sysRoleService.getByName(roleName);
if (roleDTO != null) {
params.put("role_id", roleDTO.getId());
}
List<SysUserEntity> entityList = baseDao.getList(params); List<SysUserEntity> entityList = baseDao.getList(params);
return ConvertUtils.sourceToTarget(entityList, SysUserDTO.class); return ConvertUtils.sourceToTarget(entityList, SysUserDTO.class);
@ -198,11 +204,11 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
} }
@Override @Override
public Result getDeptInfoFromJH(){ public Result getDeptInfoFromJH() {
List<Map> deptList = JhDeptEnum.getAllToList(); List<Map> deptList = JhDeptEnum.getAllToList();
int size = deptList.size(); int size = deptList.size();
try{ try {
ExecutorService executorService = Executors.newSingleThreadExecutor(); ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(new Runnable() { executorService.execute(new Runnable() {
@Override @Override
@ -212,33 +218,33 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
Map map1 = deptList.get(n); Map map1 = deptList.get(n);
Set<String> set = map1.keySet(); Set<String> set = map1.keySet();
String mName = ""; String mName = "";
for(String s:set){ for (String s : set) {
mName = s; mName = s;
} }
String key = mName;//区名即墨区 String key = mName;//区名即墨区
String[] ouStr = (String[])map1.get(key); String[] ouStr = (String[]) map1.get(key);
for(String ou:ouStr){ for (String ou : ouStr) {
String OU = ou+","+"OU="+mName; String OU = ou + "," + "OU=" + mName;
LdapContext ldapContext = jhlDAPTool.LDAP_connect(OU); LdapContext ldapContext = jhlDAPTool.LDAP_connect(OU);
List<Map<String,Object>> lists = jhlDAPTool.readLdap(ldapContext,"(&(OU=*)(ou=*)(!(sAMAccountType=*))(instanceType=4))"); List<Map<String, Object>> lists = jhlDAPTool.readLdap(ldapContext, "(&(OU=*)(ou=*)(!(sAMAccountType=*))(instanceType=4))");
//Iterator<Map<String,Object>> iterator = lists.iterator(); //Iterator<Map<String,Object>> iterator = lists.iterator();
//给pid pids赋值 //给pid pids赋值
if (lists.size() > 0) { if (lists.size() > 0) {
lists.forEach(dept->{//1.遍历每一个map lists.forEach(dept -> {//1.遍历每一个map
String namespace = dept.get("namespace").toString(); String namespace = dept.get("namespace").toString();
//OU=地税局分局,OU=驻区单位,OU=新市北区,DC=qd,DC=gov,DC=cn //OU=地税局分局,OU=驻区单位,OU=新市北区,DC=qd,DC=gov,DC=cn
String[] namespaces = namespace.split(","); String[] namespaces = namespace.split(",");
//判断namespaces的长度 //判断namespaces的长度
for(int i=1;i<namespaces.length-3;i++) {//遍历每一个map的namespace for (int i = 1; i < namespaces.length - 3; i++) {//遍历每一个map的namespace
String dName = namespaces[i].split("=")[1];//具体的上级部门名称 String dName = namespaces[i].split("=")[1];//具体的上级部门名称
int c = i; int c = i;
for (int j = 0; j < lists.size(); j++) { for (int j = 0; j < lists.size(); j++) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
if (dName.equals(lists.get(j).get("name").toString())) { if (dName.equals(lists.get(j).get("name").toString())) {
String id = lists.get(j).get("id").toString(); String id = lists.get(j).get("id").toString();
String pidsOld = dept.get("pids").toString() == ""? "" : (dept.get("pids").toString() + ","); String pidsOld = dept.get("pids").toString() == "" ? "" : (dept.get("pids").toString() + ",");
if (c == 1) { if (c == 1) {
dept.put("pid", id); dept.put("pid", id);
dept.put("pids", pidsOld + id); dept.put("pids", pidsOld + id);
@ -251,91 +257,91 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
} }
}); });
//给district和type赋值 //给district和type赋值
String districtName,type; String districtName, type;
Long distict; Long distict;
switch (key){ switch (key) {
case "新市北区": case "新市北区":
districtName = "市北区"; districtName = "市北区";
distict = getDistict(districtName); distict = getDistict(districtName);
lists.forEach(l->{ lists.forEach(l -> {
l.put("district",distict); l.put("district", distict);
String name = l.get("name").toString(); String name = l.get("name").toString();
if(name.contains("企业") || name.contains("集团") || name.contains("公司")){ if (name.contains("企业") || name.contains("集团") || name.contains("公司")) {
l.put("type",4); l.put("type", 4);
}else{ } else {
l.put("type",3); l.put("type", 3);
} }
}); });
break; break;
case "青岛市级": case "青岛市级":
districtName = "青岛市"; districtName = "青岛市";
distict = getDistict(districtName); distict = getDistict(districtName);
lists.forEach(l->{ lists.forEach(l -> {
l.put("district",distict); l.put("district", distict);
l.put("type",2); l.put("type", 2);
}); });
break; break;
case "莱西市用户": case "莱西市用户":
districtName = "莱西市"; districtName = "莱西市";
distict = getDistict(districtName); distict = getDistict(districtName);
lists.forEach(l->{ lists.forEach(l -> {
l.put("district",distict); l.put("district", distict);
String name = l.get("name").toString(); String name = l.get("name").toString();
if(name.contains("企业") || name.contains("集团") || name.contains("公司")){ if (name.contains("企业") || name.contains("集团") || name.contains("公司")) {
l.put("type",4); l.put("type", 4);
}else{ } else {
l.put("type",3); l.put("type", 3);
} }
}); });
break; break;
case "黄岛区": case "黄岛区":
districtName = "西海岸新区"; districtName = "西海岸新区";
distict = getDistict(districtName); distict = getDistict(districtName);
lists.forEach(l->{ lists.forEach(l -> {
l.put("district",distict); l.put("district", distict);
String name = l.get("name").toString(); String name = l.get("name").toString();
if(name.contains("企业") || name.contains("集团") || name.contains("公司")){ if (name.contains("企业") || name.contains("集团") || name.contains("公司")) {
l.put("type",4); l.put("type", 4);
}else{ } else {
l.put("type",3); l.put("type", 3);
} }
}); });
break; break;
case "市直企业": case "市直企业":
distict = getDistict("青岛市"); distict = getDistict("青岛市");
lists.forEach(l->{ lists.forEach(l -> {
l.put("district",distict); l.put("district", distict);
l.put("type",4); l.put("type", 4);
}); });
break; break;
case "市直机关": case "市直机关":
distict = getDistict("青岛市"); distict = getDistict("青岛市");
lists.forEach(l->{ lists.forEach(l -> {
l.put("district",distict); l.put("district", distict);
l.put("type",2); l.put("type", 2);
}); });
break; break;
case "驻青单位": case "驻青单位":
distict = getDistict("山东省"); distict = getDistict("山东省");
lists.forEach(l->{ lists.forEach(l -> {
l.put("district",distict); l.put("district", distict);
l.put("type",1); l.put("type", 1);
}); });
break; break;
default: default:
distict = getDistict(mName); distict = getDistict(mName);
lists.forEach(l->{ lists.forEach(l -> {
l.put("district",distict); l.put("district", distict);
String name = l.get("name").toString(); String name = l.get("name").toString();
if(name.contains("企业") || name.contains("集团") || name.contains("公司")){ if (name.contains("企业") || name.contains("集团") || name.contains("公司")) {
l.put("type",4); l.put("type", 4);
}else{ } else {
l.put("type",3); l.put("type", 3);
} }
}); });
} }
lists.forEach(list->{//如果有该ID和name目前暂不处理否则插入 lists.forEach(list -> {//如果有该ID和name目前暂不处理否则插入
SysDeptEntity dept = sysDeptDao.getById(Long.valueOf(list.get("id").toString())); SysDeptEntity dept = sysDeptDao.getById(Long.valueOf(list.get("id").toString()));
SysDeptEntity deptNew = new SysDeptEntity(); SysDeptEntity deptNew = new SysDeptEntity();
@ -345,7 +351,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
deptNew.setPids(list.get("pids").toString()); deptNew.setPids(list.get("pids").toString());
deptNew.setDistrict(Long.valueOf(list.get("district").toString())); deptNew.setDistrict(Long.valueOf(list.get("district").toString()));
deptNew.setType(Integer.parseInt(list.get("type").toString())); deptNew.setType(Integer.parseInt(list.get("type").toString()));
if(dept == null){ if (dept == null) {
sysDeptDao.insert(deptNew); sysDeptDao.insert(deptNew);
} }
}); });
@ -355,14 +361,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
} }
}); });
return new Result().ok("保存成功"); return new Result().ok("保存成功");
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return new Result().error("保存失败"); return new Result().error("保存失败");
} }
} }
@Override @Override
public Result getUserInfoFromJH(){ public Result getUserInfoFromJH() {
List<Map> deptList = JhDeptsEnum.getAllToList(); List<Map> deptList = JhDeptsEnum.getAllToList();
int size = deptList.size(); int size = deptList.size();
@ -375,31 +381,31 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
LdapContext ldapContext = jhlDAPTool.LDAP_connect(deptList.get(i - 1).get(String.valueOf(i)).toString()); LdapContext ldapContext = jhlDAPTool.LDAP_connect(deptList.get(i - 1).get(String.valueOf(i)).toString());
List<Map> maps = jhlDAPTool.readLdap(ldapContext); List<Map> maps = jhlDAPTool.readLdap(ldapContext);
if (maps.size() > 0) { if (maps.size() > 0) {
maps.forEach(m-> { maps.forEach(m -> {
//根据username判断 //根据username判断
if(m.get(("username")) != null){ if (m.get(("username")) != null) {
String userName = m.get("username").toString(); String userName = m.get("username").toString();
SysUserEntity user = sysUserDao.getUserByName(userName); SysUserEntity user = sysUserDao.getUserByName(userName);
if(user == null){//用户表中没有该用户插入 if (user == null) {//用户表中没有该用户插入
SysUserEntity newUser = new SysUserEntity(); SysUserEntity newUser = new SysUserEntity();
newUser.setUsername(userName); newUser.setUsername(userName);
newUser.setSuperAdmin(0); newUser.setSuperAdmin(0);
newUser.setGuid(m.get("guid") == null ? "":m.get("guid").toString()); newUser.setGuid(m.get("guid") == null ? "" : m.get("guid").toString());
newUser.setId(Long.valueOf(m.get("id") == null ? "0":m.get("id").toString())); newUser.setId(Long.valueOf(m.get("id") == null ? "0" : m.get("id").toString()));
newUser.setRealName(m.get("real_name") == null ?"":m.get("real_name").toString()); newUser.setRealName(m.get("real_name") == null ? "" : m.get("real_name").toString());
newUser.setEmail(m.get("email") == null ?"":m.get("email").toString()); newUser.setEmail(m.get("email") == null ? "" : m.get("email").toString());
newUser.setMobile(m.get("mobile") == null ?"":m.get("mobile").toString()); newUser.setMobile(m.get("mobile") == null ? "" : m.get("mobile").toString());
newUser.setStatus(1);//账号状态 1正常 0停用 newUser.setStatus(1);//账号状态 1正常 0停用
//给dept_id赋值 //给dept_id赋值
String deptNames = m.get("distinguishedName") == null ? "":m.get("distinguishedName").toString(); String deptNames = m.get("distinguishedName") == null ? "" : m.get("distinguishedName").toString();
if(deptNames == null){ if (deptNames == null) {
newUser.setDeptId(0L); newUser.setDeptId(0L);
}else{ } else {
String[] deptArray = deptNames.split(","); String[] deptArray = deptNames.split(",");
String dept,deptFather; String dept, deptFather;
dept = deptArray[1]; dept = deptArray[1];
deptFather = deptArray[2]; deptFather = deptArray[2];
long id = getDeptId(dept.substring(3,dept.length()),deptFather.substring(3,deptFather.length())); long id = getDeptId(dept.substring(3, dept.length()), deptFather.substring(3, deptFather.length()));
newUser.setDeptId(id); newUser.setDeptId(id);
sysUserDao.insert(newUser); sysUserDao.insert(newUser);
} }
@ -417,27 +423,28 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
} }
} }
public SysRegionEntity getRegion(String name){ public SysRegionEntity getRegion(String name) {
QueryWrapper<SysRegionEntity> regionWrapper = new QueryWrapper<>(); QueryWrapper<SysRegionEntity> regionWrapper = new QueryWrapper<>();
regionWrapper.eq("name",name); regionWrapper.eq("name", name);
SysRegionEntity region = regionDao.selectOne(regionWrapper); SysRegionEntity region = regionDao.selectOne(regionWrapper);
return region; return region;
} }
public long getDeptId(String deptName,String fatherDeptName){
public long getDeptId(String deptName, String fatherDeptName) {
QueryWrapper<SysDeptEntity> deptWrapper = new QueryWrapper<>(); QueryWrapper<SysDeptEntity> deptWrapper = new QueryWrapper<>();
deptWrapper.eq("name",deptName); deptWrapper.eq("name", deptName);
List<SysDeptEntity> deptList = sysDeptDao.selectList(deptWrapper); List<SysDeptEntity> deptList = sysDeptDao.selectList(deptWrapper);
if(deptList.size() == 0){ if (deptList.size() == 0) {
return 0; return 0;
}else if(deptList.size() == 1){ } else if (deptList.size() == 1) {
return deptList.get(0).getId(); return deptList.get(0).getId();
}else{//出现多个相同的deptname,根据他们的父级来确定 } else {//出现多个相同的deptname,根据他们的父级来确定
AtomicLong newId = new AtomicLong(); AtomicLong newId = new AtomicLong();
deptList.forEach(dept->{ deptList.forEach(dept -> {
long fatherId = dept.getPid();//获取其中一个的父级ID long fatherId = dept.getPid();//获取其中一个的父级ID
SysDeptEntity fatherEntity = sysDeptDao.getById(fatherId);//根据父级ID查询管理部门 SysDeptEntity fatherEntity = sysDeptDao.getById(fatherId);//根据父级ID查询管理部门
if(fatherEntity != null && fatherEntity.getName().equals(fatherDeptName)){//如果该管理部门的名称等于传进来的父级名称那么这条dept就是我们需要的 if (fatherEntity != null && fatherEntity.getName().equals(fatherDeptName)) {//如果该管理部门的名称等于传进来的父级名称那么这条dept就是我们需要的
if(fatherEntity.getId() == fatherId){//如果父级ID等于 if (fatherEntity.getId() == fatherId) {//如果父级ID等于
newId.set(dept.getId()); newId.set(dept.getId());
} }
} }
@ -446,13 +453,13 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
} }
} }
public Long getDistict(String deptName){ public Long getDistict(String deptName) {
QueryWrapper<SysRegionEntity> regionWrapper = new QueryWrapper<>(); QueryWrapper<SysRegionEntity> regionWrapper = new QueryWrapper<>();
regionWrapper.eq("name",deptName); regionWrapper.eq("name", deptName);
SysRegionEntity entity = regionDao.selectOne(regionWrapper); SysRegionEntity entity = regionDao.selectOne(regionWrapper);
if (entity == null) { if (entity == null) {
return 0L; return 0L;
}else{ } else {
return entity.getId(); return entity.getId();
} }
} }

View File

@ -28,6 +28,9 @@
#{id} #{id}
</foreach> </foreach>
</if> </if>
<if test="role_id != null">
AND EXISTS(SELECT 1 FROM sys_role_user WHERE sys_role_user.user_id = t1.id AND sys_role_user.role_id = #{role_id})
</if>
</select> </select>
<select id="getById" resultType="io.renren.modules.sys.entity.SysUserEntity"> <select id="getById" resultType="io.renren.modules.sys.entity.SysUserEntity">