|
@ -9,17 +9,21 @@ import com.yihu.jw.entity.base.application.BaseApplicationMenuDO;
|
|
|
import com.yihu.jw.entity.base.application.BaseApplicationRoleDictDO;
|
|
|
import com.yihu.jw.entity.base.application.BaseApplicationRoleMenuDO;
|
|
|
import com.yihu.jw.entity.base.application.BaseApplicationRoleUserDO;
|
|
|
import com.yihu.jw.entity.base.user.UserDO;
|
|
|
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
|
|
|
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
|
|
|
import com.yihu.jw.mysql.query.BaseJpaService;
|
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
|
import com.yihu.jw.user.UserDao;
|
|
|
import com.yihu.jw.utils.hibernate.HibenateUtils;
|
|
|
import jdk.nashorn.internal.ir.IfNode;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@ -44,6 +48,10 @@ public class BaseApplicationRoleDictService extends BaseJpaService<BaseApplicati
|
|
|
private BaseApplicationRoleUserDao applicationRoleUserDao;
|
|
|
@Autowired
|
|
|
private WlyyHospitalSysDictDao hospitalSysDictDao;
|
|
|
@Autowired
|
|
|
private UserDao userDao;
|
|
|
@Value("${wechat.id}")
|
|
|
private String wechatId;
|
|
|
|
|
|
/**
|
|
|
* 创建和修改应用角色
|
|
@ -51,10 +59,18 @@ public class BaseApplicationRoleDictService extends BaseJpaService<BaseApplicati
|
|
|
* @param roleDictDO
|
|
|
* @return
|
|
|
*/
|
|
|
public BaseApplicationRoleDictDO insertAndUpdateRole(BaseApplicationRoleDictDO roleDictDO){
|
|
|
public BaseApplicationRoleDictDO insertAndUpdateRole(BaseApplicationRoleDictDO roleDictDO,String uuid){
|
|
|
UserDO userDO = userDao.findById(uuid).get();
|
|
|
if (StringUtils.isNoneBlank(roleDictDO.getId())){
|
|
|
roleDictDO.setUpdateUser(uuid);
|
|
|
roleDictDO.setUpdateUserName(userDO.getName());
|
|
|
roleDictDO.setUpdateTime(new Date());
|
|
|
}else {
|
|
|
roleDictDO.setUpdateTime(new Date());
|
|
|
roleDictDO.setUpdateUser(uuid);
|
|
|
roleDictDO.setUpdateUserName(userDO.getName());
|
|
|
roleDictDO.setCreateUser(uuid);
|
|
|
roleDictDO.setCreateUserName(userDO.getName());
|
|
|
roleDictDO.setCreateTime(new Date());
|
|
|
}
|
|
|
return applicationRoleDictDao.save(roleDictDO);
|
|
@ -95,6 +111,12 @@ public class BaseApplicationRoleDictService extends BaseJpaService<BaseApplicati
|
|
|
*/
|
|
|
public MixEnvelop selectByCondition(String type, String saasId, String orgCode, String name, Integer status, Integer page, Integer size){
|
|
|
MixEnvelop mixEnvelop = new MixEnvelop();
|
|
|
String conditionSql = "";
|
|
|
if ("xm_ykyy_wx".equals(wechatId)) {
|
|
|
conditionSql = "to_char(m.update_time,'YYYY-MM-DD hh24:mi:ss') AS \"updateTime\",";
|
|
|
} else {
|
|
|
conditionSql = "date_format(m.update_time,'%Y-%m-%d %H:%i:%S' ) AS \"updateTime\",";
|
|
|
}
|
|
|
String sql = "SELECT\n" +
|
|
|
"\tm.id,\n" +
|
|
|
"\tm.saas_id AS \"saasId\",\n" +
|
|
@ -104,7 +126,8 @@ public class BaseApplicationRoleDictService extends BaseJpaService<BaseApplicati
|
|
|
"\tm.type AS \"type\",\n" +
|
|
|
"\tm.name AS \"name\",\n" +
|
|
|
"\tm.STATUS AS \"status\",\n" +
|
|
|
"\tm.create_time AS \"createTime\"\n" +
|
|
|
conditionSql +
|
|
|
"\tm.update_user_name AS \"updateUserName\"\n" +
|
|
|
"FROM\n" +
|
|
|
"\tbase_application_role_dict m\n" +
|
|
|
"LEFT JOIN base_saas s ON s.id = m.saas_id\n" +
|
|
@ -167,12 +190,18 @@ public class BaseApplicationRoleDictService extends BaseJpaService<BaseApplicati
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public List<BaseApplicationRoleUserDO> insertRoleUser(List<BaseApplicationRoleUserDO> roleUserDOS) throws Exception {
|
|
|
public List<BaseApplicationRoleUserDO> insertRoleUser(List<BaseApplicationRoleUserDO> roleUserDOS,String uuid) throws Exception {
|
|
|
if (roleUserDOS!=null&&roleUserDOS.size()!=0){
|
|
|
String roleId = roleUserDOS.get(0).getRoleId();
|
|
|
applicationRoleUserDao.deleteByRoleId(roleId);
|
|
|
List<BaseApplicationRoleUserDO> roleUserDOList = new ArrayList<>();
|
|
|
UserDO userDO = userDao.findById(uuid).get();
|
|
|
for (BaseApplicationRoleUserDO roleUserDO:roleUserDOS){
|
|
|
roleUserDO.setCreateTime(new Date());
|
|
|
roleUserDO.setCreateUser(uuid);
|
|
|
roleUserDO.setCreateUserName(userDO.getName());
|
|
|
BaseApplicationRoleUserDO applicationRoleUserDO = applicationRoleUserDao.findByRolIdAnduserCode(roleUserDO.getRoleId(),roleUserDO.getUserCode());
|
|
|
if (applicationRoleUserDO!=null){
|
|
|
applicationRoleUserDao.deleteById(applicationRoleUserDO.getId());
|
|
|
}
|
|
|
}
|
|
|
return applicationRoleUserDao.saveAll(roleUserDOS);
|
|
|
}else {
|
|
@ -180,13 +209,125 @@ public class BaseApplicationRoleDictService extends BaseJpaService<BaseApplicati
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public void removeRoleUser(String id){
|
|
|
applicationRoleUserDao.deleteById(id);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据角色id获取角色关联的成员
|
|
|
* @param roleId
|
|
|
* @return
|
|
|
*/
|
|
|
public List<BaseApplicationRoleUserDO> selectUserByRoleId(String roleId){
|
|
|
return applicationRoleUserDao.findByRoleId(roleId);
|
|
|
public MixEnvelop selectUserByRoleId(String roleId,String userType,String userName,String userMobile,String userIdcard,String dept,
|
|
|
String jobTitleCode,Integer page,Integer size){
|
|
|
MixEnvelop mixEnvelop = new MixEnvelop();
|
|
|
String conditionSql = "";
|
|
|
if ("xm_ykyy_wx".equals(wechatId)) {
|
|
|
conditionSql = "to_char(ru.create_time,'YYYY-MM-DD hh24:mi:ss') AS \"createTime\" ";
|
|
|
} else {
|
|
|
conditionSql = "date_format(ru.create_time,'%Y-%m-%d %H:%i:%S' ) AS \"createTime\" ";
|
|
|
}
|
|
|
String sql = "SELECT\n" +
|
|
|
"\tru.id AS \"id\",\n" +
|
|
|
"\tru.role_id AS \"roleId\",\n" +
|
|
|
"\tru.user_type AS \"userType\",\n" +
|
|
|
"\tru.user_code AS \"userCode\",\n" +
|
|
|
"\n" +
|
|
|
"IF (\n" +
|
|
|
"\tp.`name` IS NULL,\n" +
|
|
|
"\td. NAME,\n" +
|
|
|
"\tp. NAME\n" +
|
|
|
") AS \"userName\",\n" +
|
|
|
"IF (p.sex IS NULL, d.sex, p.sex) AS \"userSex\",\n" +
|
|
|
"IF (\n" +
|
|
|
"\tp.idcard IS NULL,\n" +
|
|
|
"\td.idcard,\n" +
|
|
|
"\tp.idcard\n" +
|
|
|
") AS \"userIdcard\",\n" +
|
|
|
"\n" +
|
|
|
"IF (\n" +
|
|
|
"\tp.mobile IS NULL,\n" +
|
|
|
"\td.mobile,\n" +
|
|
|
"\tp.mobile\n" +
|
|
|
") AS \"userMobile\",\n" +
|
|
|
"\trd.org_code as \"orgCode\",\n" +
|
|
|
"\trd.saas_id as \"saasId\",\n" +
|
|
|
"\to.`name` as \"orgName\",\n" +
|
|
|
"\ts.`name` as \"saasName\",\n" +
|
|
|
"\tdh.dept_name as \"deptName\",\n" +
|
|
|
"\td.job_title_name as \"jobTitleName\",\n" +
|
|
|
"\tru.create_user_name as \"createUserName\",\n" +
|
|
|
conditionSql +
|
|
|
"FROM\n" +
|
|
|
"\tbase_application_role_user ru\n" +
|
|
|
"LEFT JOIN base_application_role_dict rd ON ru.role_id = rd.id\n" +
|
|
|
"LEFT JOIN base_saas s ON s.id =rd.saas_id \n" +
|
|
|
"LEFT JOIN base_org o ON rd.org_code = o.code \n" +
|
|
|
"LEFT JOIN base_patient p ON ru.user_code = p.id\n" +
|
|
|
"LEFT JOIN base_doctor d ON ru.user_code = d.id\n" +
|
|
|
"LEFT JOIN base_doctor_hospital dh ON d.id = dh.doctor_code ";
|
|
|
|
|
|
|
|
|
String sqlTotal = " SELECT\n" +
|
|
|
"\tCOUNT(1) as \"total\"\n" +
|
|
|
"FROM\n" +
|
|
|
"\tbase_application_role_user ru\n" +
|
|
|
"LEFT JOIN base_application_role_dict rd ON ru.role_id = rd.id\n" +
|
|
|
"LEFT JOIN base_saas s ON s.id =rd.saas_id \n" +
|
|
|
"LEFT JOIN base_org o ON rd.org_code = o.code \n" +
|
|
|
"LEFT JOIN base_patient p ON ru.user_code = p.id\n" +
|
|
|
"LEFT JOIN base_doctor d ON ru.user_code = d.id\n" +
|
|
|
"LEFT JOIN base_doctor_hospital dh ON d.id = dh.doctor_code\n ";
|
|
|
String condition = " where 1=1 ";
|
|
|
if (StringUtils.isNoneBlank(roleId)){
|
|
|
condition +=" and ru.role_id ='"+roleId+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(userType)){
|
|
|
condition +=" and ru.user_type ='"+userType+"' ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(userName)){
|
|
|
condition +=" and IF (\n" +
|
|
|
"\tp.`name` IS NULL,\n" +
|
|
|
"\td. NAME,\n" +
|
|
|
"\tp. NAME\n" +
|
|
|
") LIKE '%"+userName+"%' ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(userMobile)){
|
|
|
condition +=" and IF (\n" +
|
|
|
"\tp.mobile IS NULL,\n" +
|
|
|
"\td.mobile,\n" +
|
|
|
"\tp.mobile\n" +
|
|
|
") like '%"+userMobile+"%' ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(userIdcard)){
|
|
|
condition +=" and IF (\n" +
|
|
|
"\tp.idcard IS NULL,\n" +
|
|
|
"\td.idcard,\n" +
|
|
|
"\tp.idcard\n" +
|
|
|
") like '%"+userIdcard+"%' ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(dept)){
|
|
|
condition +=" and dh.dept_code = '"+dept+"' ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(jobTitleCode)){
|
|
|
condition +=" and d.job_title_code = '"+jobTitleCode+"' ";
|
|
|
}
|
|
|
String orderCondition = " order by ru.create_time desc ";
|
|
|
|
|
|
List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql+condition+orderCondition,page,size);
|
|
|
Long count = 0L;
|
|
|
List<Map<String,Object>> total = hibenateUtils.createSQLQuery(sqlTotal+condition);
|
|
|
if(total!=null){
|
|
|
//mysql 与 Oracle 聚合函数返回类型不一致,需要判断装换
|
|
|
count = hibenateUtils.objTransformLong(total.get(0).get("total"));
|
|
|
}
|
|
|
mixEnvelop.setTotalCount(count.intValue());
|
|
|
mixEnvelop.setDetailModelList(list);
|
|
|
mixEnvelop.setPageSize(size);
|
|
|
mixEnvelop.setCurrPage(page);
|
|
|
return mixEnvelop;
|
|
|
}
|
|
|
|
|
|
|