Переглянути джерело

新加登录后用户现在系统、医院接口

songxinlu 3 роки тому
батько
коміт
4419135fb8
25 змінених файлів з 274 додано та 87 видалено
  1. 1 1
      common/src/main/java/com/lantone/common/dto/GetHospitalListInfoDTO.java
  2. 1 1
      common/src/main/java/com/lantone/common/dto/GetHospitalTreeDTO.java
  3. 1 1
      common/src/main/java/com/lantone/common/dto/GetMenuByIdDTO.java
  4. 1 1
      common/src/main/java/com/lantone/common/dto/GetMenusTreeDTO.java
  5. 1 1
      common/src/main/java/com/lantone/common/dto/GetUserDTO.java
  6. 25 0
      common/src/main/java/com/lantone/common/dto/GetUserHospitalsDTO.java
  7. 1 1
      common/src/main/java/com/lantone/common/dto/GetUserShowTreeDTO.java
  8. 1 1
      common/src/main/java/com/lantone/common/dto/MenuDTO.java
  9. 1 1
      common/src/main/java/com/lantone/common/dto/MenuInfoDTO.java
  10. 1 1
      common/src/main/java/com/lantone/common/dto/SoftwareMenuRelationDTO.java
  11. 1 1
      common/src/main/java/com/lantone/common/dto/UserMenuResourceTreeDTO.java
  12. 19 0
      common/src/main/java/com/lantone/common/dto/UserSoftwareHospitalDTO.java
  13. 10 10
      common/src/main/java/com/lantone/common/vo/AddHospitalTreeVO.java
  14. 3 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/HospitalUserMapper.java
  15. 6 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserMapper.java
  16. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserRoleMapper.java
  17. 1 1
      dblayer-mbg/src/main/resources/mapper/HospitalUserMapper.xml
  18. 58 2
      dblayer-mbg/src/main/resources/mapper/UserMapper.xml
  19. 2 1
      dblayer-mbg/src/main/resources/mapper/UserRoleMapper.xml
  20. 1 1
      security-center/src/main/java/com/lantone/security/facade/FuncManagementFacade.java
  21. 13 12
      security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java
  22. 2 2
      security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java
  23. 114 45
      security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java
  24. 2 2
      security-center/src/main/java/com/lantone/security/web/HospitalManagementController.java
  25. 7 0
      security-center/src/main/java/com/lantone/security/web/UserManagementController.java

+ 1 - 1
common/src/main/java/com/lantone/common/dto/GetHospitalListInfoDTO.java

@@ -33,7 +33,7 @@ public class GetHospitalListInfoDTO implements Serializable {
     private List<GetDeptInfoDTO> depts;
 
     @ApiModelProperty(value = "该虚拟医院的医院列表")
-    private List<GetHospitalListInfoDTO> hospitalDTOS;
+    private List<GetHospitalListInfoDTO> children;
     @ApiModelProperty(value = "记录创建时间")
     private Date gmtCreate;
 }

+ 1 - 1
common/src/main/java/com/lantone/common/dto/GetHospitalTreeDTO.java

