查询构造器筛选

100 阅读1分钟

查询构造器筛选,如果是点击的全部人员就返回所有值,如果是分部门或者分角色就是,先通过单位ID筛选,然后再筛选部门ID(departId),或者筛选角色ID(msg_type = 'ROLE')

querySaWrapper.and(i-> i.eq(SysAnnouncement::getMsgType, CommonConstant.MSG_TYPE_ALL) // 全部人员
				.or( m-> m.eq(SysAnnouncement::getOrgId,loginUser.getOrgId()).and(n -> n.eq(SysAnnouncement::getMsgType, CommonConstant.MSG_TYPE_DEPT).like(SysAnnouncement::getDeptIds,loginUser.getDepartId())).or(c -> c.eq(SysAnnouncement::getMsgType, CommonConstant.MSG_TYPE_ROLE))) );
//				.or(m -> m.eq(SysAnnouncement::getMsgType, CommonConstant.MSG_TYPE_DEPT).like(SysAnnouncement::getDeptIds,loginUser.getDepartId()))//部门
//				.or(m -> m.eq(SysAnnouncement::getMsgType, CommonConstant.MSG_TYPE_ROLE)));//角色后续在删选是否在人员列表中

sql语句

SELECT id,org_id,titile,msg_content,start_time,end_time,sender,sender_name,priority,msg_category,msg_type,send_status,send_time,cancel_time,del_flag,create_by,create_time,update_by,update_time,user_ids,dept_ids,role_ids,form_type_codes,form_types 
FROM sys_announcement WHERE ( (msg_type = 'ALL' OR ( (msg_type = 'DEPT' AND dept_ids LIKE '%null%') ) OR ( (msg_type = 'ROLE') )) ) 
AND del_flag = '0' AND send_status = '1' AND msg_category = '3'