فهرست منبع

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

rengb 3 سال پیش
والد
کامیت
7ef2412e78
33فایلهای تغییر یافته به همراه390 افزوده شده و 326 حذف شده
  1. 7 27
      common/src/main/java/com/lantone/common/dto/DataAuthDetailDTO.java
  2. 3 6
      common/src/main/java/com/lantone/common/dto/GetDataAuthByIdDTO.java
  3. 21 0
      common/src/main/java/com/lantone/common/dto/GetDataAuthDeptDTO.java
  4. 25 0
      common/src/main/java/com/lantone/common/dto/GetDataAuthDoctorDTO.java
  5. 20 0
      common/src/main/java/com/lantone/common/dto/GetDataAuthHospitalDTO.java
  6. 24 0
      common/src/main/java/com/lantone/common/dto/GetDataAuthRoleDTO.java
  7. 28 0
      common/src/main/java/com/lantone/common/dto/GetDataAuthSoftwareDTO.java
  8. 1 3
      common/src/main/java/com/lantone/common/dto/RoleDTO.java
  9. 20 0
      common/src/main/java/com/lantone/common/dto/SoftwareDataAuthDetail.java
  10. 0 43
      common/src/main/java/com/lantone/common/dto/SoftwareRoleDataAuthDetailDTO.java
  11. 0 43
      common/src/main/java/com/lantone/common/dto/SysServiceDTO.java
  12. 1 1
      common/src/main/java/com/lantone/common/vo/AddAuthSoftwareVO.java
  13. 1 1
      common/src/main/java/com/lantone/common/vo/DataAuthDetailVO.java
  14. 5 3
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/DataAuthMapper.java
  15. 6 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/DeptMapper.java
  16. 5 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/HospitalMapper.java
  17. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleMapper.java
  18. 5 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleSoftwareDataAuthMapper.java
  19. 5 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/SoftwareDataAuthMapper.java
  20. 10 5
      dblayer-mbg/src/main/resources/mapper/DataAuthMapper.xml
  21. 43 0
      dblayer-mbg/src/main/resources/mapper/DeptMapper.xml
  22. 17 0
      dblayer-mbg/src/main/resources/mapper/HospitalMapper.xml
  23. 0 0
      dblayer-mbg/src/main/resources/mapper/HospitalUserMapper.xml
  24. 15 6
      dblayer-mbg/src/main/resources/mapper/RoleMapper.xml
  25. 14 1
      dblayer-mbg/src/main/resources/mapper/RoleSoftwareDataAuthMapper.xml
  26. 14 1
      dblayer-mbg/src/main/resources/mapper/SoftwareDataAuthMapper.xml
  27. 1 0
      security-center/src/main/java/com/lantone/security/enums/DictionaryEnum.java
  28. 66 169
      security-center/src/main/java/com/lantone/security/facade/DataAuthManagementFacade.java
  29. 1 1
      security-center/src/main/java/com/lantone/security/facade/FuncManagementFacade.java
  30. 2 0
      security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java
  31. 2 3
      security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java
  32. 23 9
      security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java
  33. 4 3
      security-center/src/main/java/com/lantone/security/web/RoleManagementController.java

+ 7 - 27
common/src/main/java/com/lantone/common/dto/DataAuthDetailDTO.java

@@ -5,6 +5,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Description:
@@ -14,31 +15,10 @@ import java.util.Date;
 @Data
 public class DataAuthDetailDTO implements Serializable {
     private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "编号")
-    private Long id;
-
-    @ApiModelProperty(value = "数据权限编号")
-    private Long serviceDataAuthId;
-
-    @ApiModelProperty(value = "数据范围类型::1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义")
-    private Integer dataType;
-
-    @ApiModelProperty(value = "detail_id的类型 1:detail_id为医院id 2:为科室id3:为医生id")
-    private Integer detailType;
-
-    @ApiModelProperty(value = "医院、科室、医生id")
-    private Long detailId;
-
-    @ApiModelProperty(value = "创建用户编号")
-    private Long creator;
-
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "是否删除,N:未删除,Y:删除")
-    private String isDeleted;
-
-    @ApiModelProperty(value = "可看组织")
-    private HospitalDTO hospitalDTOS;
+    @ApiModelProperty(value = "选中的医院")
+    private List<GetDataAuthHospitalDTO> hospitals;
+    @ApiModelProperty(value = "选中的科室")
+    private List<GetDataAuthDeptDTO> depts;
+    @ApiModelProperty(value = "选中的医生")
+    private List<GetDataAuthDoctorDTO> doctors;
 }

+ 3 - 6
common/src/main/java/com/lantone/common/dto/GetDataAuthByIdDTO.java

@@ -17,7 +17,7 @@ import java.util.List;
 public class GetDataAuthByIdDTO implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(value = "编号")
+    @ApiModelProperty(value = "数据权限编号")
     private Long id;
 
     @ApiModelProperty(value = "数据权限名称")
@@ -26,11 +26,8 @@ public class GetDataAuthByIdDTO implements Serializable {
     @ApiModelProperty(value = "状态 0:禁用,1:启用")
     private String status;
 
-    /**
-     * 系统列表
-     */
-    private List<SysServiceDTO> sysServiceDTOS;
-
+    @ApiModelProperty(value = "数据权限对应的系统列表")
+    private List<GetDataAuthSoftwareDTO> softwares;
 
 
 }

+ 21 - 0
common/src/main/java/com/lantone/common/dto/GetDataAuthDeptDTO.java

@@ -0,0 +1,21 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description:数据权限选择的科室详情
+ * @Author songxl
+ * @Date 2021/8/20
+ */
+@Data
+public class GetDataAuthDeptDTO {
+    @ApiModelProperty(value = "医院id")
+    private Long hospitalId;
+    @ApiModelProperty(value = "科室id")
+    private Long id;
+    @ApiModelProperty(value = "科室名称")
+    private String name;
+    @ApiModelProperty(value = "选择数据权限的类型 1:为医院  2:科室 3:为医生")
+    private Integer detailType;
+}

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

