You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

624 lines
23 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.manage.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.manage.dao.Power_NoticeMapper;
import com.manage.dao.Power_UserMapper;
import com.manage.encrypt.Base64;
import com.manage.encrypt.MD5;
import com.manage.entity.*;
import com.manage.service.*;
import com.manage.service.cache.Cache;
import com.manage.service.cache.CacheManager;
import com.manage.service.ipml.Power_NoticeServiceImpl;
import com.manage.service.webSocket.WsPool;
import com.manage.util.DateUtils;
import com.manage.util.ExceptionPrintUtil;
import com.manage.util.Msg;
import com.manage.vo.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.*;
/**
* @ProjectName:
* @Description:
* @Param 传输参数
* @Return
* @Author: 曾文和
* @CreateDate: 2019/7/9 15:07
* @UpdateUser: 曾文和
* @UpdateDate: 2019/7/9 15:07
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@Controller
@RequestMapping("font/")
public class FontController {
@Value("${STR_SPLIT}")
private String STR_SPLIT;
@Autowired
private PowerService powerService;
@Autowired
private User_Dept_MenuService userDeptMenuService;
@Autowired
private Power_NoticeMapper powerNoticeMapper;
@Autowired
private Power_UserMapper userMapper;
@Autowired
private Power_NoticeServiceImpl noticeService;
@Autowired
private Power_UserService userService;
@Value("${TOKEN_EXPIRE_TIME}")
private long TOKEN_EXPIRE_TIME;
@Autowired
private Power_MenuService powerMenuService;
@Autowired
private Power_DeptService power_deptService;
@Autowired
private Power_UserMapper power_userMapper;
/**
* 2.1
* @ProjectName: getUserPowerTreeBySysFlag
* @Description: 获取菜单通过系统标识
* @Param 无
* @Return getMenusByUserIdAndSysFlag
* @Author: 曾文和
* @CreateDate: 2019/7/9 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/7/9 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getMenusByUserIdAndSysFlag",method = RequestMethod.GET)
@ResponseBody
public Msg getMenusByUserIdAndSysFlag(String userName,String sysFlag,Integer userId,Integer roleId,
Integer sysId,Integer hospitalId) throws Exception{
if(StringUtils.isNotBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
&& sysId == null && hospitalId == null){
return Msg.fail("查询复杂,数据大,暂不支持只带sysFlag参数查询");
}
if(StringUtils.isBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
&& sysId != null && hospitalId == null){
return Msg.fail("查询复杂,数据大,暂不支持只带sysId参数查询");
}
if(StringUtils.isBlank(sysFlag) && StringUtils.isBlank(userName) && userId == null && roleId == null
&& sysId == null && hospitalId != null){
return Msg.fail("查询复杂,数据大,暂不支持只带hospitalId参数查询");
}
if(StringUtils.isNotBlank(userName)){
List<Power_User> power_users = userMapper.checkUserName(userName);
if(null != power_users && !power_users.isEmpty()){
if(power_users.get(0).getRoleId().equals(0) || power_users.get(0).getRoleId().equals(-100)){
roleId = power_users.get(0).getRoleId();
}
}
}
List<User_Dept_Menu> list = userDeptMenuService.selectAll(userName, sysFlag, userId, roleId, sysId, hospitalId);
CacheManager.addExcCount("noExc");
return Msg.success().add("list",list);
}
/**
* 2.2
* @ProjectName: selectAllByUserIdOrRoleIdAndSysIdOrSysFlag
* @Description: 根据用户id或角色id和系统id或系统标识查询通知记录
* @Param 无
* @Return selectAllByUserIdOrRoleIdAndSysIdOrSysFlag
* @Author: 曾文和
* @CreateDate: 2019/7/29 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/7/29 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "selectAllByUserIdOrRoleIdAndSysIdOrSysFlag")
@ResponseBody
public Msg selectAllByUserIdOrRoleIdAndSysIdOrSysFlag(Integer userId,Integer roleId,Integer sysId,String sysFlag,String sysName,Integer effective,String noticeTitle,String noticeSend,String noticeDate,String noticeTypeFlag,String noticeTypeName) throws Exception{
List<Power_Notice> list = powerNoticeMapper.selectAllByUserIdOrRoleIdAndSysIdOrSysFlag(userId, roleId, sysId,sysFlag,sysName,effective,noticeTitle,noticeSend,noticeDate,noticeTypeFlag,noticeTypeName);
CacheManager.addExcCount("noExc");
return Msg.success().add("list",list);
}
/**
* 2.4
* @ProjectName: getUserPowerTreeBySysFlag
* @Description: 获取系统用户树通过系统标识
* @Param 无
* @Return PowerTree
* @Author: 曾文和
* @CreateDate: 2019/7/9 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/7/9 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getUserPowerTreeBySysFlag",produces = {"text/json;charset=UTF-8"})
@ResponseBody
public String getUserPowerTreeBySysFlag(String sysFlag,Integer userId){
try {
if(null != userId){
//查询该用户
Power_UserVo user = userMapper.selectByPrimaryKey(userId);
List<PowerTree> dicts = powerService.getUserPowerTreeBySysFlag(sysFlag,user);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(dicts);
CacheManager.addExcCount("noExc");
return json;
}else{
return null;
}
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
ExceptionPrintUtil.printException(e);
return null;
}
}
/**
* 2.5
* @ProjectName: getRolePowerTreeBySysFlag
* @Description: 获取系统角色树通过系统标识
* @Param 无
* @Return PowerTree
* @Author: 曾文和
* @CreateDate: 2019/7/9 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/7/9 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getRolePowerTreeBySysFlag",produces = {"text/json;charset=UTF-8"})
@ResponseBody
public String getRolePowerTreeBySysFlag(String sysFlag,Integer userId){
try {
if(null != userId){
Power_UserVo user = userMapper.selectByPrimaryKey(userId);
List<PowerTree> dicts = powerService.getRolePowerTreeBySysFlag(sysFlag,user);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(dicts);
CacheManager.addExcCount("noExc");
return json;
}else{
return null;
}
}catch(Exception e){
CacheManager.addExcCount("exc");
e.printStackTrace();
ExceptionPrintUtil.printException(e);
return null;
}
}
/**
* 2.6
* @ProjectName: getUserList
* @Description: 获取用户id和用户名
* @Param 无
* @Return userList
* @Author: 曾文和
* @CreateDate: 2019/9/6 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/9/6 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getUserList")
@ResponseBody
public Msg getUserList(String userName) throws Exception{
List<User> list = new ArrayList<>();
if(StringUtils.isNoneBlank(userName)){
List<Power_User> users = userMapper.checkUserName(userName);
if(null != users && !users.isEmpty()){
Integer roleId = users.get(0).getRoleId();
if(roleId == 0){
list = userMapper.selectUserIdAndUserNameList(null);
}else{
list = userMapper.selectUserIdAndUserNameList(users.get(0).getUserId());
}
}
}else{
return Msg.fail("用户名不能为空");
}
CacheManager.addExcCount("noExc");
return Msg.success().add("userList",list);
}
/**
* 2.7
* @ProjectName: checkToken
* @Description: 验证token是否有效
* @Param 无
* @Return Msg
* @Author: 曾文和
* @CreateDate: 2019/9/24 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/9/24 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "checkToken",method = RequestMethod.POST)
@ResponseBody
public Msg checkToken(String token) throws Exception{
if(StringUtils.isNotBlank(token) && StringUtils.isNotBlank(token) ) {
Cache cache = CacheManager.getCacheInfo(token);
if (cache == null) {
return Msg.fail("token已过期或不存在");
}
}else{
return Msg.fail("token不能为空");
}
return Msg.success();
}
/**
* 2.8
* @ProjectName: getUserByToken
* @Description: 根据token获取用户
* @Param 无
* @Return getMenuListByToken
* @Author: 曾文和
* @CreateDate: 2019/10/31 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/10/31 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getUserByToken",method = RequestMethod.POST)
@ResponseBody
public Msg getMenuListByToken(String token,String sysFlag) throws Exception{
if(StringUtils.isBlank(token)){
return Msg.fail("token不能为空!");
}
if(StringUtils.isBlank(sysFlag)){
return Msg.fail("sysFlag不能为空!");
}
Cache cacheInfo = CacheManager.getCacheInfo(token);
Power_UserVo user = (Power_UserVo) cacheInfo.getValue();
if(null != user){
List<User_Dept_Menu> menuList = user.getMenuList();
List<User_Dept_Menu> list = new ArrayList<>();
Set<String> menus = new TreeSet<>();
if(null != menuList && !menuList.isEmpty()){
for (User_Dept_Menu user_dept_menu : menuList) {
String menuSysFlag = user_dept_menu.getSysFlag();
if (StringUtils.isNotBlank(menuSysFlag) && menuSysFlag.equals(sysFlag)) {
list.add(user_dept_menu);
if (StringUtils.isNotBlank(user_dept_menu.getMethod())) {
menus.add(user_dept_menu.getMenuUrl());
}
}
}
}
user.setMenuList(list);
user.setMenus(menus);
UserVo userVo = new UserVo();
BeanUtils.copyProperties(user,userVo);
//查询用户集合
List<User> userList = new ArrayList<>();
Integer roleId = userVo.getRoleId();
if(roleId == 0){
userList = userMapper.selectUserIdAndUserNameList(null);
}else{
userList = userMapper.selectUserIdAndUserNameList(userVo.getUserId());
}
//设置用户集合
userVo.setUserList(userList);
CacheManager.addExcCount("noExc");
return Msg.success().add("user",userVo);
}else{
return Msg.fail("token已失效");
}
}
/**
* 2.9
* @ProjectName: getMenuByToken
* @Description: 根据token获取菜单
* @Param 无
* @Return getMenuListByToken
* @Author: 曾文和
* @CreateDate: 2019/10/31 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/10/31 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getMenuByToken",method = RequestMethod.POST)
@ResponseBody
public Msg getMenuByToken(String token,String sysFlag) throws Exception{
if(StringUtils.isBlank(token)){
return Msg.fail("token不能为空!");
}
if(StringUtils.isBlank(sysFlag)){
return Msg.fail("sysFlag不能为空!");
}
Cache cacheInfo = CacheManager.getCacheInfo(token);
Power_UserVo user = (Power_UserVo) cacheInfo.getValue();
List<User_Dept_Menu> menuList = user.getMenuList();
List<User_Dept_Menu> list = new ArrayList<>();
if(null != menuList && !menuList.isEmpty()){
for (User_Dept_Menu user_dept_menu : menuList) {
String menuSysFlag = user_dept_menu.getSysFlag();
if (StringUtils.isNotBlank(menuSysFlag) && menuSysFlag.equals(sysFlag)) {
list.add(user_dept_menu);
}
}
}
CacheManager.addExcCount("noExc");
return Msg.success().add("list",list);
}
/**
* 2.10
* @ProjectName: getToken
* @Description: 获取token
* @Param 无
* @Return Msg
* @Author: 曾文和
* @CreateDate: 2019/11/06 10:00
* @UpdateUser: 更新者
* @UpdateDate: 2019/11/06 10:00
* @UpdateRemark: 更新说明
* @Version: 1.0
*/
@RequestMapping(value = "getToken",method = RequestMethod.POST)
@ResponseBody
public Msg getToken(String userName,String password) throws Exception{
if(StringUtils.isBlank(userName)){
return Msg.fail("用户名不能为空");
}
if(StringUtils.isBlank(password)){
return Msg.fail("密码不能为空");
}
Power_User user = new Power_User();
user.setUserName(userName);
user.setRemark(password);
Power_UserVo userVo = userService.findPowerUserByUserNameAndRemark(user);
if(null == userVo){
return Msg.fail("用户名或密码不正确");
}
String date = String.valueOf(DateUtils.getDate());
String token = UUID.randomUUID().toString();
List<Power_Menu> list = null;
List<User_Dept_Menu> menuList = new ArrayList<>();
Set<String> menus = new TreeSet<>();
if (userVo.getRoleId().equals(0) || userVo.getRoleId().equals(-100)) {
list = powerMenuService.queryAllPowerMenu(null,userVo.getRoleId());
} else {
list = powerMenuService.selectUserAndRoleMenuListPower(userVo.getUserId(),null);
}
if(null != list && !list.isEmpty()){
for (Power_Menu power_menu : list) {
User_Dept_Menu deptMenu = new User_Dept_Menu();
String menuUrl = power_menu.getMenuUrl();
if (StringUtils.isNotBlank(menuUrl)) {
BeanUtils.copyProperties(power_menu, deptMenu);
deptMenu.setMethodParent(power_menu.getParentId());
menuList.add(deptMenu);
}
if (StringUtils.isNotBlank(power_menu.getMethod())) {
menus.add(power_menu.getMenuUrl());
}
}
}
userVo.setMenuList(menuList);
userVo.setMenus(menus);
//设置科室
StringBuilder power_depts = new StringBuilder();
List<Power_Dept> power_depts1 = power_deptService.selectByPrimaryKeys(userVo.getDeptId());
for(int j=0;j<power_depts1.size();j++){
if(j<power_depts1.size()-1){
power_depts.append(power_depts1.get(j).getDeptName()).append(",");
}else{
power_depts.append(power_depts1.get(j).getDeptName());
}
}
userVo.setRemark(power_depts.toString());
//移除缓存
CacheManager.removeCacheByObject(userVo);
CacheManager.putCache(token,new Cache(date,userVo,TOKEN_EXPIRE_TIME));
return Msg.success().add("token",token);
}
/**
* 2.11
* @MethodName getUnReadCount
* @Description: 根据用户获取未读通知数量
* @Param 无
* @Returnt Msg
* @Author: 曾文和
* @CreateDate: 2019-10-17
* @UpdateUser: 曾文和
* @UpdateDate: 2019-10-17
* @UpdateRemark: 更新说明
* @Version: 1.2.2
*/
@RequestMapping("notice/getUnReadCount")
@ResponseBody
public Msg getUnReadCount(Integer userId) throws Exception{
if(null == userId){
return Msg.fail("用户id不能为空");
}
Power_UserVo userVo = userMapper.selectByPrimaryKey(userId);
if(null == userVo){
return Msg.fail("用户id不存在");
}
int unReadCount = noticeService.getUnReadCount(userId);
CacheManager.addExcCount("noExc");
return Msg.success().add("unReadCount",unReadCount);
}
/**
* @MethodName checkUserName
* @Description: 根据用户名判断用户是否存在
* @Param 无
* @Returnt Msg
* @Author: 曾文和
* @CreateDate: 2020-04-22
* @UpdateUser: 曾文和
* @UpdateDate: 2020-04-22
* @UpdateRemark: 更新说明
* @Version: 1.2.2
*/
@RequestMapping("checkUserName")
@ResponseBody
public Msg checkUserName(String userName) throws Exception{
if(StringUtils.isBlank(userName)){
return Msg.fail("工号不能为空!");
}
//查询用户
List<Power_User> user = userMapper.checkUserName(userName);
if(null == user || user.isEmpty()){
return Msg.fail("该工号不存在!");
}
return Msg.success().add("user",user);
}
/**
* @MethodName sendEmrRecordApproveNotice
* @Description: 给病案管理系统发送审批通知
* @Param applyType 申请类型
* @Param count 新的待审批份数
* @Returnt Msg
* @Author: 曾文和
* @CreateDate: 2020-04-24
* @UpdateUser: 曾文和
* @UpdateDate: 2020-04-24
* @UpdateRemark: 更新说明
* @Version:
*/
@RequestMapping("sendEmrRecordApproveNotice")
@ResponseBody
public void sendEmrRecordApproveNotice(String applyType,Integer count){
try {
String title = "待审批通知";
String content = "您有"+count+"份"+applyType+"待审批!";
//查询有借阅审批权限的id集合
String menuUrl = "/approve/updateApprove";
List<Power_User> users = userMapper.selectUserIdsWithApprove(menuUrl);
for(Power_User user : users){
if(null != user) {
WsPool.sendMessageToAll("emr_record_" + user.getUserId(), title + STR_SPLIT + content + STR_SPLIT + "emr_record");
}
}
}catch (Exception e){
ExceptionPrintUtil.printException(e);
e.printStackTrace();
}
}
/**
* 根据当前登录用户工号获取所在科室编号
* @return String
* @throws Exception
* @CreateDate: 2021-08-30
* @UpdateUser: wzq
*/
@RequestMapping("/getDeptCodeByUserName")
@ResponseBody
public String getDeptCodeByDeptId(Integer deptId) throws Exception{
Power_Dept power_dept = power_deptService.selectByPrimaryKey(deptId);
return power_dept.getDeptCode();
}
/**
* 根据病案deptcode查询出所有符合的科主任数据用户id用户名称科室名称
*/
@RequestMapping("/getUserInfoByDeptCodeForChief")
@ResponseBody
public String getUserInfoByDeptCodeForChief(String DeptCode) throws Exception{
List<Power_User> power_users = power_userMapper.selectAllForChief(DeptCode);
String result = "";
for (int i = 0; i < power_users.size(); i++) {
Power_User power_user = power_users.get(i);
result=power_user.getUserId()+","+power_user.getUserName()+","+power_user.getName()+";";
}
return result;
}
/**
* 根据病案deptcode查询出所有符合的病案室用户需要用户id用户名称科室名称
*/
@RequestMapping("/getUserInfoByDeptCodeForRecordRoom")
@ResponseBody
public String getUserInfoByDeptCodeForRecordRoom(String DeptCode) throws Exception{
List<Power_User> power_users = power_userMapper.selectAllForRecordRoom(DeptCode);
String result = "";
for (int i = 0; i < power_users.size(); i++) {
Power_User power_user = power_users.get(i);
result=power_user.getUserId()+","+power_user.getUserName()+","+power_user.getName()+";";
}
return result;
}
/**
* 通过申请医生id获取医生名字,
* 通过病案deptcode获取医生对应的科室
*/
@RequestMapping("/getDoctorNameAndDoctorRoom")
@ResponseBody
public String getDoctorNameAndDoctorRoom(String userId,String deptcode) throws Exception{
Power_User name = power_userMapper.selectForDoctorName(userId);
Power_User room = power_userMapper.selectForDoctorRoom(deptcode);
String result = room+","+name;
return result;
}
/**
* 通过userName获取deptcode
*/
@RequestMapping("/getDoctorDeptcode")
@ResponseBody
public String getDoctorDeptcode(Integer userId) throws Exception{
//获取deptId
String deptId = power_userMapper.selectForDeptId(userId);
//获取deptcode
String result = "";
String [] deptIdSingle = deptId.split(",");
if (deptIdSingle!=null&&deptIdSingle.length>0){
for (int i = 0; i < deptIdSingle.length; i++) {
String deptCode = power_userMapper.selectForDeptCode(deptIdSingle[i]);
result += deptCode+",";
}
}
return result;
}
/**
* 从高明更新至湛江2021/11/20
* 修改为向特定用户发送信息
* 特定用户科主任,病案室
* 科主任需要判定是否和病案的科室相符,
* 病案室直接发送未审核数量
*/
@RequestMapping("sendMessage")
@ResponseBody
public Msg sendMessage(Message message) throws Exception{
if(null == message.getUserId()){
return Msg.fail("消息用户id不能为空");
}
if(StringUtils.isBlank(message.getSysFlag())){
return Msg.fail("消息系统标识不能为空");
}
if(StringUtils.isBlank(message.getTitle())){
return Msg.fail("消息标题不能为空");
}
if(StringUtils.isBlank(message.getContent())){
return Msg.fail("消息内容不能为空");
}
WsPool.sendMessageToAll(message.getSysFlag() + "_" + message.getUserId(), message.getTitle() + STR_SPLIT + message.getContent() + STR_SPLIT + message.getTypeFlag());
//修改为向特定用户发送信息
// WsPool.sendMessageToUser();
return Msg.success();
}
}