From 3d047130b059efd46f56be37465a751ab16ee8cb Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 11 十一月 2026 14:06:56 +0800
Subject: [PATCH] Merge branch 'smartor_ls_merge' into 20261111-妇幼档案随访
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 86 ++++++++++++++++++++++++++++++++++++-------
1 files changed, 72 insertions(+), 14 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index f403771..f8a826b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.common.core.service.IUserExtInfoService;
+import com.ruoyi.common.core.service.ISatisfactionCategoryService;
import com.ruoyi.system.mapper.SysUserDeptMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -84,6 +85,10 @@
@Value("${isAdmin}")
private List<Long> isAdmin;
+
+ @Value("${spring.profiles.active}")
+ private String active;
+
/**
* 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
*
@@ -141,7 +146,10 @@
deptIds.add(sysDept.getDeptId());
}
SysUserDept sysUserDept = new SysUserDept();
- sysUserDept.setUserId(sysUser.getUserId());
+ // 绠$悊鍛橈細涓嶆寜鐢ㄦ埛杩囨护锛坰ys_user_dept 閲屾病鏈� admin 鐨勬暟鎹級锛岀洿鎺ュ彇鏈満鏋勫叏閮ㄧ瀹�/鐥呭尯
+ if (!isAdminUser(sysUser)) {
+ sysUserDept.setUserId(sysUser.getUserId());
+ }
sysUserDept.setDeptType(sysUser.getSearchscope());
sysUserDept.setOrgid(sysUser.getOrgid());
List<SysUserDept> sysUserDeptKSs = null;
@@ -196,7 +204,7 @@
if (sysUser.getUserType().equals("鎮h��") && 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");
@@ -215,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);
}
@@ -253,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);
}
@@ -319,9 +327,57 @@
}
sysUser.setBelongDepts(list);
// 璁剧疆婊℃剰搴﹀垎绫伙紙璧扮紦瀛橈級
- sysUser.setSatisfactionCategories(userExtInfoService.getSatisfactionCategories(sysUser.getOrgid()));
+ // 婊℃剰搴︽ā鍧楀寲鍚庯細涓嶅啀缁忕敱 smartor 鐨� IUserExtInfoService锛�
+ // 鏀逛负鎸� ruoyi-common 鐨� ISatisfactionCategoryService 鎺ュ彛鏌ユ壘瀹炵幇
+ // 锛堝疄鐜板湪 ruoyi-satisfaction锛岀敱甯搁┗闂ㄩ潰淇濊瘉"妯″潡鍏抽棴/缂哄け鏃惰繑鍥炵┖ Map"锛�
+ sysUser.setSatisfactionCategories(loadSatisfactionCategories(sysUser.getOrgid()));
}
return sysUser;
+ }
+
+ /**
+ * 瀹夊叏鍦拌幏鍙栨弧鎰忓害鍒嗙被銆�
+ * <p>
+ * 婊℃剰搴︽ā鍧楀彲浠ヨ閰嶇疆鍏抽棴锛坽@code sys_config} 鍙傛暟 {@code satisfaction.enabled=false}锛夛紝涔熷彲浠ユ暣浣撲笉鍦ㄤ緷璧栭噷锛�
+ * 杩欎袱绉嶆儏鍐典笅閮藉繀椤�<b>涓嶅奖鍝嶇櫥褰曚富娴佺▼</b>锛屽洜姝よ繖閲岋細
+ * <ul>
+ * <li>瀹瑰櫒閲屾病鏈� {@code ISatisfactionCategoryService} 瀹炵幇鏃惰繑鍥炵┖ Map锛�</li>
+ * <li>璋冪敤杩囩▼涓姏浠讳綍寮傚父涔熷彧璁版棩蹇楀苟杩斿洖绌� Map銆�</li>
+ * </ul>
+ *
+ * @param orgid 鏈烘瀯ID
+ * @return 婊℃剰搴﹀垎绫伙紱涓嶅彲鐢ㄦ椂杩斿洖绌� Map锛堜笉浼氳繑鍥� null锛�
+ */
+ private Map<String, Object> loadSatisfactionCategories(String orgid) {
+ try {
+ ISatisfactionCategoryService satisfactionCategoryService =
+ SpringUtils.getBean(ISatisfactionCategoryService.class);
+ if (satisfactionCategoryService == null) {
+ return Collections.emptyMap();
+ }
+ Map<String, Object> categories = satisfactionCategoryService.getSatisfactionCategories(orgid);
+ return categories == null ? Collections.emptyMap() : categories;
+ } catch (Exception e) {
+ log.warn("鑾峰彇婊℃剰搴﹀垎绫诲け璐ワ紝宸查檷绾т负绌虹粨鏋滐紙涓嶅奖鍝嶇櫥褰曪級銆俹rgid={}", orgid, e);
+ return Collections.emptyMap();
+ }
+ }
+
+ /**
+ * 鏄惁绠$悊鍛橈細璐﹀彿鍚嶄负 admin锛屾垨鐢ㄦ埛ID鍛戒腑閰嶇疆椤� isAdmin銆�
+ * <p>
+ * 绠$悊鍛樺彇绉戝/鐥呭尯鏃朵笉鎸� sys_user_dept 杩囨护鈥斺�擧IS 閲囬泦鍐欒琛ㄦ椂鏄庣‘鎺掗櫎浜� admin
+ * 锛圕ollectHISMapper 鐨� 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());
}
/**
@@ -346,7 +402,8 @@
@Override
public SysUser selectUserByUserNameAndDeptId(String userName) {
String[] split = userName.split("&");
- if (split[2].contains("null")) {
+ //鍗楀崕闄勪竴涔熶笉楠岃瘉dept_id浜�
+ if (split[2].contains("null") || active.equals("nhfy")) {
split[2] = null;
}
SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], split[2]);
@@ -985,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;
@@ -994,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锛宮apper 浼氱洿鎺ユ煡 sys_dept锛堜笉鍏宠仈 sys_user_dept锛夛紝
+ // 杩斿洖鏈満鏋勫叏閮ㄧ瀹�/鐥呭尯锛涜繖閲屼笉鍐嶅仛鍙跺瓙杩囨护锛屽惁鍒欍�屾墍鏈夌瀹ょ梾鍖恒�嶄細琚爫鎺夌埗绾ч儴闂ㄣ��
+ return sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept);
}
/**
--
Gitblit v1.9.3