ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -389,7 +389,11 @@ ivrTaskVO.setCreateBy(user.getNickName()); ivrTaskVO.setUpdateBy(user.getNickName()); ivrTaskVO.setOrgid(user.getOrgid()); ivrTaskVO.setCampusid(user.getCampusid()); if(StringUtils.isNotEmpty(user.getCampusid())){ ivrTaskVO.setCampusid(user.getCampusid()); }else { ivrTaskVO.setCampusid("1"); } return success(serviceSubtaskService.insertOrUpdateTask(ivrTaskVO)); } @@ -544,6 +548,7 @@ SysUserDept sysUserWard = new SysUserDept(); sysUserWard.setUserId(user.getUserId()); sysUserWard.setOrgid(user.getOrgid()); sysUserWard.setCampusid(user.getCampusid()); sysUserWard.setDeptType("2"); List<SysUserDept> wardList = sysUserDeptService.selectSysUserDeptList(sysUserWard); if (CollectionUtils.isNotEmpty(wardList)) { @@ -558,6 +563,7 @@ SysUserDept sysUserDept = new SysUserDept(); sysUserDept.setUserId(user.getUserId()); sysUserDept.setOrgid(user.getOrgid()); sysUserDept.setCampusid(user.getCampusid()); sysUserDept.setDeptType("1"); List<SysUserDept> deptList = sysUserDeptService.selectSysUserDeptList(sysUserDept); if (CollectionUtils.isNotEmpty(deptList)) { @@ -835,11 +841,13 @@ SysUserDept sysUserDept = new SysUserDept(); sysUserDept.setUserId(sysUser.getUserId()); sysUserDept.setOrgid(sysUser.getOrgid()); sysUserDept.setCampusid(sysUser.getCampusid()); sysUserDept.setDeptType("1"); List<SysUserDept> sysUserDepts = sysUserDeptService.selectSysUserDeptList(sysUserDept); SysUserDept sysUserWard = new SysUserDept(); sysUserWard.setUserId(sysUser.getUserId()); sysUserWard.setOrgid(sysUser.getOrgid()); sysUserWard.setCampusid(sysUser.getCampusid()); sysUserWard.setDeptType("2"); List<SysUserDept> sysUserWards = sysUserDeptService.selectSysUserDeptList(sysUserWard); List<String> deptCodes = sysUserDepts.stream().map(SysUserDept::getDeptCode).collect(Collectors.toList()); ruoyi-admin/src/main/java/com/ruoyi/web/controller/sso/SSOController.java
@@ -1,6 +1,7 @@ package com.ruoyi.web.controller.sso; import com.alibaba.fastjson.JSON; import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.exception.base.BaseException; @@ -11,6 +12,7 @@ import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysUserService; import com.smartor.domain.SSOTokenResponse; import com.smartor.domain.SSOUserInfo; @@ -95,6 +97,9 @@ @Autowired private ISysConfigService sysConfigService; @Autowired private ISysDeptService sysDeptService; private final RestTemplate restTemplate; @@ -189,68 +194,31 @@ /** * ssoGoServiceSubtaskList * code 是/mediinfo-lyra-authserver/connect/authorize 由his提供 * 登录客户端ID是固定的 clientId = 1553588321874087936 clientSecret = suifangxt */ @GetMapping("ssoGoServiceSubtaskList") public RedirectView ssoGoServiceSubtaskList(@RequestParam(value = "code", required = false) String code, @RequestParam(value = "sfzh", required = false) String sfzh) { @PostMapping("ssoGoServiceSubtaskList") public RedirectView ssoGoServiceSubtaskList(@RequestBody SSOUserInfo ssoUserInfo) { // 重定向地址对象(重定向地址 RedirectView redirectView = new RedirectView(); log.info("收到ssoGoServiceSubtaskList请求,开始重定向到授权服务器,code = {}, sfzh = {}",code, sfzh); String path = sysConfigService.selectConfigByKey("sys.qddz"); String redirectUri = "https://9.208.2.190:8092/prod-api/sso/ssoLoginLyra"; String lyraPath = "https://9.0.124.104:13021"; String clientId = "1553588321874087936"; String clientSecret = "suifangxt"; String scope = "openid"; ServiceSubtaskEntity subtask = new ServiceSubtaskEntity(); subtask.setSfzh(sfzh); subtask.setSort(0); List<ServiceSubtask> serviceSubtaskList = serviceSubtaskService.selectServiceSubtaskList(subtask); ServiceSubtask serviceSubtask = null; if(CollectionUtils.isNotEmpty(serviceSubtaskList)){ serviceSubtask = serviceSubtaskList.get(0); }else { redirectView.setUrl(path + "/login?error=sso_failed"); return redirectView; } // String authorizeUrl = lyraPath + "/mediinfo-lyra-authserver/connect/authorize"; String accessTokenUrl = lyraPath + "/mediinfo-lyra-authserver/connect/token"; String userInfoUrl = lyraPath + "/mediinfo-lyra-authserver/connect/userinfo"; String userName = ssoUserInfo.getUsername(); String orgid = ssoUserInfo.getOrgid(); String campusid = ssoUserInfo.getCampusid(); String searchCondition = ""; String deptCode = ssoUserInfo.getDeptCode(); String wardCode = ssoUserInfo.getWardCode(); try { SSOTokenResponse accessToken = getAccessTokenLyra(code, accessTokenUrl, clientId, clientSecret, redirectUri,true); log.info("获取到的token:" + accessToken); SSOUserInfo userInfo = getUserInfoLyra(accessToken.getAccess_token(), userInfoUrl,true); log.info("获取到的用户信息:" + userInfo); // createLocalSession(userInfo); if (StringUtils.isEmpty(path)) { throw new BaseException("请配置前端地址"); } String userName = userInfo.getZhiGongID(); String orgid = userInfo.getZuZhiJGID(); String campusid = "1"; String deptId = null; String token = null; log.info("【SSO登录】获取用户Token参数:" + userInfo); String loginToken = loginService.ssoLogin(userName, orgid, deptId, campusid, token); if (StringUtils.isEmpty(loginToken)) { log.error("【SSO登录】登录失败,userName={}, orgid={}", userName, orgid); return buildRedirect(path + "/login"); if(StringUtils.isNotEmpty(deptCode)){ searchCondition = "&followUpDeptCode=" + deptCode; }else if(StringUtils.isNotEmpty(wardCode)){ searchCondition = "&followUpWardCode=" + deptCode; } String voiceType = (StringUtils.isNotEmpty(serviceSubtask.getType()) && serviceSubtask.getType().equals("1")) ? "1" : "0"; String loginToken = loginService.loginByUserName(userName + "&" + orgid + "&null" + "&" + campusid); String redirectUrl = path + "/loginSSO?token=" + loginToken + "&orgid=" + orgid + "&campusid=" + serviceSubtask.getCampusid() + "&taskid=" + serviceSubtask.getTaskid() + "&patid=" + serviceSubtask.getPatid() + "&id=" + serviceSubtask.getId() + "&voiceType=" + voiceType + "&visitCount=" + serviceSubtask.getVisitCount() + "&sfzh=" + sfzh + "&orgname=null&ZuHuID=null&deptCode=null"; "&orgid=" + orgid + "&campusid=" + campusid + searchCondition + "&orgname=null&ZuHuID=null&deptCode=null"; log.info("【SSO登录】重定向地址:{}", redirectUrl); return buildRedirect(redirectUrl); ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -12,6 +12,7 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.mapper.SysUserDeptMapper; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysDeptService; @@ -208,13 +209,22 @@ } /** * 获取用户信息 * 获取用户信息(登录) * * @return 用户信息 */ @GetMapping("getInfo") public AjaxResult getInfo() { SysUser user = SecurityUtils.getLoginUser().getUser(); //显示所有院区权限 String allCampus = sysConfigService.selectConfigByKey("sys.authority.campus.all"); if(StringUtils.isNotEmpty(allCampus)){ allCampus = "," + allCampus + ","; if (allCampus.contains("," + user.getUserName() + ",")) { user.setCampusid(null); } } // 角色集合 Set<String> roles = permissionService.getRolePermission(user); // 权限集合 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -23,6 +23,14 @@ public List<SysDept> selectDeptList(SysDept dept); /** * 查询部门管理数据 * * @param dept 部门信息 * @return 部门信息集合 */ public List<SysDept> selectSysDeptList(SysDept dept); /** * 获取所有的部门信息 * @return */ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -53,6 +53,17 @@ return deptMapper.selectDeptList(dept); } /** * 查询部门管理数据 * * @param dept 部门信息 * @return 部门信息集合 */ @Override public List<SysDept> selectSysDeptList(SysDept dept) { return deptMapper.selectDeptList(dept); } @Override public Map<String, String> selectDept(String orgid) { SysDept sysDept = new SysDept(); smartor/src/main/java/com/smartor/domain/SSOUserInfo.java
@@ -48,6 +48,31 @@ */ private String zhiGongID; /** * 登录人账号 */ private String username; /** * 机构 */ private String orgid; /** * 院区 */ private String campusid; /** * 病区 */ private String wardCode; /** * 科室 */ private String deptCode; @Override public String toString() { return "SSOUserInfo{" + smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -1044,6 +1044,8 @@ // } ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class); serviceSubtask.setTaskid(serviceTask.getTaskid()); serviceSubtask.setOrgid(serviceTask.getOrgid()); serviceSubtask.setCampusid(serviceTask.getCampusid()); if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid())) serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid())); serviceSubtask.setNurseId(patMedInhosp1.getNurseId()); @@ -1155,6 +1157,8 @@ private ServiceSubtask boxedServiceSubtaskForOp(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatMedOperationItem patMedOperationItem, PatArchive patArchive, String config) { ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class); serviceSubtask.setTaskid(serviceTask.getTaskid()); serviceSubtask.setOrgid(serviceTask.getOrgid()); serviceSubtask.setCampusid(serviceTask.getCampusid()); if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid())) serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid())); serviceSubtask.setNurseId(patMedInhosp1.getNurseId()); smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -482,6 +482,8 @@ public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOuthosp patMedOuthosp, PatArchive patArchive) { ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class); serviceSubtask.setTaskid(serviceTask.getTaskid()); serviceSubtask.setOrgid(serviceTask.getOrgid()); serviceSubtask.setCampusid(serviceTask.getCampusid()); if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid())) serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid())); serviceSubtask.setDrcode(patMedOuthosp.getDrcode()); smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -254,9 +254,8 @@ <include refid="selectServiceSubtaskVo"/> where 1=1 and del_flag = 0 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if> <if test="taskid != null ">and taskid = #{taskid}</if> <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if> <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if> @@ -278,16 +277,11 @@ <include refid="selectServiceSubtaskVo"/> where 1=1 and del_flag = 0 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="subId != null"> AND id = #{subId} </if> <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if> <if test="subId != null">and id = #{subId}</if> <if test="taskid != null ">and taskid = #{taskid}</if> <if test="visitTime != null"> AND date_format(visit_time,'%y%m%d') <= date_format(#{visitTime},'%y%m%d') </if> <if test="visitTime != null">and date_format(visit_time,'%y%m%d') <= date_format(#{visitTime},'%y%m%d')</if> <if test="sendstate != null ">and sendstate = #{sendstate}</if> <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if> <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if> @@ -579,15 +573,10 @@ <include refid="selectServiceSubtaskVo"/> where del_flag = 0 and sendstate != 5 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="visitTime != null"> AND date_format(visit_time,'%y%m%d') <= date_format(#{visitTime},'%y%m%d') </if> <if test="subId != null"> AND id = #{subId} </if> <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if> <if test="visitTime != null">and date_format(visit_time,'%y%m%d') <= date_format(#{visitTime},'%y%m%d') </if> <if test="subId != null">and id = #{subId} </if> <if test="sendstate != null ">and sendstate = #{sendstate}</if> <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if> <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if> @@ -597,9 +586,8 @@ <include refid="selectServiceSubtaskVo"/> where del_flag = 0 and sendstate = 5 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if> <if test="visitTime != null"> AND date_format(visit_time,'%y%m%d') <= date_format(DATE_ADD(#{visitTime}, INTERVAL 1 DAY),'%y%m%d') </if> @@ -617,9 +605,8 @@ resultMap="ServiceSubtaskResult"> <include refid="selectServiceSubtaskVo"/> where del_flag = 0 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if> <if test="createStartTime != null and createEndTime != null">and create_time BETWEEN #{createStartTime} AND #{createEndTime} </if> @@ -714,9 +701,8 @@ DATE_FORMAT(b.create_time, '%Y-%m-%d') LIKE CONCAT(#{createTimeNew}, '%') </if> <if test="sendstate != null ">and b.sendstate = #{sendstate}</if> <if test="orgid != null and orgid != ''"> and b.orgid = #{orgid} </if> <if test="orgid != null and orgid != ''">and b.orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and b.campusid = #{campusid}</if> </select> <select id="selectTimelyRate" parameterType="com.smartor.domain.ServiceSubtask" resultType="double"> @@ -787,6 +773,7 @@ AND ss.visit_time < DATE_ADD(#{endtime}, INTERVAL 1 DAY) </if> <if test="orgid != null and orgid != ''">AND ss.orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and ss.campusid = #{campusid}</if> <if test="deptcode != null and deptcode != ''">and ss.deptcode = #{deptcode}</if> <if test="deptname != null and deptname != ''">and ss.deptname = #{deptname}</if> <if test="isabnormal != null">and ss.isabnormal = #{isabnormal}</if> @@ -1285,9 +1272,8 @@ where 1=1 <if test="patid != null ">and patid = #{patid}</if> <if test="taskid != null ">and taskid = #{taskid}</if> <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="orgid != null and orgid != ''">and orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and campusid = #{campusid}</if> </update> <update id="updateServiceSubtaskByCondition" parameterType="com.smartor.domain.ServiceSubtask"> @@ -1558,6 +1544,9 @@ <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," @@ -1646,12 +1635,9 @@ and a.del_flag = '0' and b.del_flag = '0' and a.appltype = '3' <if test="orgid != null and orgid != ''"> and a.orgid = #{orgid} </if> <if test="taskId != null"> and a.task_id = #{taskId} </if> <if test="orgid != null and orgid != ''">and a.orgid = #{orgid}</if> <if test="campusid != null and campusid != ''">and b.campusid = #{campusid}</if> <if test="taskId != null">and a.task_id = #{taskId}</if> <if test="taskName != null and taskName != ''"> and a.task_name like concat('%', #{taskName}, '%') </if> @@ -1740,6 +1726,9 @@ and del_flag = 0 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN @@ -1842,6 +1831,9 @@ <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," @@ -1937,6 +1929,9 @@ <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," @@ -1981,6 +1976,9 @@ <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," @@ -2012,6 +2010,9 @@ and del_flag = 0 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">AND leavehospitaldistrictcode IN @@ -2067,6 +2068,9 @@ AND t.del_flag=0 <if test="orgid != null and orgid != ''"> and t.orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and t.campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND t.leavehospitaldistrictcode IN @@ -2151,6 +2155,9 @@ <if test="orgid != null and orgid != ''"> AND ss.orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> AND ss.campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND ss.leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator="," @@ -2207,6 +2214,9 @@ and ss.del_flag=0 <if test="orgid != null and orgid != ''"> and ss.orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and ss.campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND ss.leavehospitaldistrictcode IN @@ -2778,6 +2788,9 @@ <if test="orgid != null and orgid != ''"> AND orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" @@ -2865,6 +2878,9 @@ <if test="orgid != null and orgid != ''"> AND orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> AND campusid = #{campusid} </if> <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="code" open="(" separator="," close=")"> @@ -2890,6 +2906,9 @@ AND deptcode IS NOT NULL AND deptcode != '' <if test="orgid != null and orgid != ''"> AND orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> AND campusid = #{campusid} </if> <if test="deptcodes != null and deptcodes.size() > 0"> AND deptcode IN @@ -2922,6 +2941,9 @@ AND service_type = 4 <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="sendstate != null"> AND sendstate = #{sendstate} @@ -3023,6 +3045,9 @@ <if test="orgid != null and orgid != ''"> and orgid = #{orgid} </if> <if test="campusid != null and campusid != ''"> and campusid = #{campusid} </if> <if test="sendstate != null"> AND sendstate = #{sendstate} </if>