Ver código fonte

Merge remote-tracking branch 'origin/dev/ez-security210625' into dev/ez-security210625

# Conflicts:
#	security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java
rengb 3 anos atrás
pai
commit
fddb409391
23 arquivos alterados com 772 adições e 46 exclusões
  1. 19 0
      common/src/main/java/com/lantone/common/dto/DownBoxRegionDTO.java
  2. 52 0
      common/src/main/java/com/lantone/common/dto/GetHospitalByIdDTO.java
  3. 2 0
      common/src/main/java/com/lantone/common/dto/GetHospitalTreeDTO.java
  4. 29 0
      common/src/main/java/com/lantone/common/dto/GetHospitalUserDTO.java
  5. 32 0
      common/src/main/java/com/lantone/common/dto/GetUserPageDTO.java
  6. 48 0
      common/src/main/java/com/lantone/common/vo/AddHospitalUserVO.java
  7. 62 0
      common/src/main/java/com/lantone/common/vo/AddHospitalVO.java
  8. 35 0
      common/src/main/java/com/lantone/common/vo/GetUserPageVO.java
  9. 57 0
      common/src/main/java/com/lantone/common/vo/UpdateHospitalVO.java
  10. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/HospitalMapper.java
  11. 7 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/HospitalUserMapper.java
  12. 2 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleMapper.java
  13. 2 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserRoleMapper.java
  14. 3 0
      dblayer-mbg/src/main/resources/mapper/HospitalMapper.xml
  15. 47 1
      dblayer-mbg/src/main/resources/mapper/HospitalUserMapper.xml
  16. 13 0
      dblayer-mbg/src/main/resources/mapper/UserRoleMapper.xml
  17. 6 1
      gateway-service/src/main/resources/bootstrap.yml
  18. 252 0
      security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java
  19. 3 6
      security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java
  20. 32 25
      security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java
  21. 58 5
      security-center/src/main/java/com/lantone/security/web/HospitalManagementController.java
  22. 2 1
      security-center/src/main/java/com/lantone/security/web/RoleManagementController.java
  23. 8 5
      security-center/src/main/java/com/lantone/security/web/UserManagementController.java

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

@@ -0,0 +1,19 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * @Description:病区下拉列表信息
+ * @Author songxl
+ * @Date 2021/8/6
+ */
+@Data
+public class DownBoxRegionDTO {
+
+    @ApiModelProperty(value = "病区编号")
+    private Long id;
+    @ApiModelProperty(value = "病区名称")
+    private String name;
+}

+ 52 - 0
common/src/main/java/com/lantone/common/dto/GetHospitalByIdDTO.java

@@ -0,0 +1,52 @@
+package com.lantone.common.dto;
+
+import com.lantone.common.vo.AddHospitalUserVO;
+import com.lantone.common.vo.AddRoleSoftwareVO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 新增组织对象
+ * </p>
+ */
+@Data
+public class GetHospitalByIdDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "组织机构id")
+    private Long Id;
+    @ApiModelProperty(value = "父级组织机构id")
+    private Long parentId;
+
+    @ApiModelProperty(value = "组织机构代码")
+    private String code;
+
+    @ApiModelProperty(value = "组织机构名称")
+    private String name;
+    @ApiModelProperty(value = "父级组织机构名称")
+    private String parentName;
+
+    @ApiModelProperty(value = "组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院)")
+    @NotBlank(message = "组织机构类型不能为空")
+    private String type;
+
+    @ApiModelProperty(value = "排序")
+    private String orderNo;
+
+    @ApiModelProperty(value = "状态:0-禁用,1-启用")
+    @NotBlank(message = "组织机构状态不能为空")
+    private String status;
+
+    @ApiModelProperty(value = "组织管理员用户")
+    private GetHospitalUserDTO getHospitalUserDTO;
+
+    @ApiModelProperty(value = "角色对象对象")
+    private GetRoleDTO getRoleDTO;
+}

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

@@ -19,6 +19,8 @@ public class GetHospitalTreeDTO implements Serializable {
     private Long hospitalId;
 
     private Long parentId;
+    @ApiModelProperty(value = "创建用户id")
+    private Long creator;
 
 
     @ApiModelProperty(value = "名称")

+ 29 - 0
common/src/main/java/com/lantone/common/dto/GetHospitalUserDTO.java

@@ -0,0 +1,29 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description:组织用户信息
+ * @Author songxl
+ * @Date 2021/8/6
+ */
+@Data
+public class GetHospitalUserDTO {
+    @ApiModelProperty(value = "用户编号")
+    private Long id;
+    @ApiModelProperty(value = "用户名")
+    private String username;
+
+    @ApiModelProperty(value = "密码")
+    private String password;
+
+    @ApiModelProperty(value = "联系人")
+    private String name;
+
+
+    @ApiModelProperty(value = "手机号")
+    private String mobilePhone;
+}

+ 32 - 0
common/src/main/java/com/lantone/common/dto/GetUserPageDTO.java

@@ -0,0 +1,32 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 用户列表页对象
+ * </p>
+ */
+@Data
+public class GetUserPageDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "用户编号")
+    private Long userId;
+    @ApiModelProperty(value = "编号")
+    private Long hospitalId;
+    @ApiModelProperty(value = "用户名")
+    private String username;
+    @ApiModelProperty(value = "姓名")
+    private String name;
+    @ApiModelProperty(value = "组织名称")
+    private String hospitalName;
+    @ApiModelProperty(value = "工号")
+    private Integer jobNo;
+    @ApiModelProperty(value = "状态")
+    private String status;
+
+}