@@ -0,0 +1,25 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description:数据权限选择的医生详情
+ * @Author songxl
+ * @Date 2021/8/20
+ */
+@Data
+public class GetDataAuthDoctorDTO {
+    @ApiModelProperty(value = "医院id")
+    private Long hospitalId;
+    @ApiModelProperty(value = "医生id")
+    private Long id;
+    @ApiModelProperty(value = "医生名称")
+    private String name;
+    @ApiModelProperty(value = "科室id")
+    private Long deptId;
+    @ApiModelProperty(value = "科室名称")
+    private String deptName;
+    @ApiModelProperty(value = "选择数据权限的类型 1:为医院  2:科室 3:为医生")
+    private Integer detailType;
+}

+ 20 - 0
common/src/main/java/com/lantone/common/dto/GetDataAuthHospitalDTO.java

@@ -0,0 +1,20 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description:数据权限选择的医院详情
+ * @Author songxl
+ * @Date 2021/8/20
+ */
+@Data
+public class GetDataAuthHospitalDTO {
+
+    @ApiModelProperty(value = "医院id")
+    private Long id;
+    @ApiModelProperty(value = "医院名称")
+    private String name;
+    @ApiModelProperty(value = "选择数据权限的类型 1:为医院  2:科室 3:为医生")
+    private Integer detailType;
+}

+ 24 - 0
common/src/main/java/com/lantone/common/dto/GetDataAuthRoleDTO.java

@@ -0,0 +1,24 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: 角色输出对象
+ * @Author songxl
+ * @Date 2021/7/22
+ */
+@Data
+public class GetDataAuthRoleDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "角色编号")
+    private Long id;
+
+    @ApiModelProperty(value = "角色名称")
+    private String name;
+}

+ 28 - 0
common/src/main/java/com/lantone/common/dto/GetDataAuthSoftwareDTO.java

@@ -0,0 +1,28 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: 系统服务对象
+ * @Author songxl
+ * @Date 2021/7/21
+ */
+@Data
+public class GetDataAuthSoftwareDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "服务编号")
+    private Long id;
+    @ApiModelProperty(value = "服务名称")
+    private String name;
+    @ApiModelProperty(value = "数据范围类型::1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义")
+    private Integer dataType;
+    @ApiModelProperty(value = "数据权限详情列表")
+    private DataAuthDetailDTO dataAuthDetail;
+    @ApiModelProperty(value = "角色列表")
+    private List<GetDataAuthRoleDTO> roles;
+}

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

@@ -8,17 +8,15 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * @ClassName: RoleDTO
  * @Description: 角色输出对象
  * @Author songxl
  * @Date 2021/7/22
- * @Version 1.0
  */
 @Data
 public class RoleDTO implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(value = "编号")
+    @ApiModelProperty(value = "角色编号")
     private Long id;
 
     @ApiModelProperty(value = "角色名称")

+ 20 - 0
common/src/main/java/com/lantone/common/dto/SoftwareDataAuthDetail.java

@@ -0,0 +1,20 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description: 服务数据权限明细关联对象
+ * @Author songxl
+ * @Date 2021/7/22
+ */
+@Data
+public class SoftwareDataAuthDetail {
+    @ApiModelProperty(value = "数据范围类型::1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义")
+    private Integer dataType;
+    @ApiModelProperty(value = "detail_id的类型 1:detail_id为医院id 2:为科室id3:为医生id")
+    private Integer detailType;
+    @ApiModelProperty(value = "医院、科室、医生id")
+    private Long detailId;
+
+}

+ 0 - 43
common/src/main/java/com/lantone/common/dto/SoftwareRoleDataAuthDetailDTO.java

@@ -1,43 +0,0 @@
-package com.lantone.common.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @ClassName: SoftwareRoleDataAuthDetailDTO
- * @Description: 服务、角色、数据权限明细关联对象
- * @Author songxl
- * @Date 2021/7/22
- * @Version 1.0
- */
-@Data
-public class SoftwareRoleDataAuthDetailDTO {
-    @ApiModelProperty(value = "服务、角色、数据权限关联id")
-    private Long softwareRoleDataAuthDetailId;
-    @ApiModelProperty(value = "系统数据权限id")
-    private Long softwareDataAuthId;
-    @ApiModelProperty(value = "数据权限详情id")
-    private Long detail;
-    @ApiModelProperty(value = "数据权限id")
-    private Long dataAuthId;
-    @ApiModelProperty(value = "数据权限名称")
-    private String dataAuthName;
-    @ApiModelProperty(value = "数据权限启用禁用状态")
-    private String status;
-    @ApiModelProperty(value = "数据范围类型::1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义")
-    private Integer dataType;
-    @ApiModelProperty(value = "detail_id的类型 1:detail_id为医院id 2:为科室id3:为医生id")
-    private Integer detailType;
-    @ApiModelProperty(value = "医院、科室、医生id")
-    private Long detailId;
-    @ApiModelProperty(value = "系统id")
-    private Long softwareId;
-
-    @ApiModelProperty(value = "系统名称")
-    private String softwareName;
-    @ApiModelProperty(value = "角色id")
-    private Long roleId;
-    @ApiModelProperty(value = "角色名称")
-    private String roleName;
-
-}

+ 0 - 43
common/src/main/java/com/lantone/common/dto/SysServiceDTO.java

@@ -1,43 +0,0 @@
-package com.lantone.common.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @Description: 系统服务对象
- * @Author songxl
- * @Date 2021/7/21
- */
-@Data
-public class SysServiceDTO implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "编号")
-    private Long id;
-
-    @ApiModelProperty(value = "服务名称")
-    private String name;
-
-    @ApiModelProperty(value = "备注")
-    private String remark;
-
-    @ApiModelProperty(value = "创建用户编号")
-    private Long creator;
-
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "排序")
-    private String orderNo;
-
-    @ApiModelProperty(value = "是否删除,N:未删除,Y:删除")
-    private String isDeleted;
-    @ApiModelProperty(value = "数据权限详情列表")
-    private List<DataAuthDetailDTO> dataAuthDetailDTOS;
-    @ApiModelProperty(value = "角色列表")
-    private List<RoleDTO> roles;
-}

+ 1 - 1
common/src/main/java/com/lantone/common/vo/AddAuthSoftwareVO.java

@@ -23,5 +23,5 @@ public class AddAuthSoftwareVO implements Serializable {
     @ApiModelProperty(value = "数据权限详情列表",required = true)
     @Valid
     @NotNull(message = "数据权限详情列表为空")
-    private DataAuthDetailVO dataAuthDetail;
+    private List<DataAuthDetailVO> dataAuthDetails;
 }

