From 4dd78acfe298217ebc5dd247c5b45c6f33deea9b Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 08 十一月 2025 22:43:14 +0800
Subject: [PATCH] feat:医院选择计算

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java |   75 +++++++++++++++++++++++++++++++++++++
 1 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index c0d4981..f989b8b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -9,6 +9,7 @@
 import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginBody;
@@ -17,6 +18,7 @@
 import com.ruoyi.framework.web.service.SysLoginService;
 import com.ruoyi.framework.web.service.SysPermissionService;
 import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysMenuService;
 
 /**
@@ -38,6 +40,9 @@
 
     @Autowired
     private TokenService tokenService;
+
+    @Autowired
+    private ISysDeptService deptService;
 
     /**
      * 鐧诲綍鏂规硶
@@ -66,6 +71,26 @@
     {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         SysUser user = loginUser.getUser();
+        // 璁$畻鍙鐞嗗垎鍏徃鍒楄〃锛堝熀浜� OA_OrderClass 涓� sys_dept.service/dispatch_order_class锛�
+        java.util.List<SysDept> branchCompanies = new java.util.ArrayList<>();
+        java.util.Set<Long> seen = new java.util.HashSet<>();
+        if (com.ruoyi.common.utils.StringUtils.isNotEmpty(user.getOaOrderClass())) {
+            String[] codes = user.getOaOrderClass().split(",");
+            for (String raw : codes) {
+                String code = raw.trim();
+                if (code.isEmpty()) continue;
+                SysDept cond1 = new SysDept();
+                cond1.setParentId(100L);
+                cond1.setServiceOrderClass(code);
+                java.util.List<SysDept> list1 = deptService.selectDeptList(cond1);
+                for (SysDept d : list1) { if (seen.add(d.getDeptId())) branchCompanies.add(d); }
+                SysDept cond2 = new SysDept();
+                cond2.setParentId(100L);
+                cond2.setDispatchOrderClass(code);
+                java.util.List<SysDept> list2 = deptService.selectDeptList(cond2);
+                for (SysDept d : list2) { if (seen.add(d.getDeptId())) branchCompanies.add(d); }
+            }
+        }
         // 瑙掕壊闆嗗悎
         Set<String> roles = permissionService.getRolePermission(user);
         // 鏉冮檺闆嗗悎
@@ -75,10 +100,60 @@
             loginUser.setPermissions(permissions);
             tokenService.refreshToken(loginUser);
         }
+        
+        // 鑾峰彇鐢ㄦ埛鎵�鍦ㄧ殑鍒嗗叕鍙镐俊鎭�
+        Long branchCompanyId = null;
+        String branchCompanyName = null;
+        if (user.getDeptId() != null)
+        {
+            SysDept dept = deptService.selectDeptById(user.getDeptId());
+            if (dept != null)
+            {
+                // 鍒ゆ柇褰撳墠閮ㄩ棬鏄惁灏辨槸鍒嗗叕鍙革紙parent_id = 100锛�
+                if (dept.getParentId() != null && dept.getParentId() == 100)
+                {
+                    branchCompanyId = dept.getDeptId();
+                    branchCompanyName = dept.getDeptName();
+                }
+                else if (dept.getAncestors() != null && !dept.getAncestors().isEmpty())
+                {
+                    // 浠� ancestors 瑙f瀽鍒嗗叕鍙窱D
+                    // ancestors 鏍煎紡锛�"0,100,鍒嗗叕鍙窱D,瀛愰儴闂↖D"
+                    String[] ancestorIds = dept.getAncestors().split(",");
+                    // 鎵惧埌100鍚庨潰鐨勯偅涓狪D灏辨槸鍒嗗叕鍙窱D
+                    for (int i = 0; i < ancestorIds.length; i++)
+                    {
+                        if ("100".equals(ancestorIds[i]) && i + 1 < ancestorIds.length)
+                        {
+                            try
+                            {
+                                Long companyId = Long.parseLong(ancestorIds[i + 1]);
+                                SysDept branchCompany = deptService.selectDeptById(companyId);
+                                if (branchCompany != null)
+                                {
+                                    branchCompanyId = branchCompany.getDeptId();
+                                    branchCompanyName = branchCompany.getDeptName();
+                                }
+                            }
+                            catch (NumberFormatException e)
+                            {
+                                // 瑙f瀽澶辫触锛屽拷鐣�
+                            }
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        
         AjaxResult ajax = AjaxResult.success();
         ajax.put("user", user);
         ajax.put("roles", roles);
         ajax.put("permissions", permissions);
+        ajax.put("branchCompanyId", branchCompanyId);
+        ajax.put("branchCompanyName", branchCompanyName);
+        ajax.put("branchCompanies", branchCompanies);
+        ajax.put("oaUserId", user.getOaUserId());
         return ajax;
     }
 

--
Gitblit v1.9.1