+ 48 - 0
common/src/main/java/com/lantone/common/vo/AddHospitalUserVO.java

@@ -0,0 +1,48 @@
+package com.lantone.common.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 用户实体类
+ * </p>
+ */
+@Data
+public class AddHospitalUserVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+
+    @ApiModelProperty(value = "用户名" ,required = true)
+    @NotBlank(message = "用户名不能为空")
+    private String username;
+
+    @ApiModelProperty(value = "密码",required = true)
+    @NotBlank(message = "密码不能为空")
+    private String password;
+
+    @ApiModelProperty(value = "联系人")
+    private String name;
+
+
+    @ApiModelProperty(value = "手机号")
+    private String mobilePhone;
+
+
+    @ApiModelProperty(value = "记录创建时间" ,hidden = true)
+    private Date gmtCreate;
+
+
+    @ApiModelProperty(value = "创建人,0表示无创建人值",hidden = true)
+    private String creator;
+
+}

+ 62 - 0
common/src/main/java/com/lantone/common/vo/AddHospitalVO.java

@@ -0,0 +1,62 @@
+package com.lantone.common.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 新增组织对象
+ * </p>
+ */
+@Data
+public class AddHospitalVO  implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "父级组织机构id",required = true)
+    @NotNull(message = "父级组织机构id不能为空")
+    private Long parentId;
+
+    @ApiModelProperty(value = "组织机构代码")
+    private String code;
+
+    @ApiModelProperty(value = "组织机构名称",required = true)
+    @NotBlank(message = "组织机构名称不能为空")
+    private String name;
+
+
+    @ApiModelProperty(value = "组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院)",required = true)
+    @NotBlank(message = "组织机构类型不能为空")
+    private String type;
+
+    @ApiModelProperty(value = "排序")
+    private String orderNo;
+
+    @ApiModelProperty(value = "状态:0-禁用,1-启用",required = true)
+    @NotBlank(message = "组织机构状态不能为空")
+    private String status;
+
+
+    @ApiModelProperty(value = "记录创建时间",hidden = true)
+    private Date gmtCreate;
+
+
+    @ApiModelProperty(value = "创建人,0表示无创建人值",hidden = true)
+    private String creator;
+
+    @ApiModelProperty(value = "组织管理员用户",required = true)
+    @Valid
+    @NotNull(message = "组织管理员用户不能为空")
+    private AddHospitalUserVO addHospitalUserVO;
+
+    @ApiModelProperty(value = "系统服务对象",required = true)
+    @Valid
+    @NotNull(message = "组织管理员角色不能为空")
+    private List<AddRoleSoftwareVO> softwares;
+}

+ 35 - 0
common/src/main/java/com/lantone/common/vo/GetUserPageVO.java

@@ -0,0 +1,35 @@
+package com.lantone.common.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 用户实体类
+ * </p>
+ */
+@Data
+public class GetUserPageVO extends Page implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "用户名")
+    private String username;
+
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    @ApiModelProperty(value = "医院id",hidden = true)
+    private Long hospitalId;
+
+
+    @ApiModelProperty(value = "状态 0:禁用,1:启用")
+    private String status;
+
+    @ApiModelProperty(value = "当前登录用户")
+    private Long localUserID;
+}

+ 57 - 0
common/src/main/java/com/lantone/common/vo/UpdateHospitalVO.java

@@ -0,0 +1,57 @@
+package com.lantone.common.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 新增组织对象
+ * </p>
+ */
+@Data
+public class UpdateHospitalVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "组织机构id",required = true)
+    @NotNull(message = "组织机构id不能为空")
+    private Long Id;
+    @ApiModelProperty(value = "父级组织机构id",required = true)
+    @NotNull(message = "父级组织机构id不能为空")
+    private Long parentId;
+
+    @ApiModelProperty(value = "组织机构代码")
+    private String code;
+
+    @ApiModelProperty(value = "组织机构名称",required = true)
+    @NotBlank(message = "组织机构名称不能为空")
+    private String name;
+
+
+    @ApiModelProperty(value = "组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院)",required = true)
+    @NotBlank(message = "组织机构类型不能为空")
+    private String type;
+
+    @ApiModelProperty(value = "排序")
+    private String orderNo;
+
+    @ApiModelProperty(value = "状态:0-禁用,1-启用",required = true)
+    @NotBlank(message = "组织机构状态不能为空")
+    private String status;
+
+    @ApiModelProperty(value = "组织管理员用户",required = true)
+    @Valid
+    @NotNull(message = "组织管理员用户不能为空")
+    private AddHospitalUserVO addHospitalUserVO;
+
+    @ApiModelProperty(value = "系统服务对象",required = true)
+    @Valid
+    @NotNull(message = "组织管理员角色不能为空")
+    private List<AddRoleSoftwareVO> softwares;
+}

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