+ 1 - 1
common/src/main/java/com/lantone/common/vo/DataAuthDetailVO.java

@@ -28,6 +28,6 @@ public class DataAuthDetailVO implements Serializable {
     private Integer detailType;
 
     @ApiModelProperty(value = "医院、科室、医生id 列表")
-    private List<Long> detailIds;
+    private Long detailId;
 
 }

+ 5 - 3
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/DataAuthMapper.java

@@ -3,7 +3,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.GetDataAuthPageDTO;
-import com.lantone.common.dto.SoftwareRoleDataAuthDetailDTO;
+import com.lantone.common.dto.SoftwareDataAuthDetail;
 import com.lantone.common.vo.GetDataAuthPageVO;
 import com.lantone.dblayermbg.entity.DataAuth;
 import org.apache.ibatis.annotations.Param;
@@ -22,7 +22,7 @@ public interface DataAuthMapper extends BaseMapper<DataAuth> {
      * @Description通过数据权限id和角色id获取数据权限
      * @Return java.util.List<com.lantone.common.dto.SoftwareRoleDataAuthDetailDTO>
      */
-    List<SoftwareRoleDataAuthDetailDTO> getDataAuthById(@Param("Id") Long Id);
+    List<SoftwareDataAuthDetail> getDataAuthById(@Param("Id") Long Id);
 
     /**
      * @param softwareID
@@ -30,7 +30,7 @@ public interface DataAuthMapper extends BaseMapper<DataAuth> {
      * @Description获取数据权限详情
      * @Return java.util.List<com.lantone.common.dto.SoftwareRoleDataAuthDetailDTO>
      */
-    List<SoftwareRoleDataAuthDetailDTO> getOneSoftwareRoleDataAuthDetail(@Param("softwareID") Long softwareID, @Param("dataDetailID") Long dataDetailID);
+    List<SoftwareDataAuthDetail> getOneSoftwareRoleDataAuthDetail(@Param("softwareID") Long softwareID, @Param("dataDetailID") Long dataDetailID);
 
 
     /**
@@ -39,4 +39,6 @@ public interface DataAuthMapper extends BaseMapper<DataAuth> {
      * @Return com.baomidou.mybatisplus.core.metadata.IPage<com.lantone.common.dto.GetDataAuthPageDTO>
      */
     IPage<GetDataAuthPageDTO> getDataAuthPage(@Param("dataAuthVO") GetDataAuthPageVO getDataAuthPageVO);
+
+
 }

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

@@ -1,6 +1,8 @@
 package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.common.dto.GetDataAuthDeptDTO;
+import com.lantone.common.dto.GetDataAuthDoctorDTO;
 import com.lantone.common.dto.GetDeptInfoDTO;
 import com.lantone.common.dto.GetDeptTreeDTO;
 import com.lantone.common.vo.GetHospitalListInfoVO;
@@ -19,4 +21,8 @@ public interface DeptMapper extends BaseMapper<Dept> {
     List<GetDeptTreeDTO> getDeptInfo(@Param("hospitalId") long hospitalId);
 
     List<GetDeptInfoDTO> getDeptRegion(@Param("getHospitalListInfoVO") GetHospitalListInfoVO getHospitalListInfoVO);
+
+    List<GetDataAuthDeptDTO> getDepts(@Param("deptIds")List<Long> ids);
+
+    List<GetDataAuthDoctorDTO> getDoctors(@Param("doctorIds")List<Long> ids);
 }

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

@@ -1,6 +1,8 @@
 package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.common.dto.GetDataAuthDeptDTO;
+import com.lantone.common.dto.GetDataAuthHospitalDTO;
 import com.lantone.common.dto.GetHospitalListInfoDTO;
 import com.lantone.common.dto.GetHospitalTreeDTO;
 import com.lantone.common.vo.GetHospitalListInfoVO;
@@ -19,4 +21,7 @@ public interface HospitalMapper extends BaseMapper<Hospital> {
     List<GetHospitalTreeDTO> getHospitalTreeInfo(@Param("hospitalId") long hospitalId,@Param("status")String status);
 
     List<GetHospitalListInfoDTO> getHospitalById(@Param("getHospitalListInfoVO") GetHospitalListInfoVO getHospitalListInfoVO);
+
+    List<GetDataAuthHospitalDTO> getHospitals(@Param("hospitalIds") List<Long> hospitalIds);
+
 }

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

@@ -24,5 +24,5 @@ public interface RoleMapper extends BaseMapper<Role> {
      */
     IPage<GetRolePageDTO> getRolePage(@Param("getRolePageVO") GetRolePageVO getRolePageVO);
 
-    List<GetCreateRoleDTO> getCreateRoles(@Param("hospitalId") long hospitalId);
+    List<GetCreateRoleDTO> getCreateRoles(@Param("creator") Long creator,@Param("softwareId") Long softwareId);
 }

+ 5 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleSoftwareDataAuthMapper.java

@@ -1,7 +1,11 @@
 package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.common.dto.GetDataAuthRoleDTO;
 import com.lantone.dblayermbg.entity.RoleSoftwareDataAuth;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -10,4 +14,5 @@ import com.lantone.dblayermbg.entity.RoleSoftwareDataAuth;
  */
 public interface RoleSoftwareDataAuthMapper extends BaseMapper<RoleSoftwareDataAuth> {
 
+    List<GetDataAuthRoleDTO> getRole(@Param("Id") Long id);
 }

+ 5 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/SoftwareDataAuthMapper.java

@@ -1,7 +1,11 @@
 package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.lantone.common.dto.SoftwareDataAuthDetail;
 import com.lantone.dblayermbg.entity.SoftwareDataAuth;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -10,4 +14,5 @@ import com.lantone.dblayermbg.entity.SoftwareDataAuth;
  */
 public interface SoftwareDataAuthMapper extends BaseMapper<SoftwareDataAuth> {
 
+    List<SoftwareDataAuthDetail> getDataAuthDetail(@Param("Id") Long id);
 }

+ 10 - 5
dblayer-mbg/src/main/resources/mapper/DataAuthMapper.xml

@@ -1,8 +1,8 @@
 <?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.DataAuthMapper">
-    <select id="getDataAuthById" resultType="com.lantone.common.dto.SoftwareRoleDataAuthDetailDTO">
-        SELECT
+    <select id="getDataAuthById" resultType="com.lantone.common.dto.SoftwareDataAuthDetail">
+        SELECT DISTINCT
         rsd.id softwareRoleDataAuthDetailId,
         sd.id softwareDataAuthId,
         sd.software_id softwareId,
