| .gitignore | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
.gitignore
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ # ==================== æå»ºäº§ç© ==================== target/ out/ *.class # ==================== IDE / ç¼è¾å¨ ==================== .idea/ *.iml *.ipr *.iws .vscode/ .settings/ .project .classpath # ==================== 临æ¶ç®å½ ==================== tmp/ .tmp/ _backups/ recovered/ __pycache__/ *.pyc # ==================== å¤ä»½ä¸ä¸´æ¶æä»¶ ==================== *.bak *.bak[0-9] *.bak-* *.bak[0-9]-* *.orig *.rej *~ # ==================== 䏿¬¡æ§ææ¥èæ¬ / æ¢é / æ¥å¿ï¼ä¸å ¥åºï¼ ==================== # sql/ ä¸ç䏿¬¡æ§ä¿®å¤ãææ¥ãå¼å ³é ç½®èæ¬ä» æ¬å°çåï¼ä¸å ¥åºï¼ # ä» ä¿çå å åºçº¿èæ¬ä¸æ°åºåå§åèæ¬ã /sql/*.sql !/sql/quartz.sql !/sql/ry_20220822.sql !/sql/pat_specific_archive_generate_config_lishui_mch_20261104.sql sql/_probe/ *.log _dbcheck.txt package-lock.json # ==================== æ¬å°ä¸´æ¶é ç½® ==================== ruoyi-admin/src/main/resources/tempfile_*.yml ruoyi-admin/src/main/resources/logback-backup.xml ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -63,6 +63,12 @@ @Value("${spring.profiles.active}") private String active; /** * 管çåç¨æ·IDå表ï¼é 置项 isAdminï¼ã管çåä¸åãç¨æ·-é¨é¨å ³ç³»è¡¨ãéå¶ï¼ç´æ¥çæ¬æºæå ¨é¨ç§å®¤/ç åºã */ @Value("${isAdmin:1}") private List<Long> isAdmin; // @Value("${wx_appid}") // private String wxAppid; // @@ -240,23 +246,43 @@ ajax.put("user", user); ajax.put("roles", roles); ajax.put("permissions", permissions); List<SysDept> sysDeptKSs = null; List<SysDept> sysDeptBQs = null; // ç§å®¤/ç åºä¸æçæ°æ®æºï¼ // · 管çåï¼è´¦å· adminï¼æå½ä¸é ç½® isAdmin çç¨æ·IDï¼ï¼ç´æ¥æ¥ sys_dept åæ¬æºæå ¨é¨ç§å®¤/ç åºï¼ // ä¸åå ³è sys_user_deptï¼ä¹ä¸æé¢åºè¿æ»¤ââ管çåå¤©ç¶æ¥æå ¨é¨ç§å®¤æéï¼ // · æ®éç¨æ·ï¼ä»ç¶æãç¨æ·-é¨é¨å ³ç³»è¡¨ãåªè¿åèªå·±åä¸çç§å®¤/ç åºï¼ä¿æåé»è¾ï¼ã SysUserDept sysUserDept = new SysUserDept(); sysUserDept.setUserId(user.getUserId()); sysUserDept.setDeptType("1"); sysUserDept.setOrgid(user.getOrgid()); sysUserDept.setCampusid(user.getCampusid()); sysDeptKSs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); if (!isAdminUser(user)) { sysUserDept.setUserId(user.getUserId()); sysUserDept.setCampusid(user.getCampusid()); } sysUserDept.setDeptType("1"); List<SysDept> sysDeptKSs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); ajax.put("belongDepts", sysDeptKSs); sysUserDept.setDeptType("2"); sysDeptBQs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); List<SysDept> sysDeptBQs = sysDeptService.selectLeafSysDeptListBySysUserDept(sysUserDept); ajax.put("belongWards", sysDeptBQs); return ajax; } /** * æ¯å¦ç®¡çåï¼è´¦å·å为 adminï¼æç¨æ·IDå½ä¸é 置项 isAdminã * <p> * 管çååç§å®¤/ç åºæ¶ä¸èµ° sys_user_deptï¼HIS ééæç¡®æé¤ adminï¼è¯¥è¡¨é管çåæ²¡ææ°æ®ï¼ï¼ * å¦åä¼åºç°ãç»å½æåä½ç§å®¤/ç åºä¸æä¸ºç©ºãã */ private boolean isAdminUser(SysUser user) { if (user == null) { return false; } if ("admin".equalsIgnoreCase(user.getUserName())) { return true; } return user.getUserId() != null && isAdmin != null && isAdmin.contains(user.getUserId()); } /** * è·åè·¯ç±ä¿¡æ¯ * * @return è·¯ç±ä¿¡æ¯ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -334,6 +334,10 @@ public List<SysDept> selectLeafSysDeptListBySysUserDept(SysUserDept sysUserDept){ List<SysDept> list = deptMapper.selectSysDeptListBySysUserDept(sysUserDept); // userId 为空 = 管çååæ¬æºæå ¨éç§å®¤/ç åºï¼è¦ãå ¨é¨ãï¼ä¸è½åæå¶åèç¹è¿æ»¤æç¶çº§é¨é¨ if (sysUserDept != null && sysUserDept.getUserId() == null) { return list == null ? new ArrayList<>() : list; } if(CollectionUtils.isNotEmpty(list)){ list = TreeUtils.getLeafDepts(list); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -146,7 +146,10 @@ deptIds.add(sysDept.getDeptId()); } SysUserDept sysUserDept = new SysUserDept(); sysUserDept.setUserId(sysUser.getUserId()); // 管çåï¼ä¸æç¨æ·è¿æ»¤ï¼sys_user_dept éæ²¡æ admin çæ°æ®ï¼ï¼ç´æ¥åæ¬æºæå ¨é¨ç§å®¤/ç åº if (!isAdminUser(sysUser)) { sysUserDept.setUserId(sysUser.getUserId()); } sysUserDept.setDeptType(sysUser.getSearchscope()); sysUserDept.setOrgid(sysUser.getOrgid()); List<SysUserDept> sysUserDeptKSs = null; @@ -201,7 +204,7 @@ if (sysUser.getUserType().equals("æ£è ") && StringUtils.isNotEmpty(split[3]) && !split[3].equals("null") && !sysUser.getUserType().equals(split[3].trim())) throw new BaseException("å½åç¨æ·ç±»åä¸ç»å½ç¨æ·ç±»åä¸ä¸è´"); boolean isAdmin = StringUtils.isNotEmpty(split[0]) && "admin".equals(split[0]); boolean isAdmin = isAdminUser(sysUser); IUserExtInfoService userExtInfoService = SpringUtils.getBean(IUserExtInfoService.class); Executor executor = SpringUtils.getBean("threadPoolTaskExecutor"); @@ -220,7 +223,7 @@ // çå¾ æºæä¿¡æ¯ Map<String, String> userOrgInfo = new HashMap<>(); try { userOrgInfo = orgInfoFuture.get(5, TimeUnit.SECONDS); userOrgInfo = orgInfoFuture.get(50, TimeUnit.SECONDS); } catch (Exception e) { log.warn("è·åç¨æ·æºæä¿¡æ¯è¶ æ¶æå¼å¸¸", e); } @@ -258,8 +261,8 @@ CompletableFuture<List<SysDept>> ksFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptForAdmin(deptKS), executor); CompletableFuture<List<SysDept>> bqFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptForAdmin(deptBQ), executor); try { sysUserDeptKSs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(ksFuture.get(5, TimeUnit.SECONDS), SysUserDept.class)); sysUserDeptBQs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(bqFuture.get(5, TimeUnit.SECONDS), SysUserDept.class)); sysUserDeptKSs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(ksFuture.get(50, TimeUnit.SECONDS), SysUserDept.class)); sysUserDeptBQs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(bqFuture.get(50, TimeUnit.SECONDS), SysUserDept.class)); } catch (Exception e) { log.warn("è·åadminç§å®¤/ç åºä¿¡æ¯è¶ æ¶æå¼å¸¸", e); } @@ -358,6 +361,23 @@ log.warn("è·å满æåº¦å类失败ï¼å·²éçº§ä¸ºç©ºç»æï¼ä¸å½±åç»å½ï¼ãorgid={}", orgid, e); return Collections.emptyMap(); } } /** * æ¯å¦ç®¡çåï¼è´¦å·å为 adminï¼æç¨æ·IDå½ä¸é 置项 isAdminã * <p> * 管çååç§å®¤/ç åºæ¶ä¸æ sys_user_dept è¿æ»¤ââHIS ééåè¯¥è¡¨æ¶æç¡®æé¤äº admin * ï¼CollectHISMapper ç yhyksxx/yhybfxx 齿 {@code ud.user_id != 'admin'}ï¼ï¼ * èµ°å ³èæ¥è¯¢ä¼å¾å°ç©ºå表ï¼è¡¨ç°ä¸ºãç»å½æåä½åå»ºä»»å¡æ¶éä¸å°ç§å®¤ç åºãã */ private boolean isAdminUser(SysUser sysUser) { if (sysUser == null) { return false; } if ("admin".equalsIgnoreCase(sysUser.getUserName())) { return true; } return sysUser.getUserId() != null && isAdmin != null && isAdmin.contains(sysUser.getUserId()); } /** @@ -1022,8 +1042,11 @@ public List<SysUserDept> selectLeafSysDeptList(SysUserDept sysUserDept){ List<SysDept> list = sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept); if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){ list = TreeUtils.getLeafDepts(list); // userId 为空 = 管çååæ¬æºæå ¨éï¼è¦ãææç§å®¤ç åºãï¼ä¸è½åæå¶åèç¹è¿æ»¤ if (sysUserDept == null || sysUserDept.getUserId() != null) { if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){ list = TreeUtils.getLeafDepts(list); } } List<SysUserDept> list1 = DtoConversionUtils.sourceToTarget(list, SysUserDept.class); return list1; @@ -1031,11 +1054,9 @@ public List<SysDept> selectLeafSysDeptForAdmin(SysDept sysDept){ SysUserDept sysUserDept = DtoConversionUtils.sourceToTarget(sysDept, SysUserDept.class); List<SysDept> list = sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept); if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){ list = TreeUtils.getLeafDepts(list); } return list; // 管çå忝ï¼sysUserDept ä¸å¸¦ userIdï¼mapper ä¼ç´æ¥æ¥ sys_deptï¼ä¸å ³è sys_user_deptï¼ï¼ // è¿åæ¬æºæå ¨é¨ç§å®¤/ç åºï¼è¿éä¸ååå¶åè¿æ»¤ï¼å¦åãææç§å®¤ç åºãä¼è¢«ç æç¶çº§é¨é¨ã return sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept); } /** ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -283,17 +283,36 @@ where dept_id = #{deptId} </delete> <!-- æ¥è¯¢ç§å®¤/ç åºï¼ · userId æå¼ï¼æ®éç¨æ· / ç¨æ·ç¼è¾é¡µï¼æ¥æä¸ªç¨æ·åä¸çé¨é¨ï¼â å ³è sys_user_deptï¼ Â· userId 为空ï¼ç®¡çåï¼çæ¬æºæå ¨é¨ç§å®¤/ç åºï¼â åªæ¥ sys_deptï¼ä¸å ³èå ³ç³»è¡¨ã 为ä»ä¹è¦åæ¯ï¼HIS ééå sys_user_dept æ¶æç¡®æé¤äº adminï¼CollectHISMapper ç yhyksxx/yhybfxx 齿 ud.user_id != 'admin'ï¼ï¼ç®¡çåå¨å ³ç³»è¡¨éæ²¡ææ°æ®ï¼èµ° inner join ä¼å¾å°ç©ºå表ï¼è¡¨ç°å°±æ¯ãç»å½æåä½åå»ºä»»å¡æ¶éä¸å°ç§å®¤ç åºãã å¦å¤ä¸åé¢åºè¿æ»¤ï¼ç®¡çåè·¨é¢åºï¼ï¼é¢åºé离åªå¯¹æ®éç¨æ·çæã --> <select id="selectSysDeptListBySysUserDept" parameterType="com.ruoyi.common.core.domain.entity.SysUserDept" resultMap="SysDeptResult"> <include refid="selectDeptVo"/> inner join sys_user_dept ud on d.dept_code = ud.dept_code where 1=1 and d.del_flag = 0 and ud.del_flag = 0 <if test="orgid != null">and d.orgid = #{orgid} and ud.orgid = #{orgid}</if> <if test="campusid != null">and d.campusid = #{campusid}</if> <if test="userId != null">and ud.user_id = #{userId}</if> <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if> <choose> <when test="userId != null"> <include refid="selectDeptVo"/> inner join sys_user_dept ud on d.dept_code = ud.dept_code where 1=1 and d.del_flag = 0 and ud.del_flag = 0 <if test="orgid != null">and d.orgid = #{orgid} and ud.orgid = #{orgid}</if> <if test="campusid != null">and d.campusid = #{campusid}</if> <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if> and ud.user_id = #{userId} </when> <otherwise> <include refid="selectDeptVo"/> where d.del_flag = 0 <if test="orgid != null">and d.orgid = #{orgid}</if> <if test="deptType != null and deptType != ''">and d.dept_type = #{deptType}</if> </otherwise> </choose> </select> </mapper> ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
@@ -384,16 +384,34 @@ <sql id="filterLeaveDimAnd"> /* f-v3 */ <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> AND leavehospitaldistrictcode IN AND ( leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="lvWardCodeItem" open="(" separator="," close=")"> #{lvWardCodeItem} </foreach> <!-- å»¶ç»æ¤çä»»å¡ï¼service_type='99'ï¼å¯ä»¥å¨æ£è è¿æ²¡åºé¢æ¶çæï¼ è¿ç±»è®°å½åªæãå¨é¢ç»´åº¦ãï¼hospitaldistrictcode / deptcodeï¼ï¼åºé¢ç»´åº¦æ¯ NULLã NULL ä¸å¹é ä»»ä½ INï¼ä»»å¡ä¼ãæç¤ºçææåãå表éå´æ¥ä¸å°ãï¼ æä»¥åºé¢ç»´åº¦ä¸ºç©ºæ¶ç¨åä¸å¥ç¼ç ä½ç³»çå¨é¢ç»´åº¦å åºã --> OR (service_type = '99' AND (leavehospitaldistrictcode IS NULL OR leavehospitaldistrictcode = '') AND hospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="lvWardCodeItem" open="(" separator="," close=")"> #{lvWardCodeItem} </foreach>) ) </if> <if test="leaveldeptcodes != null and leaveldeptcodes.size() > 0"> AND leaveldeptcode IN AND ( leaveldeptcode IN <foreach collection="leaveldeptcodes" item="lvDeptCodeItem" open="(" separator="," close=")"> #{lvDeptCodeItem} </foreach> OR (service_type = '99' AND (leaveldeptcode IS NULL OR leaveldeptcode = '') AND deptcode IN <foreach collection="leaveldeptcodes" item="lvDeptCodeItem" open="(" separator="," close=")"> #{lvDeptCodeItem} </foreach>) ) </if> </sql> @@ -434,20 +452,38 @@ or (leaveldeptcodes != null and leaveldeptcodes.size() > 0)"> AND ( <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0"> ( leavehospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="lvWardCodeItem" open="(" separator="," close=")"> #{lvWardCodeItem} </foreach> <!-- å»¶ç»æ¤çä»»å¡ï¼service_type='99'ï¼å¯ä»¥å¨æ£è è¿æ²¡åºé¢æ¶çæï¼ è¿ç±»è®°å½åªæãå¨é¢ç»´åº¦ãï¼hospitaldistrictcode / deptcodeï¼ï¼åºé¢ç»´åº¦æ¯ NULLã NULL ä¸å¹é ä»»ä½ INï¼ä»»å¡ä¼ãæç¤ºçææåãå表éå´æ¥ä¸å°ãï¼ æä»¥åºé¢ç»´åº¦ä¸ºç©ºæ¶ç¨åä¸å¥ç¼ç ä½ç³»çå¨é¢ç»´åº¦å åºã --> OR (service_type = '99' AND (leavehospitaldistrictcode IS NULL OR leavehospitaldistrictcode = '') AND hospitaldistrictcode IN <foreach collection="leavehospitaldistrictcodes" item="lvWardCodeItem" open="(" separator="," close=")"> #{lvWardCodeItem} </foreach>) ) </if> <if test="(leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0) and (leaveldeptcodes != null and leaveldeptcodes.size() > 0)"> OR </if> <if test="leaveldeptcodes != null and leaveldeptcodes.size() > 0"> ( leaveldeptcode IN <foreach collection="leaveldeptcodes" item="lvDeptCodeItem" open="(" separator="," close=")"> #{lvDeptCodeItem} </foreach> OR (service_type = '99' AND (leaveldeptcode IS NULL OR leaveldeptcode = '') AND deptcode IN <foreach collection="leaveldeptcodes" item="lvDeptCodeItem" open="(" separator="," close=")"> #{lvDeptCodeItem} </foreach>) ) </if> ) </if>