@@ -15,7 +15,7 @@ import java.util.List;
  */
 public interface HospitalMapper extends BaseMapper<Hospital> {
 
-    List<GetHospitalTreeDTO> getHospitalTreeInfo(@Param("hospitalId") long hospitalId);
+    List<GetHospitalTreeDTO> getHospitalTreeInfo(@Param("hospitalId") long hospitalId,@Param("userId") Long userId);
 
     List<GetHospitalDeptDTO> getUserHospitalDept(@Param("hospitalId")Long hospitalId,@Param("userId") Long userId);
 

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

@@ -1,7 +1,11 @@
 package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.lantone.common.dto.GetUserPageDTO;
+import com.lantone.common.vo.GetUserPageVO;
 import com.lantone.dblayermbg.entity.HospitalUser;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -10,4 +14,7 @@ import com.lantone.dblayermbg.entity.HospitalUser;
  */
 public interface HospitalUserMapper extends BaseMapper<HospitalUser> {
 
+    IPage<GetUserPageDTO> getUserPage(@Param("getUserPageVO") GetUserPageVO getUserPageVO);
+
+    Long getHospitalUserById(@Param("hospitalId") Long hospitalId);
 }

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

@@ -1,6 +1,7 @@
 package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.dto.GetCreateRoleDTO;
 import com.lantone.common.dto.GetRolePageDTO;
 import com.lantone.common.vo.GetRolePageVO;
@@ -21,7 +22,7 @@ public interface RoleMapper extends BaseMapper<Role> {
      * @Return java.util.List<com.lantone.dblayermbg.entity.Role>
      * @Date 2021/7/30
      */
-    List<GetRolePageDTO> getRolePage(@Param("getRolePageVO") GetRolePageVO getRolePageVO);
+    IPage<GetRolePageDTO> getRolePage(@Param("getRolePageVO") GetRolePageVO getRolePageVO);
 
     List<GetCreateRoleDTO> getCreateRoles(@Param("userId") long userId);
 }

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

@@ -15,4 +15,6 @@ import java.util.List;
 public interface UserRoleMapper extends BaseMapper<UserRole> {
 
     List<UserRoleDTO> getUserRoles(@Param("userId") Long userId);
+
+    Long getUserRoleById(@Param("userId") Long userId);
 }

+ 3 - 0
dblayer-mbg/src/main/resources/mapper/HospitalMapper.xml

@@ -15,6 +15,9 @@
         <if test="hospitalId!=null">
             AND h.parent_id = #{hospitalId}
         </if>
+        <if test="userId!=null">
+            AND h.creator = #{userId}
+        </if>
     </select>
     <select id="getUserHospitalDept" resultType="com.lantone.common.dto.GetHospitalDeptDTO">
         SELECT

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

@@ -1,5 +1,51 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.lantone.dblayermbg.mapper.HospitalUserMapper">
-
+    <select id="getUserPage" resultType="com.lantone.common.dto.GetUserPageDTO">
+        SELECT
+        u.id userId,
+        u.`name`,
+        u.username,
+        h.id hospitalId,
+        h.`name` hospitalName,
+        u.job_no jobNo,
+        u.`status`
+        FROM
+        sys_user u,
+        sys_hospital_user hu,
+        sys_hospital h
+        WHERE
+        u.is_deleted = 'N'
+        AND hu.is_deleted = 'N'
+        AND h.is_deleted = 'N'
+        AND u.id = hu.user_id
+        AND h.id = hu.hospital_id
+        AND u.`name` IS NOt NULL
+        AND h.id = #{getUserPageVO.hospitalId}
+        <if test="getUserPageVO.localUserID !=null ">
+            AND u.id != #{getUserPageVO.localUserID}
+        </if>
+        <if test="getUserPageVO.status !=null and getUserPageVO.status !=''">
+            AND u.`status` = #{getUserPageVO.status}
+        </if>
+        <if test="getUserPageVO.username !=null and getUserPageVO.username !=''">
+            AND u.username LIKE concat('%',#{getUserPageVO.username},'%')
+        </if>
+        <if test="getUserPageVO.name !=null and getUserPageVO.name !=''">
+            AND u.`name` LIKE concat('%',#{getUserPageVO.name},'%')
+        </if>
+    </select>
+    <select id="getHospitalUserById" resultType="java.lang.Long">
+        SELECT
+            u.id
+        FROM
+            sys_user u,
+            sys_hospital_user hu
+        WHERE
+            u.is_deleted = 'N'
+        AND hu.is_deleted = 'N'
+        AND u.`name` IS NULL
+        AND u.id = hu.user_id
+        AND hu.hospital_id = #{hospitalId}
+    </select>
 </mapper>

+ 13 - 0
dblayer-mbg/src/main/resources/mapper/UserRoleMapper.xml

@@ -15,4 +15,17 @@
         AND r.is_deleted = 'N'
         AND ur.user_id = #{userId}
     </select>
+    <select id="getUserRoleById" resultType="java.lang.Long">
+        SELECT
+            r.id
+        FROM
+            sys_role r,
+            sys_user_role ur
+        WHERE
+            r.is_deleted = 'N'
+        AND ur.is_deleted = 'N'
+        AND r.id = ur.role_id
+        AND r.`name` IS NULL
+        AND ur.user_id = #{userId}
+    </select>
 </mapper>

+ 6 - 1
gateway-service/src/main/resources/bootstrap.yml

@@ -109,4 +109,9 @@ secure:
       - "/security-center/userAdmin/deleteUser"
       - "/security-center/userAdmin/disableUser"
       - "/security-center/userAdmin/getUserById"
-      - "/security-center/userAdmin/getUserPage"
+      - "/security-center/userAdmin/getUserPage"
+      - "/security-center/hospitalManage/addHospital"
+      - "/security-center/hospitalManage/deleteHospital"
+      - "/security-center/hospitalManage/disableHospital"
+      - "/security-center/hospitalManage/getHospitalById"
+      - "/security-center/hospitalManage/getManagerBoxInfo"

+ 252 - 0
security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java

@@ -1,10 +1,262 @@
 package com.lantone.security.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.graphbuilder.math.func.FactFunction;
+import com.lantone.common.dto.DownBoxRegionDTO;
+import com.lantone.common.dto.GetDeptTreeDTO;
+import com.lantone.common.dto.GetHospitalByIdDTO;
+import com.lantone.common.dto.GetHospitalTreeDTO;
+import com.lantone.common.dto.GetHospitalUserDTO;
+import com.lantone.common.enums.IsDeleteEnum;
+import com.lantone.common.exception.Asserts;
+import com.lantone.common.util.DateUtil;
+import com.lantone.common.vo.AddHospitalTreeVO;
+import com.lantone.common.vo.AddHospitalUserVO;
+import com.lantone.common.vo.AddHospitalVO;
+import com.lantone.common.vo.AddRoleVO;
+import com.lantone.common.vo.AddUserVO;
+import com.lantone.common.vo.UpdateHospitalVO;
+import com.lantone.dblayermbg.entity.Hospital;
+import com.lantone.dblayermbg.entity.HospitalUser;
+import com.lantone.dblayermbg.entity.Region;
+import com.lantone.dblayermbg.entity.Role;
+import com.lantone.dblayermbg.entity.User;
+import com.lantone.dblayermbg.facade.HospitalFacade;
+import com.lantone.dblayermbg.facade.HospitalUserFacade;
+import com.lantone.dblayermbg.facade.RegionFacade;
+import com.lantone.dblayermbg.facade.RoleFacade;
+import com.lantone.dblayermbg.facade.UserFacade;
+import com.lantone.dblayermbg.facade.UserRoleFacade;
+import com.lantone.security.enums.HospitalTypeEnum;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * 组织管理API
  */
 @Component
 public class HospitalManagementFacade {
+    @Autowired
+    private HospitalFacade hospitalFacade;
+    @Autowired
+    private HospitalUserFacade hospitalUserFacade;
+    @Autowired
+    private UserRoleFacade userRoleFacade;
+    @Autowired
+    private UserManagementFacade userManagementFacade;
+    @Autowired
+    private UserFacade userFacade;
+    @Autowired
+    private RoleManagementFacade roleManagementFacade;
+    @Autowired
+    private RoleFacade roleFacade;
+    @Autowired
+    private RegionFacade regionFacade;
+
+    /**
+     * @param addHospitalVO
+     * @Description添加组织
+     * @Return boolean
+     */
+    public boolean addHospital(AddHospitalVO addHospitalVO) {
+        Hospital hospital = new Hospital();
+        BeanUtils.copyProperties(addHospitalVO, hospital);
+        hospital.setGmtCreate(DateUtil.now());
+        //1.添加组织信息
+        if (hospitalFacade.save(hospital)) {
+            //2.保存该组织的用户
+            return saveUser(hospital.getId(), addHospitalVO);
+        } else {
+            Asserts.fail("组织添加失败");
+        }
+        return false;
+    }
+
+    /**
+     * @param hospitalId
+     * @param addHospitalVO
+     * @Description添加组织的用户
+     * @Return boolean
+     */
+    private boolean saveUser(Long hospitalId, AddHospitalVO addHospitalVO) {
+
+        //1.添加角色
+        AddRoleVO addRoleVO = new AddRoleVO();
+        addRoleVO.setRemark(addHospitalVO.getName() + "管理员");
+        addRoleVO.setStatus("1");
+        addRoleVO.setSoftwares(addHospitalVO.getSoftwares());
+        if (roleManagementFacade.addRole(addRoleVO)) {
+            //2.获取角色id完善新增用户信息
+            Long roleId = roleFacade.list(new QueryWrapper<Role>()
+                    .eq("remark", addHospitalVO.getName() + "管理员")).get(0).getId();
+            //拼装添加用户信息
+            AddUserVO addUserVO = new AddUserVO();
+            //用户与角色的关系
+            addUserVO.setRoles(new ArrayList<>());
+            addUserVO.getRoles().add(roleId);
+            BeanUtils.copyProperties(addHospitalVO.getAddHospitalUserVO(), addUserVO);
+            //用户与组织的关系
+            AddHospitalTreeVO addHospitalTreeVO = new AddHospitalTreeVO();
+            addHospitalTreeVO.setId(hospitalId);
+            BeanUtils.copyProperties(addHospitalVO, addHospitalTreeVO);
+            addHospitalTreeVO.setHospitals(new ArrayList<>());
+            addHospitalTreeVO.getHospitals().add(hospitalId);
+            addUserVO.setAddHospitalTreeVO(addHospitalTreeVO);
+            return userManagementFacade.addUser(addUserVO);
+        } else {
+            Asserts.fail("角色插入失败");
+        }
+        return false;
+    }
+    /**
+     * @Description删除组织
+     * @param hospitalId
+     * @Return boolean
+     */
+    public boolean deleteHospital(Long hospitalId) {
+        //1.删除组织表sys_hospital
+        if(hospitalFacade.removeById(hospitalId)){
+            //2.删除该组织的管理用户、角色
+            return deleteHUserAndRole(hospitalId);
+        }else {
+            Asserts.fail("组织表删除失败");
+        }
+
+        return false;
+    }
+
+    /**
+     * @Description删除该组织的管理用户、角色
+     * @param hospitalId
+     * @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);
+        }else {
+            Asserts.fail("管理用户删除失败");
+        }
+
+        return false;
+    }
+
+    /**
+     * @Description修改组织信息
+     * @param updateHospitalVO
+     * @Return boolean
+     */
+    public boolean updateHospital(UpdateHospitalVO updateHospitalVO) {
+        //1.删除该组织关联的管理用户以及角色
+        if(deleteHUserAndRole(updateHospitalVO.getId())){
+            Hospital hospital = new Hospital();
+            BeanUtils.copyProperties(updateHospitalVO,hospital);
+            //2.修改组织信息
+            if(hospitalFacade.updateById(hospital)){
+                //3.创建组织与管理用户、角色
+                AddHospitalVO addHospitalVO = new AddHospitalVO();
+                BeanUtils.copyProperties(addHospitalVO,updateHospitalVO);
+                addHospitalVO.setAddHospitalUserVO(updateHospitalVO.getAddHospitalUserVO());
+                addHospitalVO.setSoftwares(updateHospitalVO.getSoftwares());
+                return saveUser(updateHospitalVO.getId(),addHospitalVO);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * @Description禁用启用组织
+     * @param hospitalId
+     * @param status
+     * @Return boolean
+     */
+    public boolean disableHospital(Long hospitalId, String status) {
+        return hospitalFacade.update(new UpdateWrapper<Hospital>().set("status",status).eq("id",hospitalId));
+    }
+
+    /**
+     * @Description通过组织id获取该组织及用户详情
+     * @param hospitalId
+     * @param local
+     * @Return com.lantone.common.dto.GetHospitalByIdDTO
+     */
+    public GetHospitalByIdDTO getHospitalById(Long hospitalId, Long local) {
+        GetHospitalByIdDTO getHospitalByIdDTO = new GetHospitalByIdDTO();
+        //1.获取医院详情
+        Hospital hospital = hospitalFacade.getById(hospitalId);
+        BeanUtils.copyProperties(hospital,getHospitalByIdDTO);
+        getHospitalByIdDTO.setParentName(hospitalFacade.getById(hospital.getParentId()).getName());
+        //2.获取该医院的管理用户详情
+        User user = userFacade.getById(hospitalUserFacade.getBaseMapper().getHospitalUserById(hospitalId));
+        GetHospitalUserDTO getHospitalUserDTO = new GetHospitalUserDTO();
+        BeanUtils.copyProperties(user,getHospitalUserDTO);
+        getHospitalByIdDTO.setGetHospitalUserDTO(getHospitalUserDTO);
+        //3.获取管理角色相关信息
+        getHospitalByIdDTO.setGetRoleDTO(roleManagementFacade.getRoleById(userRoleFacade.getBaseMapper()
+                    .getUserRoleById(user.getId())));
+        return getHospitalByIdDTO;
+    }
+
+    /**
+     * @Description组织管理列表页管理员下拉框筛选类型、病区查询
+     * @param
+     * @Return java.util.Map<java.lang.String,java.lang.Object>
+     */
+    public Map<String,Object> getManagerBoxInfo(Long local) {
+        Map<String,Object> outMap = new HashMap<>();
+        Map<Integer,String> hospitalTypeMap = new HashMap<>();
+        //1.获取当前用户的组织类型
+        int hospitalType = -1;
+        Hospital hospital = hospitalFacade.getById(local);//###当前登录用户的医院id
+        if (hospital != null) {
+            hospitalType = Integer.parseInt(hospital.getType());
+        }
+        //单家医院
+        if (HospitalTypeEnum.SINGLE_HOSPITAL.getKey() == hospitalType) {
+            //获取病区信息
+            List<DownBoxRegionDTO> downBoxRegions = new ArrayList<>();
+            regionFacade.list(new QueryWrapper<Region>()
+                    .eq("hospital_id",hospital.getId())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().forEach(region -> {
+                DownBoxRegionDTO downBoxRegionDTO = new DownBoxRegionDTO();
+                BeanUtils.copyProperties(region,downBoxRegionDTO);
+                downBoxRegions.add(downBoxRegionDTO);
+            });
+            outMap.put("所属病区",downBoxRegions);
+        }else if (HospitalTypeEnum.AI_PLATFORM.getKey()== hospitalType) {
+            hospitalTypeMap.put(HospitalTypeEnum.GROUP_HOSPITAL.getKey(),HospitalTypeEnum.GROUP_HOSPITAL.getName());
+            hospitalTypeMap.put(HospitalTypeEnum.SINGLE_HOSPITAL.getKey(),HospitalTypeEnum.SINGLE_HOSPITAL.getName());
+            hospitalTypeMap.put(HospitalTypeEnum.COMMON_HOSPITAL.getKey(),HospitalTypeEnum.COMMON_HOSPITAL.getName());
+            hospitalTypeMap.put(HospitalTypeEnum.UNION_HOSPITAL.getKey(),HospitalTypeEnum.UNION_HOSPITAL.getName());
+            outMap.put("类型",hospitalTypeMap);
+        }
+        else if (HospitalTypeEnum.GROUP_HOSPITAL.getKey()== hospitalType) {
+            hospitalTypeMap.put(HospitalTypeEnum.GROUP_HOSPITAL.getKey(),HospitalTypeEnum.GROUP_HOSPITAL.getName());
+            hospitalTypeMap.put(HospitalTypeEnum.SINGLE_HOSPITAL.getKey(),HospitalTypeEnum.SINGLE_HOSPITAL.getName());
+            outMap.put("类型",hospitalTypeMap);
+        }
+        else if (HospitalTypeEnum.COMMON_HOSPITAL.getKey()== hospitalType) {
+            hospitalTypeMap.put(HospitalTypeEnum.SINGLE_HOSPITAL.getKey(),HospitalTypeEnum.SINGLE_HOSPITAL.getName());
+            hospitalTypeMap.put(HospitalTypeEnum.COMMON_HOSPITAL.getKey(),HospitalTypeEnum.COMMON_HOSPITAL.getName());
+            outMap.put("类型",hospitalTypeMap);
+        }
+        else if (HospitalTypeEnum.UNION_HOSPITAL.getKey()== hospitalType) {
+            hospitalTypeMap.put(HospitalTypeEnum.SINGLE_HOSPITAL.getKey(),HospitalTypeEnum.SINGLE_HOSPITAL.getName());
+            hospitalTypeMap.put(HospitalTypeEnum.UNION_HOSPITAL.getKey(),HospitalTypeEnum.UNION_HOSPITAL.getName());
+            outMap.put("类型",hospitalTypeMap);
+        }
+        return outMap;
+    }
+
 }

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

@@ -2,6 +2,7 @@ package com.lantone.security.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.dto.GetCreateRoleDTO;
 import com.lantone.common.dto.GetRoleDTO;
 import com.lantone.common.dto.GetRolePageDTO;
@@ -103,12 +104,8 @@ public class RoleManagementFacade {
         BeanUtils.copyProperties(addRoleVO, role);
         role.setGmtCreate(DateUtil.now());
         if (roleFacade.save(role)) {
-            Long roleId = roleFacade.list(new QueryWrapper<Role>()
-                    .eq("hospital_id", role.getHospitalId())
-                    .eq("name", role.getName())
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())).get(0).getId();
             //2.插入角色与系统菜单的对应关系以及角色与功能权限的对应关系sys_role_software_menu,sys_role_software_resource
-            return saveRoleSoftwareMenu(addRoleVO.getSoftwares(), roleId);
+            return saveRoleSoftwareMenu(addRoleVO.getSoftwares(), role.getId());
         } else {
             Asserts.fail("角色插入失败");
         }
@@ -199,7 +196,7 @@ public class RoleManagementFacade {
      * @Description获取角色列表
      * @Return java.util.List<com.lantone.common.dto.RoleDTO>
      */
-    public List<GetRolePageDTO> getRolePage(GetRolePageVO getRolePageVO) {
+    public IPage<GetRolePageDTO> getRolePage(GetRolePageVO getRolePageVO) {
         //1.获取当前登录人id和组织id
         getRolePageVO.setCreator("0");//###当前登录人
         getRolePageVO.setHospitalId(2l);//###当前登录人的组织

+ 32 - 25
security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java

@@ -2,6 +2,7 @@ package com.lantone.security.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.api.CommonResult;
 import com.lantone.common.constant.AuthConstant;
 import com.lantone.common.domain.UserDto;
@@ -11,6 +12,10 @@ import com.lantone.common.dto.GetHospitalTreeDTO;
 import com.lantone.common.dto.GetUserDTO;
 import com.lantone.common.enums.IsDeleteEnum;
 import com.lantone.common.enums.StatusEnum;
+import com.lantone.common.dto.GetUserPageDTO;
+import com.lantone.common.dto.HospitalDTO;
+import com.lantone.common.dto.UserMenuResourceTreeDTO;
+import com.lantone.common.dto.UserRoleDTO;
 import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.DateUtil;
 import com.lantone.common.util.EntityUtil;
@@ -18,6 +23,7 @@ import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.StringUtil;
 import com.lantone.common.vo.AddHospitalTreeVO;
 import com.lantone.common.vo.AddUserVO;
+import com.lantone.common.vo.GetUserPageVO;
 import com.lantone.common.vo.LoginVO;
 import com.lantone.common.vo.UpdateUserVO;
 import com.lantone.dblayermbg.entity.DeptUser;
@@ -125,11 +131,14 @@ public class UserManagementFacade {
         User user = new User();
         BeanUtils.copyProperties(addUserVO, user);
         user.setGmtCreate(DateUtil.now());
-        if (userFacade.save(user)) {
-            Long userId = userFacade.list(new QueryWrapper<User>().eq("username", user.getUsername())).get(0).getId();
-            //2.插入用户所属组织
-            return saveUserHospital(addUserVO.getAddHospitalTreeVO(), userId, addUserVO.getRoles());
-        } else {
+        try{
+            if (userFacade.save(user)) {
+                //2.插入用户所属组织
+                return saveUserHospital(addUserVO.getAddHospitalTreeVO(), user.getId(), addUserVO.getRoles());
+            } else {
+                Asserts.fail("用户添加失败");
+            }
+        }catch (Exception e){
             Asserts.fail("用户添加失败");
         }
         return false;
@@ -154,7 +163,7 @@ public class UserManagementFacade {
                     hospitalUser.setHospitalId(hospitalId);
                     hospitalUserFacade.save(hospitalUser);
                 });
-                //插入用户和科室的关系
+                //插入用户和科室的关系(没有科室信息默认为全院)
                 if (ListUtil.isNotEmpty(addHospitalTreeVO.getDepts())) {
                     addHospitalTreeVO.getDepts().stream().forEach(deptID -> {
                         DeptUser userDept = new DeptUser();
@@ -162,11 +171,9 @@ public class UserManagementFacade {
                         userDept.setUserId(userId);
                         userDeptFacade.save(userDept);
                     });
-                    //插入用户和角色的关系
-                    return saveUserRole(userId, roles);
-                } else {
-                    Asserts.fail("添加用户的科室为空");
                 }
+                //插入用户和角色的关系
+                return saveUserRole(userId, roles);
             } else {
                 Asserts.fail("用户所属组织为空");
             }
@@ -217,7 +224,7 @@ public class UserManagementFacade {
         List<GetHospitalTreeDTO> outTree = new ArrayList<>();
         //1.获取当前用户的组织类型
         int hospitalType = -1;
-        Hospital hospital = getLocalHospital(1l);//###当前登录用户的医院id
+        Hospital hospital = hospitalFacade.getById(1l);//###当前登录用户的医院id
         if (hospital != null) {
             hospitalType = Integer.parseInt(hospital.getType());
         }
@@ -268,25 +275,14 @@ public class UserManagementFacade {
      */
     private List<GetHospitalTreeDTO> getSonHospital(GetHospitalTreeDTO getHospitalTreeDTO) {
         if (getHospitalTreeDTO.getHospitalId() != null) {
-            List<GetHospitalTreeDTO> sonHospitals = hospitalFacade.getBaseMapper().getHospitalTreeInfo(getHospitalTreeDTO.getHospitalId());
+            List<GetHospitalTreeDTO> sonHospitals = hospitalFacade.getBaseMapper()
+                    .getHospitalTreeInfo(getHospitalTreeDTO.getHospitalId(),getHospitalTreeDTO.getCreator());
             getHospitalTreeDTO.setHospitalDTOS(sonHospitals);
             return sonHospitals;
         }
         return null;
     }
 
-    private Hospital getLocalHospital(Long hospitalId) {
-        List<Hospital> hospitals = hospitalFacade.list(new QueryWrapper<Hospital>()
-                .eq("id", hospitalId)
-                .eq("is_deleted", IsDeleteEnum.N.getKey()));
-        if (ListUtil.isNotEmpty(hospitals)) {
-            return hospitals.get(0);
-        } else {
-            Asserts.fail("当前登录用户的医院信息不存在");
-        }
-        return null;
-    }
-
     /**
      * @param updateUserVO
      * @Description修改用户
@@ -383,7 +379,7 @@ public class UserManagementFacade {
         BeanUtils.copyProperties(userFacade.getById(userId), getUserDTO);
         //2.获取当前用户的组织类型
         int hospitalType = -1;
-        Hospital hospital = getLocalHospital(local);//###当前登录用户的医院id
+        Hospital hospital = hospitalFacade.getById(local);//###当前登录用户的医院id
         if (hospital != null) {
             hospitalType = Integer.parseInt(hospital.getType());
         }
@@ -482,4 +478,15 @@ public class UserManagementFacade {
         }
         return sonMenu;
     }
+    /**
+     * @Description获取登录用户的用户列表
+     * @param getUserPageVO
+     * @Return com.baomidou.mybatisplus.core.metadata.IPage<com.lantone.common.dto.GetUserPageDTO>
+     */
+    public IPage<GetUserPageDTO> getUserPage(GetUserPageVO getUserPageVO) {
+
+        getUserPageVO.setHospitalId(1l);//###获取当前登录用户的医院id
+        getUserPageVO.setLocalUserID(2l);//###查出的用户列表不能包含当前登录的管理用户
+        return hospitalUserFacade.getBaseMapper().getUserPage(getUserPageVO);
+    }
 }

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

@@ -1,21 +1,74 @@
 package com.lantone.security.web;
 
+
+import com.lantone.common.api.CommonResult;
+import com.lantone.common.dto.GetHospitalByIdDTO;
+import com.lantone.common.dto.GetHospitalTreeDTO;
+import com.lantone.common.vo.AddHospitalVO;
+import com.lantone.common.vo.UpdateHospitalVO;
 import com.lantone.security.facade.HospitalManagementFacade;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+import java.util.Map;
+
 /**
- * @Description: 组织管理API
- * @author: songxl
- * @time: 2021/7/20 12:39
+ * 组织管理API
  */
 @RestController
-@Api(value = "组织管理API", tags = { "组织管理API" })
+@Api(value = "组织管理API", tags = "HospitalManagementController")
 @RequestMapping("/hospitalManage")
 public class HospitalManagementController {
     @Autowired
     private HospitalManagementFacade hospitalManagementFacade;
+    @ApiOperation(value = "添加组织 [by:songxl]")
+    @PostMapping("/addHospital")
+    @Transactional
+    public CommonResult<Boolean> addHospital(@RequestBody @Valid AddHospitalVO addHospitalVO) {
+        return CommonResult.success(hospitalManagementFacade.addHospital(addHospitalVO));
+    }
+    @ApiOperation(value = "修改组织 [by:songxl]")
+    @PostMapping("/updateHospital")
+    @Transactional
+    public CommonResult<Boolean> updateHospital(@RequestBody @Valid UpdateHospitalVO updateHospitalVO) {
+        return CommonResult.success(hospitalManagementFacade.updateHospital(updateHospitalVO));
+    }
+
+    @ApiOperation(value = "删除组织 [by:songxl]")
+    @PostMapping("/deleteHospital")
+    @Transactional
+    public CommonResult<Boolean> deleteHospital(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId) {
+        return CommonResult.success(hospitalManagementFacade.deleteHospital(HospitalId));
+    }
+
+
+    @ApiOperation(value = "禁用|启用组织 [by:songxl]")
+    @PostMapping("/disableHospital")
+    @Transactional
+    public CommonResult<Boolean> disableHospital(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId, @RequestParam @Valid @NotBlank(message = "启用禁用status为空") String status) {
+        return CommonResult.success(hospitalManagementFacade.disableHospital(HospitalId,status));
+    }
+
+    @ApiOperation(value = "通过组织id获取该组织及用户详情 [by:songxl]")
+    @PostMapping("/getHospitalById")
+    public CommonResult<GetHospitalByIdDTO> getHospitalById(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId, Long local) {
+        return CommonResult.success(hospitalManagementFacade.getHospitalById(HospitalId,local));
+    }
 
-}
+    @ApiOperation(value = "组织管理列表页管理员下拉框筛选类型、病区查询 [by:songxl]")
+    @PostMapping("/getManagerBoxInfo")
+    public CommonResult<Map<String,Object>> getManagerBoxInfo(Long local) {
+        return CommonResult.success(hospitalManagementFacade.getManagerBoxInfo(local));
+    }
+}

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

@@ -1,5 +1,6 @@
 package com.lantone.security.web;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.api.CommonResult;
 import com.lantone.common.dto.GetCreateRoleDTO;
 import com.lantone.common.dto.GetRoleDTO;
@@ -40,7 +41,7 @@ public class RoleManagementController {
     @ApiOperation(value = "获取角色列表 [by:songxl]",
             notes = "")
     @PostMapping("/getRolePage")
-    public CommonResult<List<GetRolePageDTO>> getRolePage(@RequestBody @Valid GetRolePageVO getRolePageVO) {
+    public CommonResult<IPage<GetRolePageDTO>> getRolePage(@RequestBody @Valid GetRolePageVO getRolePageVO) {
         return CommonResult.success(roleManagementFacade.getRolePage(getRolePageVO));
     }
 

+ 8 - 5
security-center/src/main/java/com/lantone/security/web/UserManagementController.java

@@ -1,10 +1,13 @@
 package com.lantone.security.web;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.lantone.common.api.CommonResult;
 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.vo.AddUserVO;
+import com.lantone.common.vo.GetUserPageVO;
 import com.lantone.common.vo.LoginVO;
 import com.lantone.common.vo.UpdateUserVO;
 import com.lantone.security.facade.UserManagementFacade;
@@ -96,9 +99,9 @@ public class UserManagementController {
         return CommonResult.success(userManagementFacade.getLoginUserHospitalTree());
     }
 
-    //    @ApiOperation(value = "获取当前用户所在组织的用户列表 [by:songxl]")
-    //    @PostMapping("/getUserPage")
-    //    public CommonResult<List<GetHospitalTreeDTO>> getUserPage(GetUserPageVO getUserPageVO) {
-    //        return CommonResult.success(userAdminFacade.getLoginUserHospitalTree());
-    //    }
+    @ApiOperation(value = "获取当前用户所在组织的用户列表 [by:songxl]")
+    @PostMapping("/getUserPage")
+    public CommonResult<IPage<GetUserPageDTO>> getUserPage(GetUserPageVO getUserPageVO) {
+        return CommonResult.success(userManagementFacade.getUserPage(getUserPageVO));
+    }
 }