@@ -10,14 +10,19 @@
         r.id roleId,
         r.`name` roleName,
         sd.data_auth_id dataAuthId,
-        d.name dataAuthName,
-        d.`status`
+        d. NAME dataAuthName,
+        d.`status`,
+        detail.id detail,
+        detail.data_type dataType,
+        detail.detail_type detailType,
+        detail.detail_id detailId
         FROM
         sys_role r,
         sys_software s,
         sys_role_software_data_auth rsd,
         sys_data_auth d,
         sys_software_data_auth sd
+        LEFT JOIN sys_data_auth_detail detail ON sd.id = detail.software_data_auth_id
         WHERE
         r.id = rsd.role_id
         AND r.`status` = '1'
@@ -36,7 +41,7 @@
     </select>
 
 
-    <select id="getOneSoftwareRoleDataAuthDetail" resultType="com.lantone.common.dto.SoftwareRoleDataAuthDetailDTO">
+    <select id="getOneSoftwareRoleDataAuthDetail" resultType="com.lantone.common.dto.SoftwareDataAuthDetail">
         SELECT DISTINCT
         detail.id detail,
         detail.data_type dataType,

+ 43 - 0
dblayer-mbg/src/main/resources/mapper/DeptMapper.xml

@@ -41,4 +41,47 @@
             AND r.id = #{getHospitalListInfoVO.regionId}
         </if>
     </select>
+    <select id="getDepts" resultType="com.lantone.common.dto.GetDataAuthDeptDTO">
+        SELECT
+            d.id,
+          d.hospital_id hospitalId,
+            d.`name`,
+            2 detailType
+        FROM
+            sys_dept d
+        WHERE
+            d.is_deleted = 'N'
+        AND d.`status` = 1
+        <if test="deptIds !=null and deptIds.size!=0">
+            AND d.id IN
+            <foreach collection="deptIds" item="id" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+    </select>
+    <select id="getDoctors" resultType="com.lantone.common.dto.GetDataAuthDoctorDTO">
+        SELECT
+            doctor.id,
+            doctor.`name`,
+            d.id deptId,
+            d.`name` deptName,
+            d.hospital_id hospitalId,
+            3 detailType
+        FROM
+            sys_doctor doctor,
+            sys_dept_doctor dd,
+            sys_dept d
+        WHERE
+            doctor.is_deleted = 'N'
+        AND dd.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND doctor.id = dd.doctor_id
+        AND dd.dept_id = d.id
+        <if test="doctorIds !=null and doctorIds.size!=0">
+            AND doctor.id IN
+            <foreach collection="doctorIds" item="id" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+    </select>
 </mapper>

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

@@ -63,4 +63,21 @@
 
 
     </select>
+    <select id="getHospitals" resultType="com.lantone.common.dto.GetDataAuthHospitalDTO">
+        SELECT
+            h.id,
+            h.`name`,
+            1 detailType
+        FROM
+            sys_hospital h
+        WHERE
+            h.is_deleted = 'N'
+        AND h.`status` = 1
+        <if test="hospitalIds !=null and hospitalIds.size!=0">
+            AND h.id IN
+            <foreach collection="hospitalIds" item="id" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+    </select>
 </mapper>

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

@@ -26,7 +26,6 @@
         AND u.id = hu.user_id
         AND h.id = hu.hospital_id
         AND u.remark != 'Administrators'
         <if test="getUserPageVO.localUserID !=null ">
             AND u.creator = #{getUserPageVO.localUserID}
         </if>

+ 15 - 6
dblayer-mbg/src/main/resources/mapper/RoleMapper.xml

@@ -13,10 +13,8 @@
             sys_role r
         WHERE
             r.is_deleted = 'N'
-
         AND r.remark != 'ManagementRole'