@@ -33,7 +33,7 @@ public class GetHospitalTreeDTO implements Serializable {
     private List<GetDeptTreeDTO> depts;
 
     @ApiModelProperty(value = "该虚拟医院的医院列表")
-    private List<GetHospitalTreeDTO> hospitalDTOS;
+    private List<GetHospitalTreeDTO> children;
 
     @ApiModelProperty(value = "是否关联")
     private String relation = "未关联";

+ 1 - 1
common/src/main/java/com/lantone/common/dto/GetMenuByIdDTO.java

@@ -66,7 +66,7 @@ public class GetMenuByIdDTO implements Serializable {
     private String remark;
 
     @ApiModelProperty(value = "子集")
-    private List<GetMenuByIdDTO> sonMenu;
+    private List<GetMenuByIdDTO> children;
 
 
 

+ 1 - 1
common/src/main/java/com/lantone/common/dto/GetMenusTreeDTO.java

@@ -46,7 +46,7 @@ public class GetMenusTreeDTO implements Serializable {
     private String status;
 
     @ApiModelProperty(value = "子集")
-    private List<GetMenusTreeDTO> sonMenu;
+    private List<GetMenusTreeDTO> children;
 
 
 

+ 1 - 1
common/src/main/java/com/lantone/common/dto/GetUserDTO.java

@@ -55,7 +55,7 @@ public class GetUserDTO implements Serializable {
     private String status;
 
     @ApiModelProperty(value = "所属组织")
-    private List<GetHospitalTreeDTO> hospitalDTOS;
+    private List<GetHospitalTreeDTO> hospitals;
     @ApiModelProperty(value = "用户角色列表")
     private List<UserRoleDTO> roles;
 

+ 25 - 0
common/src/main/java/com/lantone/common/dto/GetUserHospitalsDTO.java

@@ -0,0 +1,25 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description:用户所属组织DTO
+ * @Author songxl
+ * @Date 2021/8/12
+ */
+@Data
+public class GetUserHospitalsDTO {
+    @ApiModelProperty(value = "编号")
+    private Long hospitalId;
+    @ApiModelProperty(value = "父级编号")
+    private Long parentId;
+    @ApiModelProperty(value = "名称")
+    private String hospitalName;
+    @ApiModelProperty(value = "组织类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院)")
+    private String type;
+    @ApiModelProperty(value = "子类医院")
+    private List<GetUserHospitalsDTO> children;
+}

+ 1 - 1
common/src/main/java/com/lantone/common/dto/GetUserShowTreeDTO.java

@@ -27,5 +27,5 @@ public class GetUserShowTreeDTO implements Serializable {
     @ApiModelProperty(value = "类型:0:目录,1菜单,2按钮,3:功能")
     private String menuType ;
     @ApiModelProperty(value = "子集")
-    private List<GetUserShowTreeDTO> sonMenu;
+    private List<GetUserShowTreeDTO> children;
 }

+ 1 - 1
common/src/main/java/com/lantone/common/dto/MenuDTO.java

@@ -77,7 +77,7 @@ public class MenuDTO implements Serializable {
     private String remark;
 
     @ApiModelProperty(value = "子集")
-    private List<MenuDTO> sonMenu;
+    private List<MenuDTO> children;
 
 
 

+ 1 - 1
common/src/main/java/com/lantone/common/dto/MenuInfoDTO.java

@@ -94,5 +94,5 @@ public class MenuInfoDTO {
     /**
      * 是否删除,N:未删除,Y:删除
      */
-    private List<MenuInfoDTO> sonMenuInfo;
+    private List<MenuInfoDTO> children;
 }

+ 1 - 1
common/src/main/java/com/lantone/common/dto/SoftwareMenuRelationDTO.java

@@ -27,5 +27,5 @@ public class SoftwareMenuRelationDTO {
     @ApiModelProperty(value = "菜单已关联或未关联")
     private String menuRelation;
     @ApiModelProperty(value = "子系统服务菜单关联关系对象")
-    private  List<SoftwareMenuRelationDTO> sonMenu;
+    private  List<SoftwareMenuRelationDTO> children;
 }

+ 1 - 1
common/src/main/java/com/lantone/common/dto/UserMenuResourceTreeDTO.java

@@ -36,5 +36,5 @@ public class UserMenuResourceTreeDTO implements Serializable {
     private String menuType ;
 
     @ApiModelProperty(value = "子集")
-    private List<UserMenuResourceTreeDTO> sonMenuResource;
+    private List<UserMenuResourceTreeDTO> children;
 }

+ 19 - 0
common/src/main/java/com/lantone/common/dto/UserSoftwareHospitalDTO.java

@@ -0,0 +1,19 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 用户系统对应医院返回对象
+ */
+@Data
+public class UserSoftwareHospitalDTO {
+    @ApiModelProperty(value = "编号")
+    private Long id;
+    @ApiModelProperty(value = "服务名称")
+    private String name;
+    @ApiModelProperty(value = "用户该服务下对应的医院集合")
+    private List<GetUserHospitalsDTO> hospitals;
+}

+ 10 - 10
common/src/main/java/com/lantone/common/vo/AddHospitalTreeVO.java

@@ -16,16 +16,16 @@ import java.util.List;
 public class AddHospitalTreeVO implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(value = "医院编号",required = true)
-    @NotNull(message = "医院编号不能为空")
-    private Long id;
-
-    @ApiModelProperty(value = "医院名称")
-    private String name;
-
-    @ApiModelProperty(value = "组织类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院)",required = true)
-    @NotNull(message = "组织类型不能为空")
-    private String type;
+//    @ApiModelProperty(value = "医院编号",required = true)
+//    @NotNull(message = "医院编号不能为空")
+//    private Long id;
+//
+//    @ApiModelProperty(value = "医院名称")
+//    private String name;
+//
+//    @ApiModelProperty(value = "组织类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院)",required = true)
+//    @NotNull(message = "组织类型不能为空")
+//    private String type;
 
     @ApiModelProperty(value = "科室id列表")
     private List<Long> depts;

+ 3 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/HospitalUserMapper.java

@@ -7,6 +7,8 @@ import com.lantone.common.vo.GetUserPageVO;
 import com.lantone.dblayermbg.entity.HospitalUser;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 表名:sys_hospital_user Mapper接口
@@ -17,4 +19,5 @@ public interface HospitalUserMapper extends BaseMapper<HospitalUser> {
     IPage<GetUserPageDTO> getUserPage(@Param("getUserPageVO") GetUserPageVO getUserPageVO);
 
     Long getHospitalUserById(@Param("hospitalId") Long hospitalId);
+
 }

+ 6 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserMapper.java

@@ -1,7 +1,9 @@
 package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.common.dto.GetUserHospitalsDTO;
 import com.lantone.common.dto.RoleDTO;
+import com.lantone.common.dto.SoftwareDTO;
 import com.lantone.dblayermbg.entity.Hospital;
 import com.lantone.dblayermbg.entity.User;
 import org.apache.ibatis.annotations.Param;
@@ -19,4 +21,8 @@ public interface UserMapper extends BaseMapper<User> {
     List<Hospital> getUserOrganizeByUserID(Long userID);
 
     List<RoleDTO> getUserRoleByUserID(@Param("userID") Long userID, @Param("organizeId") Long organizeId);
+
+    List<SoftwareDTO> getUserSoftwareByUId(@Param("userID") Long userID);
+
+    List<GetUserHospitalsDTO> getUserSoftwareHospitals(@Param("userID")Long currentPrincipleId, @Param("softwareID")Long id);
 }

+ 1 - 1
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserRoleMapper.java

@@ -16,5 +16,5 @@ public interface UserRoleMapper extends BaseMapper<UserRole> {
 
     List<UserRoleDTO> getUserRoles(@Param("userId") Long userId);
 
-    Long getUserRoleById(@Param("userId") Long userId);
+    Long getUserRoleById(@Param("userId") Long userId,@Param("hospitalId")Long hospitalId);
 }

+ 1 - 1
dblayer-mbg/src/main/resources/mapper/HospitalUserMapper.xml

@@ -44,7 +44,7 @@
         WHERE
             u.is_deleted = 'N'
         AND hu.is_deleted = 'N'
-        AND u.`name` IS NULL
+        AND u.remark = 'Administrators'
         AND u.id = hu.user_id
         AND hu.hospital_id = #{hospitalId}
     </select>

+ 58 - 2
dblayer-mbg/src/main/resources/mapper/UserMapper.xml

@@ -38,11 +38,67 @@
         AND sr.is_deleted = 'N'
         AND r.is_deleted = 'N'
         <if test="userID != null ">
-            AND u.id = #{userID}
+            AND u.id = #{userId}
         </if>
         <if test="organizeId != null ">
             AND r.organize_id = #{organizeId}
         </if>
     </select>
-
+    <select id="getUserSoftwareByUId" resultType="com.lantone.common.dto.SoftwareDTO">
+        SELECT DISTINCT
+            s.id,
+            s.`name`
+        FROM
+            sys_user u,
+            sys_hospital_user hu,
+            sys_hospital h,
+            sys_user_role ur,
+            sys_role r,
+            sys_role_software_menu rsm,
+            sys_software_menu sm,
+            sys_software s
+        WHERE
+            u.id = hu.user_id
+        AND hu.hospital_id = h.id
+        AND u.id = ur.user_id
+        AND r.id = ur.role_id
+        AND rsm.software_menu_id = sm.id
+        AND r.id = rsm.role_id
+        AND sm.software_id = s.id
+        AND r.is_deleted = 'N'
+        AND rsm.is_deleted = 'N'
+        AND sm.is_deleted = 'N'
+        AND s.is_deleted = 'N'
+        AND u.id = #{userID}
+    </select>
+    <select id="getUserSoftwareHospitals" resultType="com.lantone.common.dto.GetUserHospitalsDTO">
+        SELECT DISTINCT
+            h.id hospitalId,
+            h.parent_id parentId,
+            h.type,
+            h.`name` hospitalName
+        FROM
+            sys_user u,
+            sys_hospital_user hu,
+            sys_hospital h,
+            sys_user_role ur,
+            sys_role r,
+            sys_role_software_menu rsm,
+            sys_software_menu sm,
+            sys_software s
+        WHERE
+            u.id = hu.user_id
+        AND hu.hospital_id = h.id
+        AND u.id = ur.user_id
+        AND r.id = ur.role_id
+        AND rsm.software_menu_id = sm.id
+        AND r.id = rsm.role_id
+        AND sm.software_id = s.id
+        AND r.is_deleted = 'N'
+        AND rsm.is_deleted = 'N'
+        AND sm.is_deleted = 'N'
+        AND s.is_deleted = 'N'
+        AND u.id = #{userID}
+        AND s.id = #{softwareID}
+    </select>
 </mapper>

+ 2 - 1
dblayer-mbg/src/main/resources/mapper/UserRoleMapper.xml

@@ -25,7 +25,8 @@
             r.is_deleted = 'N'
         AND ur.is_deleted = 'N'
         AND r.id = ur.role_id
-        AND r.`name` IS NULL
+        AND r.remark = 'ManagementRole'
         AND ur.user_id = #{userId}
+        AND r.hospital_id = #{hospitalId}
     </select>
 </mapper>

+ 1 - 1
security-center/src/main/java/com/lantone/security/facade/FuncManagementFacade.java

@@ -89,7 +89,7 @@ public class FuncManagementFacade {
         List<GetMenusTreeDTO> sonMenu = new ArrayList<>();
         List<GetMenusTreeDTO> menuList = menuMap.get(menu.getId());
         if (ListUtil.isNotEmpty(menuList)) {
-            menu.setSonMenu(menuList);
+            menu.setChildren(menuList);
             for (GetMenusTreeDTO bean : menuList) {
                 getSonMenu(bean, menuMap);
             }

+ 13 - 12
security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java

@@ -108,15 +108,15 @@ public class HospitalManagementFacade {
                     .eq("hospital_id", hospitalId)).get(0).getId();
             //拼装添加用户信息
             AddUserVO addUserVO = new AddUserVO();
+            BeanUtils.copyProperties(addHospitalVO.getAddHospitalUserVO(), addUserVO);
             //用户与角色的关系
             addUserVO.setRoles(new ArrayList<>());
             addUserVO.getRoles().add(roleId);
             addUserVO.setName(addHospitalVO.getName() + "管理员");
             addUserVO.setRemark("Administrators");
-            BeanUtils.copyProperties(addHospitalVO.getAddHospitalUserVO(), addUserVO);
             //用户与组织的关系
             AddHospitalTreeVO addHospitalTreeVO = new AddHospitalTreeVO();
-            addHospitalTreeVO.setId(hospitalId);
+//            addHospitalTreeVO.setId(hospitalId);
             BeanUtils.copyProperties(addHospitalVO, addHospitalTreeVO);
             addHospitalTreeVO.setHospitals(new ArrayList<>());
             addHospitalTreeVO.getHospitals().add(hospitalId);
@@ -151,14 +151,16 @@ public class HospitalManagementFacade {
      * @Return boolean
      */
     private boolean deleteHUserAndRole(Long hospitalId) {
+
         //1.获取用户id
         Long userId = hospitalUserFacade.getBaseMapper().getHospitalUserById(hospitalId);
-        if (userManagementFacade.deleteUser(userId)) {
-            //2.获取角色id
-            Long roleId = userRoleFacade.getBaseMapper().getUserRoleById(userId);
-            return roleManagementFacade.deleteRole(roleId);
+        //2.获取角色id
+        Long roleId = userRoleFacade.getBaseMapper().getUserRoleById(userId,hospitalId);
+        if (roleManagementFacade.deleteRole(roleId)) {
+            //3.删除用户
+            return userManagementFacade.deleteUser(userId);
         } else {
-            Asserts.fail("管理用户删除失败");
+            Asserts.fail("管理角色删除失败");
         }
 
         return false;
@@ -178,7 +180,7 @@ public class HospitalManagementFacade {
             if (hospitalFacade.updateById(hospital)) {
                 //3.创建组织与管理用户、角色
                 AddHospitalVO addHospitalVO = new AddHospitalVO();
-                BeanUtils.copyProperties(addHospitalVO, updateHospitalVO);
+                BeanUtils.copyProperties(updateHospitalVO, addHospitalVO);
                 addHospitalVO.setAddHospitalUserVO(updateHospitalVO.getAddHospitalUserVO());
                 addHospitalVO.setSoftwares(updateHospitalVO.getSoftwares());
                 return saveUser(updateHospitalVO.getId(), addHospitalVO);
@@ -199,11 +201,10 @@ public class HospitalManagementFacade {
 
     /**
      * @param hospitalId
-     * @param local
      * @Description通过组织id获取该组织及用户详情
      * @Return com.lantone.common.dto.GetHospitalByIdDTO
      */
-    public GetHospitalByIdDTO getHospitalById(Long hospitalId, Long local) {
+    public GetHospitalByIdDTO getHospitalById(Long hospitalId) {
         GetHospitalByIdDTO getHospitalByIdDTO = new GetHospitalByIdDTO();
         //1.获取医院详情
         Hospital hospital = hospitalFacade.getById(hospitalId);
@@ -216,7 +217,7 @@ public class HospitalManagementFacade {
         getHospitalByIdDTO.setGetHospitalUserDTO(getHospitalUserDTO);
         //3.获取管理角色相关信息
         getHospitalByIdDTO.setGetRoleDTO(roleManagementFacade.getRoleById(userRoleFacade.getBaseMapper()
-                .getUserRoleById(user.getId())));
+                .getUserRoleById(user.getId(),hospitalId)));
         return getHospitalByIdDTO;
     }
 
@@ -317,7 +318,7 @@ public class HospitalManagementFacade {
     public void getSonHospital(GetHospitalListInfoDTO hospital, Map<Long, List<GetHospitalListInfoDTO>> hospitalMap) {
         List<GetHospitalListInfoDTO> hospitals = hospitalMap.get(hospital.getHospitalId());
         if (ListUtil.isNotEmpty(hospitals)) {
-            hospital.setHospitalDTOS(hospitals);
+            hospital.setChildren(hospitals);
             for (GetHospitalListInfoDTO bean : hospitals) {
                 getSonHospital(bean, hospitalMap);
             }

+ 2 - 2
security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java

@@ -277,7 +277,7 @@ public class RoleManagementFacade {
         List<GetUserShowTreeDTO> sonMenu = new ArrayList<>();
         List<GetUserShowTreeDTO> menuList = menuMap.get(menu.getMenuId());
         if (ListUtil.isNotEmpty(menuList)) {
-            menu.setSonMenu(menuList);
+            menu.setChildren(menuList);
             for (GetUserShowTreeDTO bean : menuList) {
                 getSonMenu(bean, menuMap);
             }
@@ -296,7 +296,7 @@ public class RoleManagementFacade {
         List<UserMenuResourceTreeDTO> sonMenu = new ArrayList<>();
         List<UserMenuResourceTreeDTO> menuList = menuMap.get(menu.getMenuId());
         if (ListUtil.isNotEmpty(menuList)) {
-            menu.setSonMenuResource(menuList);
+            menu.setChildren(menuList);
             for (UserMenuResourceTreeDTO bean : menuList) {
                 getSonMenu(bean, menuMap);
             }

+ 114 - 45
security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java

@@ -10,7 +10,10 @@ import com.lantone.common.domain.UserDto;
 import com.lantone.common.dto.GetDeptTreeDTO;
 import com.lantone.common.dto.GetHospitalTreeDTO;
 import com.lantone.common.dto.GetUserDTO;
+import com.lantone.common.dto.GetUserHospitalsDTO;
 import com.lantone.common.dto.GetUserPageDTO;
+import com.lantone.common.dto.SoftwareDTO;
+import com.lantone.common.dto.UserSoftwareHospitalDTO;
 import com.lantone.common.enums.IsDeleteEnum;
 import com.lantone.common.enums.StatusEnum;
 import com.lantone.common.exception.Asserts;
@@ -43,9 +46,13 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -152,48 +159,29 @@ public class UserManagementFacade {
      */
     private boolean saveUserHospital(AddHospitalTreeVO addHospitalTreeVO, Long userId, List<Long> roles) {
 
-        //1.获取组织类型
-        //1.1单家医院
-        if (HospitalTypeEnum.SINGLE_HOSPITAL.getKey() == Integer.parseInt(addHospitalTreeVO.getType())) {
-            //插入用户和医院的关系
-            if (ListUtil.isNotEmpty(addHospitalTreeVO.getHospitals())) {
-                addHospitalTreeVO.getHospitals().stream().forEach(hospitalId -> {
-                    HospitalUser hospitalUser = new HospitalUser();
-                    hospitalUser.setUserId(userId);
-                    hospitalUser.setHospitalId(hospitalId);
-                    hospitalUserFacade.save(hospitalUser);
-                });
-                //插入用户和科室的关系(没有科室信息默认为全院)
-                if (ListUtil.isNotEmpty(addHospitalTreeVO.getDepts())) {
-                    addHospitalTreeVO.getDepts().stream().forEach(deptID -> {
-                        DeptUser userDept = new DeptUser();
-                        userDept.setDeptId(deptID);
-                        userDept.setUserId(userId);
-                        userDeptFacade.save(userDept);
-                    });
-                }
-                //插入用户和角色的关系
-                return saveUserRole(userId, roles);
-            } else {
-                Asserts.fail("用户所属组织为空");
-            }
-            //非单家医院用户
-        } else {
-            //插入用户和医院的关系
-            if (ListUtil.isNotEmpty(addHospitalTreeVO.getHospitals())) {
-                addHospitalTreeVO.getHospitals().stream().forEach(hospitalId -> {
-                    HospitalUser hospitalUser = new HospitalUser();
-                    hospitalUser.setUserId(userId);
-                    hospitalUser.setHospitalId(hospitalId);
-                    hospitalUserFacade.save(hospitalUser);
-                });
-                //插入用户和角色的关系
-                return saveUserRole(userId, roles);
-            } else {
-                Asserts.fail("用户所属组织为空");
-            }
+        if(ListUtil.isEmpty(addHospitalTreeVO.getDepts())&&ListUtil.isEmpty(addHospitalTreeVO.getHospitals())){
+            Asserts.fail("用户关联的医院或科室都为空");
         }
-        return false;
+        //插入用户和科室的关系(没有科室信息默认为全院)
+        if (ListUtil.isNotEmpty(addHospitalTreeVO.getDepts())) {
+            addHospitalTreeVO.getDepts().stream().forEach(deptID -> {
+                DeptUser userDept = new DeptUser();
+                userDept.setDeptId(deptID);
+                userDept.setUserId(userId);
+                userDeptFacade.save(userDept);
+            });
+        }
+        //插入用户和医院的关系
+        if (ListUtil.isNotEmpty(addHospitalTreeVO.getHospitals())) {
+            addHospitalTreeVO.getHospitals().stream().forEach(hospitalId -> {
+                HospitalUser hospitalUser = new HospitalUser();
+                hospitalUser.setUserId(userId);
+                hospitalUser.setHospitalId(hospitalId);
+                hospitalUserFacade.save(hospitalUser);
+            });
+        }
+        //插入用户和角色的关系
+        return saveUserRole(userId, roles);
     }
 
     /**
@@ -344,7 +332,7 @@ public class UserManagementFacade {
         //深度遍历拼装结果
         List<GetHospitalTreeDTO> hospitalTree = hospitalMap.get(hospital.getParentId());
         getHospitalDeptInfo(hospitalMap, hospitals, depts, hospitalTree);
-        getUserDTO.setHospitalDTOS(hospitalTree);
+        getUserDTO.setHospitals(hospitalTree);
 
         //4.获取用户的角色
         getUserDTO.setRoles(userRoleFacade.getBaseMapper().getUserRoles(userId));
@@ -365,7 +353,7 @@ public class UserManagementFacade {
         }
         List<GetHospitalTreeDTO> hospitalTreeDTOS = hospitalMap.get(hospital.getHospitalId());
         if (ListUtil.isNotEmpty(hospitalTreeDTOS)) {
-            hospital.setHospitalDTOS(hospitalTreeDTOS);
+            hospital.setChildren(hospitalTreeDTOS);
             getHospitalDeptInfo(hospitalMap, hospitals, depts, hospitalTreeDTOS);
         }
     }
@@ -395,7 +383,22 @@ public class UserManagementFacade {
             getSonHospital(bean, hospitalMap, hospitals, depts);
         }
     }
-
+    /**
+     * 递归获取医院结构
+     *
+     * @param hospital    当前医院
+     * @param hospitalMap 医院集
+     * @return 空
+     */
+    public void getSonHospital(GetUserHospitalsDTO hospital, Map<Long, List<GetUserHospitalsDTO>> hospitalMap) {
+        List<GetUserHospitalsDTO> hospitals = hospitalMap.get(hospital.getHospitalId());
+        if (ListUtil.isNotEmpty(hospitals)) {
+            hospital.setChildren(hospitals);
+            for (GetUserHospitalsDTO bean : hospitals) {
+                getSonHospital(bean, hospitalMap);
+            }
+        }
+    }
     /**
      * 递归获取医院结构
      *
@@ -406,7 +409,7 @@ public class UserManagementFacade {
     public void getSonHospital(GetHospitalTreeDTO hospital, Map<Long, List<GetHospitalTreeDTO>> hospitalMap) {
         List<GetHospitalTreeDTO> hospitals = hospitalMap.get(hospital.getHospitalId());
         if (ListUtil.isNotEmpty(hospitals)) {
-            hospital.setHospitalDTOS(hospitals);
+            hospital.setChildren(hospitals);
             for (GetHospitalTreeDTO bean : hospitals) {
                 //真实医院添加科室信息
                 if (HospitalTypeEnum.SINGLE_HOSPITAL.getKey() == Integer.parseInt(bean.getType())) {
@@ -429,4 +432,70 @@ public class UserManagementFacade {
         getUserPageVO.setLocalUserID(SysUserUtils.getCurrentPrincipleId());
         return hospitalUserFacade.getBaseMapper().getUserPage(getUserPageVO);
     }
+    /**
+     * @Description获取用户所属组织
+     * @param
+     * @Return java.util.List<com.lantone.common.dto.GetHospitalTreeDTO>
+     */
+    public Map<String,Object> getUserHospitals() {
+        Map<String,Object> out = new HashMap<>();
+        //但系统单家医院直接跳转
+        boolean jumpFlag = true;
+        //1.获取用户系统信息
+        List<SoftwareDTO> softwares = userFacade.getBaseMapper().getUserSoftwareByUId(SysUserUtils.getCurrentPrincipleId());
+        if(softwares.size()>1){
+            jumpFlag = false;
+        }
+        AtomicInteger count = new AtomicInteger();
+        List<UserSoftwareHospitalDTO> userSoftwareHospitals = new ArrayList<>();
+        if(ListUtil.isNotEmpty(softwares)){
+            softwares.stream().forEach(softwareDTO -> {
+                UserSoftwareHospitalDTO tempU = new UserSoftwareHospitalDTO();
+                BeanUtils.copyProperties(softwareDTO,tempU);
+                //获取该系统下的医院
+                List<GetUserHospitalsDTO> softwareHospitals = userFacade.getBaseMapper()
+                        .getUserSoftwareHospitals(SysUserUtils.getCurrentPrincipleId(),softwareDTO.getId());
+                count.set(count.get() + softwareHospitals.size());
+                //转换成树状结构
+                Map<Long,List<GetUserHospitalsDTO>> softwareHospitalMap = EntityUtil.makeEntityListMap(softwareHospitals,"parentId");
+                tempU.setHospitals(transTreeData(softwareHospitalMap,softwareHospitals));
+                userSoftwareHospitals.add(tempU);
+            });
+        }
+        if(count.get()>1){
+            jumpFlag = false;
+        }
+        out.put("jump",jumpFlag);
+        out.put("software",userSoftwareHospitals);
+        return out;
+    }
+    /**
+     * @Description将医院信息转换成树状结构
+     * @param softwareHospitalMap
+     * @param softwareHospitals
+     * @Return java.util.List<com.lantone.common.dto.GetUserHospitalsDTO>
+     */
+    private List<GetUserHospitalsDTO> transTreeData(Map<Long, List<GetUserHospitalsDTO>> softwareHospitalMap,List<GetUserHospitalsDTO> softwareHospitals) {
+        if(softwareHospitalMap==null)return null;
+        List<GetUserHospitalsDTO> out = new ArrayList<>();
+        Set<Long> tempParents  = new HashSet<>();
+        Set<Long> parents  = softwareHospitalMap.keySet();
+        parents.stream().forEach(id->{
+            softwareHospitals.stream().forEach(getUserHospitalsDTO -> {
+                if(getUserHospitalsDTO.getHospitalId().equals(id)){
+                    tempParents.add(id);
+                }
+            });
+        });
+        parents.stream().forEach(parentId->{
+            if(!tempParents.contains(parentId)){
+                List<GetUserHospitalsDTO> hospitalListInfos = softwareHospitalMap.get(parentId);
+                for(GetUserHospitalsDTO bean:hospitalListInfos){
+                    getSonHospital(bean,softwareHospitalMap);
+                }
+                out.addAll(hospitalListInfos);
+            }
+        });
+        return out;
+    }
 }

+ 2 - 2
security-center/src/main/java/com/lantone/security/web/HospitalManagementController.java

@@ -63,8 +63,8 @@ public class HospitalManagementController {
 
     @ApiOperation(value = "查看功能 [by:songxl]")
     @PostMapping("/getHospitalById")
-    public CommonResult<GetHospitalByIdDTO> getHospitalById(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId, Long local) {
-        return CommonResult.success(hospitalManagementFacade.getHospitalById(HospitalId,local));
+    public CommonResult<GetHospitalByIdDTO> getHospitalById(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId) {
+        return CommonResult.success(hospitalManagementFacade.getHospitalById(HospitalId));
     }
 
     @ApiOperation(value = "组织管理列表页管理员下拉框筛选类型、病区、职称查询 [by:songxl]")

+ 7 - 0
security-center/src/main/java/com/lantone/security/web/UserManagementController.java

@@ -6,6 +6,7 @@ import com.lantone.common.domain.UserDto;
 import com.lantone.common.dto.GetHospitalTreeDTO;
 import com.lantone.common.dto.GetUserDTO;
 import com.lantone.common.dto.GetUserPageDTO;
+import com.lantone.common.dto.UserSoftwareHospitalDTO;
 import com.lantone.common.vo.AddUserVO;
 import com.lantone.common.vo.GetUserPageVO;
 import com.lantone.common.vo.LoginVO;
@@ -25,6 +26,7 @@ import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 用户管理API
@@ -97,5 +99,10 @@ public class UserManagementController {
     public CommonResult<IPage<GetUserPageDTO>> getUserPage(GetUserPageVO getUserPageVO) {
         return CommonResult.success(userManagementFacade.getUserPage(getUserPageVO));
     }
+    @ApiOperation(value = "登录成功获取用户的系统医院信息 [by:songxl]")
+    @PostMapping("/getUserHospitals")
+    public CommonResult<Map<String,Object>> getUserHospitals() {
+        return CommonResult.success(userManagementFacade.getUserHospitals());
+    }
 
 }