-        AND AND r.creator = #{getRolePageVO.creator}
+        AND r.creator = #{getRolePageVO.creator}
         <if test="getRolePageVO.name!=null and getRolePageVO.name!=''">
             AND r.`name` LIKE concat('%',#{getRolePageVO.name},'%')
         </if>
@@ -25,15 +23,24 @@
         </if>
     </select>
     <select id="getCreateRoles" resultType="com.lantone.common.dto.GetCreateRoleDTO">
-        SELECT
+        SELECT DISTINCT
             r.id,
-            r.name
+            r.`name`
         FROM
-            sys_role r
+            sys_role r,
+            sys_role_software_menu rsm,
+         sys_software_menu sm
         WHERE
             r.is_deleted = 'N'
+        AND rsm.is_deleted = 'N'
+        AND sm.is_deleted = 'N'
         AND r.`status` = '1'
-        AND r.hospital_id = #{hospitalId}
+        AND rsm.role_id = r.id
+        AND rsm.software_menu_id = sm.id
+        <if test="softwareId!=null">
+            AND sm.software_id = #{softwareId}
+        </if>
+        AND r.creator = #{creator}
+        AND r.remark != 'ManagementRole'
     </select>
 </mapper>

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

@@ -1,5 +1,18 @@
 <?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.RoleSoftwareDataAuthMapper">
-
+    <select id="getRole" resultType="com.lantone.common.dto.GetDataAuthRoleDTO">
+        SELECT
+            r.id,
+            r.`name`
+        FROM
+            sys_role r,
+            sys_role_software_data_auth rsd
+        WHERE
+        r.`status` = '1'
+        AND r.is_deleted = 'N'
+        AND rsd.is_deleted = 'N'
+        AND r.id = rsd.role_id
+        AND rsd.software_data_auth_id = #{Id}
+    </select>
 </mapper>

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

@@ -1,5 +1,18 @@
 <?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.SoftwareDataAuthMapper">
-
+    <select id="getDataAuthDetail" resultType="com.lantone.common.dto.SoftwareDataAuthDetail">
+        SELECT
+            d.data_type dataType,
+            d.detail_type detailType,
+            d.detail_id detailId
+        FROM
+            sys_data_auth_detail d,
+            sys_software_data_auth sd
+        WHERE
+            d.is_deleted = 'N'
+        AND sd.is_deleted = 'N'
+        AND d.software_data_auth_id = sd.id
+        AND d.software_data_auth_id = #{Id}
+    </select>
 </mapper>

+ 1 - 0
security-center/src/main/java/com/lantone/security/enums/DictionaryEnum.java

@@ -15,6 +15,7 @@ public enum DictionaryEnum implements KeyedNamed {
     REGION(45, "病区"),
     MANAGE_HIDE_MENU(46, "管理隐藏功能菜单"),
     STATUS(47, "启用禁用"),
+    DATA_AUTH(48, "数据权限"),
     NOT_SHOW_MENU(41,"不显示菜单");
 
     @Setter

+ 66 - 169
security-center/src/main/java/com/lantone/security/facade/DataAuthManagementFacade.java

@@ -7,13 +7,14 @@ import com.lantone.common.dto.DataAuthDetailDTO;
 import com.lantone.common.dto.DeptDTO;
 import com.lantone.common.dto.GetDataAuthByIdDTO;
 import com.lantone.common.dto.GetDataAuthPageDTO;
+import com.lantone.common.dto.GetDataAuthRoleDTO;
+import com.lantone.common.dto.GetDataAuthSoftwareDTO;
 import com.lantone.common.dto.GetDoctorPageDTO;
 import com.lantone.common.dto.HospitalDTO;
-import com.lantone.common.dto.RoleDTO;
-import com.lantone.common.dto.SoftwareRoleDataAuthDetailDTO;
-import com.lantone.common.dto.SysServiceDTO;
+import com.lantone.common.dto.SoftwareDataAuthDetail;
 import com.lantone.common.exception.Asserts;
 import com.lantone.common.util.DateUtil;
+import com.lantone.common.util.EntityUtil;
 import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.SysUserUtils;
 import com.lantone.common.vo.AddAuthSoftwareVO;
@@ -25,8 +26,6 @@ import com.lantone.dblayermbg.entity.DataAuth;
 import com.lantone.dblayermbg.entity.DataAuthDetail;
 import com.lantone.dblayermbg.entity.Dept;
 import com.lantone.dblayermbg.entity.Hospital;
-import com.lantone.dblayermbg.entity.HospitalUser;
-import com.lantone.dblayermbg.entity.Menu;
 import com.lantone.dblayermbg.entity.RoleSoftwareDataAuth;
 import com.lantone.dblayermbg.entity.SoftwareDataAuth;
 import com.lantone.dblayermbg.facade.DataAuthDetailFacade;
@@ -50,7 +49,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -191,7 +189,7 @@ public class DataAuthManagementFacade {
         DataAuth dataAuth = new DataAuth();
         BeanUtils.copyProperties(addAuthVO.getAddDataAuthVO(), dataAuth);
         dataAuth.setGmtCreate(DateUtil.now());
-        dataAuth.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
+        dataAuth.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
         if (dataAuthFacade.save(dataAuth)) {
             //2.插入新建数据权限与系统的关系 sys_software_data_auth
             return saveServiceDataAuth(addAuthVO.getAddDataAuthVO().getSoftwareVOS(), addAuthVO.getRoles(), dataAuth.getId());
@@ -211,12 +209,12 @@ public class DataAuthManagementFacade {
      */
     private boolean saveServiceDataAuth(List<AddAuthSoftwareVO> softwareVOS, List<Long> roles, Long dataAuthId) {
         AtomicBoolean out = new AtomicBoolean(false);
-        softwareVOS.stream().forEach(softwareVO->{
+        softwareVOS.stream().forEach(softwareVO -> {
             SoftwareDataAuth softwareDataAuth = new SoftwareDataAuth();
             softwareDataAuth.setSoftwareId(softwareVO.getId());
             softwareDataAuth.setDataAuthId(dataAuthId);
             softwareDataAuth.setGmtCreate(DateUtil.now());
-            softwareDataAuth.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
+            softwareDataAuth.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
             if (softwareDataAuthFacade.save(softwareDataAuth)) {
                 //2.插入数据权限系统关联表与角色管理sys_role_service_data_auth
                 List<RoleSoftwareDataAuth> roleSoftwareDataAuths = new ArrayList<>();
@@ -225,35 +223,26 @@ public class DataAuthManagementFacade {
                     roleServiceDataAuth.setRoleId(roleId);
                     roleServiceDataAuth.setSoftwareDataAuthId(softwareDataAuth.getId());
                     roleServiceDataAuth.setGmtCreate(DateUtil.now());
-                    roleServiceDataAuth.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
+                    roleServiceDataAuth.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
                     roleSoftwareDataAuths.add(roleServiceDataAuth);
                 }
                 if (new RoleSoftwareDataAuthServiceImpl().saveBatch(roleSoftwareDataAuths)) {
                     //3.插入数据权限详细信息。sys_data_auth_detail
                     //自定义时
                     List<DataAuthDetail> dataAuthDetails = new ArrayList<>();
-                    if (ListUtil.isNotEmpty(softwareVO.getDataAuthDetail().getDetailIds())
-                            && softwareVO.getDataAuthDetail().getDetailType() != null) {
-                        softwareVO.getDataAuthDetail().getDetailIds().stream().forEach(id -> {
+                    if (ListUtil.isNotEmpty(softwareVO.getDataAuthDetails())) {
+                        softwareVO.getDataAuthDetails().stream().forEach(dataAuthDetailVO -> {
                             DataAuthDetail dataAuthDetail = new DataAuthDetail();
-                            BeanUtils.copyProperties(softwareVO.getDataAuthDetail(), dataAuthDetail);
+                            BeanUtils.copyProperties(dataAuthDetailVO, dataAuthDetail);
                             dataAuthDetail.setGmtCreate(DateUtil.now());
                             dataAuthDetail.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
                             dataAuthDetail.setSoftwareDataAuthId(softwareDataAuth.getId());
-                            dataAuthDetail.setDetailId(id);
                             dataAuthDetails.add(dataAuthDetail);
                         });
-                    } else {
-                        DataAuthDetail dataAuthDetail = new DataAuthDetail();
-                        BeanUtils.copyProperties(softwareVO.getDataAuthDetail(), dataAuthDetail);
-                        dataAuthDetail.setGmtCreate(DateUtil.now());
-                        dataAuthDetail.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
-                        dataAuthDetail.setSoftwareDataAuthId(softwareDataAuth.getId());
-                        dataAuthDetails.add(dataAuthDetail);
                     }
-                    if(new DataAuthDetailServiceImpl().saveBatch(dataAuthDetails)){
+                    if (new DataAuthDetailServiceImpl().saveBatch(dataAuthDetails)) {
                         out.set(true);
-                    }else {
+                    } else {
                         Asserts.fail("数据权限详情插入失败");
                     }
                 } else {
@@ -274,157 +263,65 @@ public class DataAuthManagementFacade {
      */
     public GetDataAuthByIdDTO getDataAuthById(Long Id) {
         GetDataAuthByIdDTO dataAuthDTO = new GetDataAuthByIdDTO();
-        List<SoftwareRoleDataAuthDetailDTO> serviceRoleDataAuthDetailDTOS = dataAuthFacade.getBaseMapper().getDataAuthById(Id);
-        if (ListUtil.isNotEmpty(serviceRoleDataAuthDetailDTOS)) {
-            //1.添加数据权限信息
-            dataAuthDTO.setId(serviceRoleDataAuthDetailDTOS.get(0).getDataAuthId());
-            dataAuthDTO.setName(serviceRoleDataAuthDetailDTOS.get(0).getDataAuthName());
-            dataAuthDTO.setStatus(serviceRoleDataAuthDetailDTOS.get(0).getStatus());
-            //2.获取系统信息
-            Set<Long> serviceSet = serviceRoleDataAuthDetailDTOS.stream().map(SoftwareRoleDataAuthDetailDTO::getSoftwareId).collect(Collectors.toSet());
-            List<SysServiceDTO> sysServiceDTOS = new ArrayList<>();
-            serviceSet.stream().forEach(id -> {
-                //3.添加服务信息
-                SysServiceDTO sysServiceDTO = new SysServiceDTO();
-                sysServiceDTO.setId(id);
-                sysServiceDTO.setName(ServiceEnum.getName(id.intValue()));
-                //4.1添加数据权限详情列表
-                //                List<ServiceRoleDataAuthDetailDTO> oneServiceRoleDataAuthDetailDTOS = serviceRoleDataAuthDetailDTOS.stream()
-                //                        .filter(serviceRoleDataAuthDetailDTO -> serviceRoleDataAuthDetailDTO.getServiceId() == id).collect(Collectors.toList());
-                List<SoftwareRoleDataAuthDetailDTO> oneServiceRoleDataAuthDetailDTOS = dataAuthFacade.getBaseMapper().getOneSoftwareRoleDataAuthDetail(id, Id);
-
-                List<DataAuthDetailDTO> dataAuthDetailDTOS = new ArrayList<>();
-                //4.2.1是否获取当前组织-科室信息 dataAuthDetailDTOS去重
-                oneServiceRoleDataAuthDetailDTOS.stream().forEach(serviceRoleDataAuthDetailDTO -> {
-                    DataAuthDetailDTO dataAuthDetailDTO = new DataAuthDetailDTO();
-                    dataAuthDetailDTO.setId(serviceRoleDataAuthDetailDTO.getDetail());
-                    dataAuthDetailDTO.setDataType(serviceRoleDataAuthDetailDTO.getDataType());
-                    dataAuthDetailDTO.setDetailType(serviceRoleDataAuthDetailDTO.getDetailType());
-                    dataAuthDetailDTO.setDetailId(serviceRoleDataAuthDetailDTO.getDetailId());
-                    if (DataAuthDataTypeEnum.CUSTOMIZE.getKey() == serviceRoleDataAuthDetailDTO.getDataType()
-                            && serviceRoleDataAuthDetailDTO.getDetailType() != null
-                            && DataAuthDetailTypeEnum.DEPT.getKey() == serviceRoleDataAuthDetailDTO.getDetailType()) {
-                        //4.2.3selectFalg为true时查询组织-科室信息
-                        getDeptDetial(dataAuthDetailDTO);
-                    }
-                    dataAuthDetailDTOS.add(dataAuthDetailDTO);
-                });
-                sysServiceDTO.setDataAuthDetailDTOS(dataAuthDetailDTOS);
-
-                //5.添加角色列表
-                List<RoleDTO> roleDTOS = new ArrayList<>();
-                Map<Long, String> roleMap = new HashMap<>();
-                serviceRoleDataAuthDetailDTOS.stream().forEach(serviceRoleDataAuthDetailDTO -> {
-                    roleMap.put(serviceRoleDataAuthDetailDTO.getRoleId(), serviceRoleDataAuthDetailDTO.getRoleName());
-                });
-                for (Long roleID : roleMap.keySet()) {
-                    RoleDTO role = new RoleDTO();
-                    role.setId(roleID);
-                    role.setName(roleMap.get(roleID));
-                    roleDTOS.add(role);
-                }
-                sysServiceDTO.setRoles(roleDTOS);
-                sysServiceDTOS.add(sysServiceDTO);
-            });
-            dataAuthDTO.setSysServiceDTOS(sysServiceDTOS);
-        } else {
-            Asserts.fail("请检查角色id或数据权限id");
+        //1.获取数据权限基本信息
+        DataAuth dataAuth = dataAuthFacade.getById(Id);
+        if (dataAuth == null) {
+            Asserts.fail("该数据权限不存在,请重试");
         }
-        return dataAuthDTO;
-    }
-
-    /**
-     * @param dataAuthDetailDTO
-     * @Description 获取组织-科室信息以及自定义科室
-     * @Return void
-     */
-    public void getDeptDetial(DataAuthDetailDTO dataAuthDetailDTO) {
-        //1.获取医院信息
-        HospitalDTO hospitalDTO = new HospitalDTO();
-        Hospital hospital = hospitalFacade.list(new QueryWrapper<Hospital>()
-                .eq("id", SysUserUtils.getCurrentHospitalId())
-                .eq("is_deleted", IsDeleteEnum.N.getKey())).get(0);
-        BeanUtils.copyProperties(hospital, hospitalDTO);
-        //获取当前登录用户的组织信息
-        List<HospitalDTO> hospitalDTOS = getHospitalInfo(hospitalDTO);
-        getAllHospitalDTO(hospitalDTOS);
-        //2.获取科室信息
-        getDeptInfo(hospitalDTO, dataAuthDetailDTO);
-        dataAuthDetailDTO.setHospitalDTOS(hospitalDTO);
-
-
-    }
-
-    /**
-     * @param hospitalDTO
-     * @param dataAuthDetailDTO
-     * @Description取对应医院的科室信息
-     * @Return void
-     */
-    private void getDeptInfo(HospitalDTO hospitalDTO, DataAuthDetailDTO dataAuthDetailDTO) {
-
-        if (hospitalDTO != null) {
-            if (ListUtil.isNotEmpty(hospitalDTO.getHospitalDTOS())) {
-                for (HospitalDTO oneHospitalDTO : hospitalDTO.getHospitalDTOS()) {
-                    //虚拟医院继续递归遍历到真实医院
-                    getDeptInfo(oneHospitalDTO, dataAuthDetailDTO);
-                }
-                //真实医院:获取科室
-            } else if ((HospitalTypeEnum.SINGLE_HOSPITAL.getKey() + "").equals(hospitalDTO.getType())) {
-                List<Dept> depts = deptFacade.list(new QueryWrapper<Dept>()
-                        .eq("hospital_id", hospitalDTO.getId())
-                        .eq("is_deleted", IsDeleteEnum.N.getKey()));
-                List<DeptDTO> deptDTOS = new ArrayList<>();
-                if (ListUtil.isNotEmpty(depts)) {
-                    for (Dept dept : depts) {
-                        DeptDTO deptDTO = new DeptDTO();
-                        BeanUtils.copyProperties(dept, deptDTO);
-                        deptDTOS.add(deptDTO);
-                        //该医院和该医院的科室 自定义关联关系为true
-                        if (dataAuthDetailDTO.getDetailId() == deptDTO.getId()) {
-                            hospitalDTO.setRelation(RelationEnum.Y.getName());
-                            deptDTO.setRelation(RelationEnum.Y.getName());
-                        }
-                    }
-                }
-                hospitalDTO.setDepts(deptDTOS);
-            }
+        BeanUtils.copyProperties(dataAuth, dataAuthDTO);
+        List<SoftwareDataAuth> softwareDataAuths = softwareDataAuthFacade.list(new QueryWrapper<SoftwareDataAuth>()
+                .eq("data_auth_id", Id)
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
+        if (ListUtil.isEmpty(softwareDataAuths)) {
+            Asserts.fail("该数据权限无系统信息,请联系管理员");
         }
-    }
+        List<Long> softwareDataAuthIds = softwareDataAuths.stream().map(SoftwareDataAuth::getId).collect(Collectors.toList());
+        //2.系统-(角色、数据权限详情)信息组装
+        List<GetDataAuthSoftwareDTO> softwares = new ArrayList<>();
+        softwareDataAuths.stream().forEach(softwareDataAuth -> {
+            //2.1获取系统信息
+            GetDataAuthSoftwareDTO software = new GetDataAuthSoftwareDTO();
+            software.setId(softwareDataAuth.getSoftwareId());
+            software.setName(ServiceEnum.getName(softwareDataAuth.getSoftwareId().intValue()));
 
-    /**
-     * @param hospitalDTOS
-     * @Description 获取医院对应的子医院信息
-     * @Return void
-     */
-    private void getAllHospitalDTO(List<HospitalDTO> hospitalDTOS) {
-        if (ListUtil.isNotEmpty(hospitalDTOS)) {
-            for (HospitalDTO tempHospitalDTO : hospitalDTOS) {
-                getAllHospitalDTO(getHospitalInfo(tempHospitalDTO));
+            //2.2获取角色信息
+            List<GetDataAuthRoleDTO> roles = roleSoftwareDataAuthFacade.getBaseMapper().getRole(softwareDataAuth.getId());
+            software.setRoles(roles);
+            //2.3数据权限详情
+            List<SoftwareDataAuthDetail> softwareDataAuthDetails = softwareDataAuthFacade.getBaseMapper().getDataAuthDetail(softwareDataAuth.getId());
+            //--非自定义处理
+            if (softwareDataAuthDetails.size() == 1 && softwareDataAuthDetails.get(0).getDataType() != DataAuthDataTypeEnum.CUSTOMIZE.getKey()) {
+                software.setDataType(softwareDataAuthDetails.get(0).getDataType());
+                //--自定义处理
+            } else if (softwareDataAuthDetails.get(0).getDataType() == DataAuthDataTypeEnum.CUSTOMIZE.getKey()) {
+                //按自定义类型分类
+                Map<Integer, List<SoftwareDataAuthDetail>> softwareDataAuthDetailMap = EntityUtil.makeEntityListMap(softwareDataAuthDetails, "detailType");
+                //自定义数据
+                DataAuthDetailDTO dataAuthDetail = new DataAuthDetailDTO();
+                softwareDataAuthDetailMap.keySet().stream().forEach(detailType -> {
+                    List<Long> ids = softwareDataAuthDetailMap
+                            .get(detailType).stream().map(SoftwareDataAuthDetail::getDetailId).collect(Collectors.toList());
+                    //医院
+                    if (DataAuthDetailTypeEnum.HOSPITAL.getKey() == detailType) {
+                        dataAuthDetail.setHospitals(hospitalFacade.getBaseMapper().getHospitals(ids));
+                    }
+                    //科室
+                    if (DataAuthDetailTypeEnum.DEPT.getKey() == detailType) {
+                        dataAuthDetail.setDepts(deptFacade.getBaseMapper().getDepts(ids));
+                    }
+                    //医生
+                    if(DataAuthDetailTypeEnum.DOCTOR.getKey() == detailType){
+                        dataAuthDetail.setDoctors(deptFacade.getBaseMapper().getDoctors(ids));
+                    }
+                });
+                software.setDataAuthDetail(dataAuthDetail);
             }
-        }
+            softwares.add(software);
+        });
+        dataAuthDTO.setSoftwares(softwares);
+        return dataAuthDTO;
     }
 
-    /**
-     * @param hospitalDTO
-     * @Description获取医院信息
-     * @Return java.util.List<com.lantone.common.dto.HospitalDTO>
-     */
-    private List<HospitalDTO> getHospitalInfo(HospitalDTO hospitalDTO) {
-        List<HospitalDTO> hospitalDTOS = new ArrayList<>();
-        if (hospitalDTO.getId() != null) {
-            List<Hospital> hospitals = hospitalFacade.list(new QueryWrapper<Hospital>()
-                    .eq("parent_id", hospitalDTO.getId())
-                    .eq("is_deleted", IsDeleteEnum.N.getKey()));
-            hospitals.stream().forEach(hospital -> {
-                HospitalDTO tempHospitalDTO = new HospitalDTO();
-                BeanUtils.copyProperties(hospital, tempHospitalDTO);
-                hospitalDTOS.add(tempHospitalDTO);
-            });
-            hospitalDTO.setHospitalDTOS(hospitalDTOS);
-        }
-        return hospitalDTOS;
-    }
 
     /**
      * @param getDoctorPageVO

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

@@ -76,7 +76,7 @@ public class FuncManagementFacade {
         if(ListUtil.isEmpty(roleIds)){
             Asserts.fail("当前登录用户没有角色,请联系管理员~");
         }
-        if(StringUtil.isNotEmpty(SysUserUtils.getCurrentSoftwareId())){
+        if(StringUtil.isEmpty(SysUserUtils.getCurrentSoftwareId())){
             Asserts.fail("请求头服务id为空");
         }
         getMenusTreeVo.setSoftwareId(Long.parseLong(SysUserUtils.getCurrentSoftwareId()));

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

@@ -406,6 +406,8 @@ public class HospitalManagementFacade {
         outMap.put(DictionaryEnum.TITLE.getKey(), dictionaryInfoFacade.getBaseMapper().getDictionaryInfoByType(DictionaryEnum.TITLE.getKey()));
         //添加status信息
         outMap.put(DictionaryEnum.STATUS.getKey(), dictionaryInfoFacade.getBaseMapper().getDictionaryInfoByType(DictionaryEnum.STATUS.getKey()));
+        //添加数据权限信息
+        outMap.put(DictionaryEnum.DATA_AUTH.getKey(), dictionaryInfoFacade.getBaseMapper().getDictionaryInfoByType(DictionaryEnum.DATA_AUTH.getKey()));
         return outMap;
     }
 

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

@@ -478,9 +478,8 @@ public class RoleManagementFacade {
      * @Description获取当前登录用户管理的角色列表
      * @Return java.util.List<com.lantone.common.dto.GetCreateRoleDTO>
      */
-    public List<GetCreateRoleDTO> getCreateRoles() {
-
-        return roleFacade.getBaseMapper().getCreateRoles(SysUserUtils.getCurrentHospitalId());
+    public List<GetCreateRoleDTO> getCreateRoles(Long softwareId) {
+        return roleFacade.getBaseMapper().getCreateRoles(SysUserUtils.getCurrentPrincipleId(),softwareId);
     }
 
     /**

+ 23 - 9
security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java

@@ -136,11 +136,11 @@ public class UserManagementFacade {
         //1.新增用户基本信息
         User user = new User();
         BeanUtils.copyProperties(addUserVO, user);
-        user.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
+        user.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
         user.setGmtCreate(DateUtil.now());
         user.setPassword(BCrypt.hashpw(user.getPassword()));
         //1.1校验用户
-        checkUser(user.getUsername(), addUserVO.getAddHospitalTreeVO().getHospitals(), addUserVO.getRoles());
+        checkUser(user.getUsername(),null, addUserVO.getAddHospitalTreeVO().getHospitals(), addUserVO.getRoles());
         try {
             if (userFacade.save(user)) {
                 //2.插入用户所属组织
@@ -157,19 +157,33 @@ public class UserManagementFacade {
     /**
      * @param usreName
      * @param hospitals 插入用户组织id
-     * @param roles 插入用户角色id
+     * @param roles     插入用户角色id
      * @Description用户校验
      * @Return void
      */
-    private void checkUser(String usreName, List<Long> hospitals, List<Long> roles) {
+    private void checkUser(String usreName, Long userId, List<Long> hospitals, List<Long> roles) {
 
         //1.当前登录用户、组织是否还存在、能用
         loginCheck();
         //2.当前用户是否已存在
-        if (userFacade.list(new QueryWrapper<User>()
-                .eq("username", usreName)
-                .eq("is_deleted", IsDeleteEnum.N.getKey())).size() > 0) {
-            Asserts.fail("该用户已存在,请更换用户名");
+        //添加时判断
+        if (userId == null) {
+            if (userFacade.list(new QueryWrapper<User>()
+                    .eq("username", usreName)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())).size() > 0) {
+                Asserts.fail("该用户已存在,请更换用户名");
+            }
+            //修改时判断
+        } else {
+            User user = userFacade.getById(userId);
+            //用户名没有变动
+            if (!usreName.equals(user.getName())) {
+                if(userFacade.list(new QueryWrapper<User>()
+                        .eq("username", usreName)
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())).size()>0){
+                    Asserts.fail("该用户已存在,请更换用户名");
+                }
+            }
         }
         //3.校验插入用户所属组织是否正常
         checkHospitals(hospitals);
@@ -314,7 +328,7 @@ public class UserManagementFacade {
     public boolean updateUser(UpdateUserVO updateUserVO) {
         //1.删除该用户关联的科室、医院
         //1.1校验用户
-        checkUser(updateUserVO.getUsername(), updateUserVO.getAddHospitalTreeVO().getHospitals(), updateUserVO.getRoles());
+        checkUser(updateUserVO.getUsername(),updateUserVO.getId(), updateUserVO.getAddHospitalTreeVO().getHospitals(), updateUserVO.getRoles());
         if (delUserHospitalORDept(updateUserVO.getId())) {
             User user = new User();
             BeanUtils.copyProperties(updateUserVO, user);

+ 4 - 3
security-center/src/main/java/com/lantone/security/web/RoleManagementController.java

@@ -89,10 +89,11 @@ public class RoleManagementController {
         return CommonResult.success(roleManagementFacade.getUserMenuResourceTree(type));
     }
 
-    @ApiOperation(value = "获取当前登录用户管理的角色列表 [by:songxl]")
+    @ApiOperation(value = "获取当前登录用户管理的角色列表 [by:songxl]",
+            notes = "softwareId:系统id 添加用户时获取的角色softwareId为空;添加数据权限角色的softwareId为选择的系统id")
     @PostMapping("/getCreateRoles")
-    public CommonResult<List<GetCreateRoleDTO>> getCreateRoles() {
-        return CommonResult.success(roleManagementFacade.getCreateRoles());
+    public CommonResult<List<GetCreateRoleDTO>> getCreateRoles(@RequestParam Long softwareId) {
+        return CommonResult.success(roleManagementFacade.getCreateRoles(softwareId));
     }
 
     @ApiOperation(value = "获取当前登录用户的显示的菜单列表 [by:songxl]")