Przeglądaj źródła

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

# Conflicts:
#	security-center/src/main/java/com/lantone/security/aop/DictionaryAspect.java
#	security-center/src/main/java/com/lantone/security/aop/HospitalSetAspect.java
rengb 3 lat temu
rodzic
commit
0c0af12bb3
56 zmienionych plików z 1085 dodań i 321 usunięć
  1. 30 0
      common/src/main/java/com/lantone/common/annotation/Log.java
  2. 23 0
      common/src/main/java/com/lantone/common/dto/GetDataAuthDetailDTO.java
  3. 17 0
      common/src/main/java/com/lantone/common/dto/GetUserHospitalDeptDTO.java
  4. 2 0
      common/src/main/java/com/lantone/common/dto/GetUserShowTreeDTO.java
  5. 54 0
      common/src/main/java/com/lantone/common/dto/UserInfoDTO.java
  6. 24 3
      common/src/main/java/com/lantone/common/dto/ViewRegionDTO.java
  7. 59 0
      common/src/main/java/com/lantone/common/enums/BusinessType.java
  8. 13 2
      common/src/main/java/com/lantone/common/util/SysUserUtils.java
  9. 4 0
      common/src/main/java/com/lantone/common/vo/AddAuthSoftwareVO.java
  10. 0 4
      common/src/main/java/com/lantone/common/vo/AddAuthVO.java
  11. 4 0
      common/src/main/java/com/lantone/common/vo/AddHospitalUserVO.java
  12. 0 2
      common/src/main/java/com/lantone/common/vo/AddHospitalVO.java
  13. 3 3
      common/src/main/java/com/lantone/common/vo/AddMenuVO.java
  14. 4 1
      common/src/main/java/com/lantone/common/vo/AddUserVO.java
  15. 2 1
      common/src/main/java/com/lantone/common/vo/GetDoctorPageVO.java
  16. 4 0
      common/src/main/java/com/lantone/common/vo/GetRegionVO.java
  17. 5 4
      common/src/main/java/com/lantone/common/vo/UpdateHospitalVO.java
  18. 3 3
      common/src/main/java/com/lantone/common/vo/UpdateMenuVO.java
  19. 63 0
      common/src/main/java/com/lantone/common/vo/UpdateRegionVO.java
  20. 12 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/Dept.java
  21. 2 2
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/MedoupDoctor.java
  22. 2 2
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/Menu.java
  23. 2 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/DataAuthMapper.java
  24. 2 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/HospitalUserMapper.java
  25. 5 0
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/MedoupDoctorMapper.java
  26. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/RoleSoftwareMenuMapper.java
  27. 1 1
      dblayer-mbg/src/main/java/com/lantone/dblayermbg/mapper/UserRoleMapper.java
  28. 30 0
      dblayer-mbg/src/main/resources/mapper/DataAuthMapper.xml
  29. 4 2
      dblayer-mbg/src/main/resources/mapper/DoctorMapper.xml
  30. 14 4
      dblayer-mbg/src/main/resources/mapper/HospitalUserMapper.xml
  31. 27 0
      dblayer-mbg/src/main/resources/mapper/MedoupDoctorMapper.xml
  32. 16 4
      dblayer-mbg/src/main/resources/mapper/RegionMapper.xml
  33. 2 2
      dblayer-mbg/src/main/resources/mapper/RoleMapper.xml
  34. 9 5
      dblayer-mbg/src/main/resources/mapper/RoleSoftwareMenuMapper.xml
  35. 2 0
      dblayer-mbg/src/main/resources/mapper/base/BaseDeptMapper.xml
  36. 1 1
      dblayer-mbg/src/main/resources/mapper/base/BaseMedoupDoctorMapper.xml
  37. 1 1
      dblayer-mbg/src/main/resources/mapper/base/BaseMenuMapper.xml
  38. 18 6
      security-center/src/main/java/com/lantone/security/annotation/DataAuthFilter.java
  39. 54 18
      security-center/src/main/java/com/lantone/security/aop/DataAuthFilterAspect.java
  40. 4 0
      security-center/src/main/java/com/lantone/security/aop/DictionaryAspect.java
  41. 3 0
      security-center/src/main/java/com/lantone/security/aop/HospitalSetAspect.java
  42. 6 6
      security-center/src/main/java/com/lantone/security/enums/ServiceEnum.java
  43. 124 12
      security-center/src/main/java/com/lantone/security/facade/DataAuthManagementFacade.java
  44. 19 11
      security-center/src/main/java/com/lantone/security/facade/DictionaryManagementFacade.java
  45. 217 133
      security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java
  46. 20 12
      security-center/src/main/java/com/lantone/security/facade/HospitalSetManagementFacade.java
  47. 50 21
      security-center/src/main/java/com/lantone/security/facade/RegionManagementFacade.java
  48. 22 5
      security-center/src/main/java/com/lantone/security/facade/RoleManagementFacade.java
  49. 48 24
      security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java
  50. 4 4
      security-center/src/main/java/com/lantone/security/web/DataAuthManagementController.java
  51. 11 4
      security-center/src/main/java/com/lantone/security/web/DictionaryManagementController.java
  52. 11 6
      security-center/src/main/java/com/lantone/security/web/HospitalManagementController.java
  53. 11 4
      security-center/src/main/java/com/lantone/security/web/HospitalSetManagementController.java
  54. 12 4
      security-center/src/main/java/com/lantone/security/web/RegionManagementController.java
  55. 1 1
      security-center/src/main/java/com/lantone/security/web/RoleManagementController.java
  56. 3 2
      security-center/src/main/java/com/lantone/security/web/UserManagementController.java

+ 30 - 0
common/src/main/java/com/lantone/common/annotation/Log.java

@@ -0,0 +1,30 @@
+package com.lantone.common.annotation;
+import com.lantone.common.enums.BusinessType;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @Description:自定义操作日志记录注解
+ * @Author: cy
+ * @time: 2021/8/30 13:36
+ */
+@Target({ ElementType.PARAMETER, ElementType.METHOD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Log {
+    /**
+     * 模块
+     */
+    public String title() default "";
+
+    /**
+     * 功能
+     */
+    public BusinessType businessType() default BusinessType.OTHER;
+    /**
+     * 是否保存请求的参数
+     */
+    public boolean isSaveRequestData() default true;
+}

+ 23 - 0
common/src/main/java/com/lantone/common/dto/GetDataAuthDetailDTO.java

@@ -0,0 +1,23 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author songxl
+ * @Date 2021/7/22
+ */
+@Data
+public class GetDataAuthDetailDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "数据范围类型::1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义")
+    private Integer dataType;
+    @ApiModelProperty(value = "选择数据权限的类型 1:为医院  2:科室 3:为医生")
+    private Integer detailType;
+    @ApiModelProperty(value = "数据编号")
+    private Long detailId;
+}

+ 17 - 0
common/src/main/java/com/lantone/common/dto/GetUserHospitalDeptDTO.java

@@ -0,0 +1,17 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description:获取用户医院、科室信息
+ * @Author songxl
+ * @Date 2021/9/1
+ */
+@Data
+public class GetUserHospitalDeptDTO {
+    @ApiModelProperty(value = "医院编号")
+    private Long hospitalId;
+    @ApiModelProperty(value = "科室id")
+    private Long deptId;
+}

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

@@ -26,6 +26,8 @@ public class GetUserShowTreeDTO implements Serializable {
     private String menuName;
     @ApiModelProperty(value = "类型:0:目录,1菜单,2按钮,3:功能")
     private String menuType ;
+    @ApiModelProperty(value = "权限标识")
+    private String code ;
     @ApiModelProperty(value = "子集")
     private List<GetUserShowTreeDTO> children;
 }

+ 54 - 0
common/src/main/java/com/lantone/common/dto/UserInfoDTO.java

@@ -0,0 +1,54 @@
+package com.lantone.common.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 用户实体类
+ * </p>
+ */
+@Data
+public class UserInfoDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "编号")
+    private Long id;
+    @ApiModelProperty(value = "医生id")
+    private Long doctorId;
+
+    @ApiModelProperty(value = "用户名" )
+    private String username;
+
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    @ApiModelProperty(value = "性别")
+    private Integer sex;
+
+    @ApiModelProperty(value = "手机号")
+    private String mobilePhone;
+
+    @ApiModelProperty(value = "身份证号")
+    private String idcard;
+
+    @ApiModelProperty(value = "职称编号")
+    private String titleId;
+    @ApiModelProperty(value = "职称名称")
+    private String titleName;
+
+    @ApiModelProperty(value = "工号")
+    private Integer jobNo;
+
+    @ApiModelProperty(value = "排序")
+    private Integer orderNo;
+
+    @ApiModelProperty(value = "状态 0:禁用,1:启用")
+    private String status;
+
+}

+ 24 - 3
common/src/main/java/com/lantone/common/dto/ViewRegionDTO.java

@@ -1,9 +1,10 @@
 package com.lantone.common.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import javax.validation.constraints.NotBlank;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -16,19 +17,39 @@ public class ViewRegionDTO implements Serializable {
 
 
     @ApiModelProperty(value = "医院名称")
-    @NotBlank
     private String hospitalName;
 
     @ApiModelProperty(value = "病区名称")
-    @NotBlank
     private String name;
 
+    @ApiModelProperty(value = "病区id")
+    private Long id;
+
     @ApiModelProperty(value = "关联科室")
     private String deptName;
 
+    @ApiModelProperty(value = "关联科室-集合展示")
+    private List<String> deptNameList = new ArrayList<>();
+
     @ApiModelProperty(value = "启用状态 0-否 1-是")
     private String status;
 
+    @ApiModelProperty(value = "联系人")
+    private String liaison;
+
+    @ApiModelProperty(value = "手机号码")
+    private String phoneNumber;
+
+    @ApiModelProperty(value = "病区编码")
+    private String code;
+
+    @ApiModelProperty(value = "排序")
+    private String orderNo;
+
+    @ApiModelProperty(value = "区域类别")
+    private String station;
+
+    @ApiModelProperty(value = "创建时间")
     private Date gmtCreate;
 
 }

+ 59 - 0
common/src/main/java/com/lantone/common/enums/BusinessType.java

@@ -0,0 +1,59 @@
+package com.lantone.common.enums;
+
+/**
+ * 业务操作类型
+ * 
+ * @author ruoyi
+ */
+public enum BusinessType
+{
+    /**
+     * 其它
+     */
+    OTHER,
+
+    /**
+     * 新增
+     */
+    INSERT,
+
+    /**
+     * 修改
+     */
+    UPDATE,
+
+    /**
+     * 删除
+     */
+    DELETE,
+
+    /**
+     * 授权
+     */
+    GRANT,
+
+    /**
+     * 导出
+     */
+    EXPORT,
+
+    /**
+     * 导入
+     */
+    IMPORT,
+
+    /**
+     * 强退
+     */
+    FORCE,
+
+    /**
+     * 生成代码
+     */
+    GENCODE,
+    
+    /**
+     * 清空
+     */
+    CLEAN,
+}

+ 13 - 2
common/src/main/java/com/lantone/common/util/SysUserUtils.java

@@ -3,6 +3,7 @@ package com.lantone.common.util;
 import cn.hutool.json.JSONUtil;
 import com.lantone.common.constant.AuthConstant;
 import com.lantone.common.domain.UserDto;
+import com.lantone.common.exception.Asserts;
 import com.nimbusds.jose.JWSObject;
 
 /**
@@ -74,7 +75,12 @@ public class SysUserUtils {
      * @return
      */
     public static Long getCurrentHospitalId() {
-        return Long.parseLong(HttpUtils.getHeader(AuthConstant.HOSPITAL_ID_HEADER));
+        if(StringUtil.isNotEmpty(HttpUtils.getHeader(AuthConstant.HOSPITAL_ID_HEADER))){
+            return Long.parseLong(HttpUtils.getHeader(AuthConstant.HOSPITAL_ID_HEADER));
+        }else {
+            Asserts.fail("请求头中无医院id");
+        }
+        return null;
     }
 
     /**
@@ -83,7 +89,12 @@ public class SysUserUtils {
      * @return
      */
     public static String getCurrentSoftwareId() {
-        return HttpUtils.getHeader(AuthConstant.SOFTWARE_ID_HEADER);
+        if(StringUtil.isNotEmpty(HttpUtils.getHeader(AuthConstant.SOFTWARE_ID_HEADER))){
+            return HttpUtils.getHeader(AuthConstant.SOFTWARE_ID_HEADER);
+        }else {
+            Asserts.fail("请求头中无医院id");
+        }
+        return null;
     }
 
 }

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

@@ -24,4 +24,8 @@ public class AddAuthSoftwareVO implements Serializable {
     @Valid
     @NotNull(message = "数据权限详情列表为空")
     private List<DataAuthDetailVO> dataAuthDetails;
+
+    @ApiModelProperty(value = "角色列表", required = true)
+    @NotEmpty(message = "角色列表为空")
+    private List<Long> roles;
 }

+ 0 - 4
common/src/main/java/com/lantone/common/vo/AddAuthVO.java

@@ -21,8 +21,4 @@ public class AddAuthVO {
     @Valid
     @NotNull(message = "数据权限对象为空")
     private AddDataAuthVO addDataAuthVO;
-
-    @ApiModelProperty(value = "角色列表", required = true)
-    @NotEmpty(message = "角色列表为空")
-    private List<Long> roles;
 }

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

@@ -6,6 +6,8 @@ import lombok.Data;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
@@ -35,6 +37,8 @@ public class AddHospitalUserVO implements Serializable {
 
 
     @ApiModelProperty(value = "手机号")
+    @Size(min = 11, max = 11, message = "手机号只能为11位")
+    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
     private String mobilePhone;
 
 

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

@@ -59,11 +59,9 @@ public class AddHospitalVO  implements Serializable {
 
     @ApiModelProperty(value = "组织管理员用户",required = true)
     @Valid
-    @NotNull(message = "组织管理员用户不能为空")
     private AddHospitalUserVO addHospitalUserVO;
 
     @ApiModelProperty(value = "系统服务对象",required = true)
     @Valid
-    @NotNull(message = "组织管理员角色不能为空")
     private List<AddRoleSoftwareVO> softwares;
 }

+ 3 - 3
common/src/main/java/com/lantone/common/vo/AddMenuVO.java

@@ -34,15 +34,15 @@ public class AddMenuVO implements Serializable {
     @NotBlank(message = "功能名称为空")
     private String name;
 
-    @ApiModelProperty(value = "权限标识")
+    @ApiModelProperty(value = "权限路由")
     private List<String> permissions;
 
     @ApiModelProperty(value = "类型:0:目录,1菜单,2按钮,3:功能",required = true)
     @NotBlank(message = "类型为空")
     private String type;
 
-    @ApiModelProperty(value = "页面路由")
-    private String url;
+    @ApiModelProperty(value = "权限标识")
+    private String code;
 
     @ApiModelProperty(value = "图标")
     private String icon;

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

@@ -1,6 +1,5 @@
 package com.lantone.common.vo;
 
-import com.lantone.common.dto.GetHospitalTreeDTO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -8,6 +7,8 @@ import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
@@ -42,6 +43,8 @@ public class AddUserVO implements Serializable {
     private Integer sex;
 
     @ApiModelProperty(value = "手机号")
+    @Size(min = 11, max = 11, message = "手机号只能为11位")
+    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
     private String mobilePhone;
 
     @ApiModelProperty(value = "身份证号")

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

@@ -1,6 +1,7 @@
 package com.lantone.common.vo;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.lantone.common.vo.base.BasePageVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -15,7 +16,7 @@ import java.util.List;
  * </p>
  */
 @Data
-public class GetDoctorPageVO extends Page implements Serializable {
+public class GetDoctorPageVO extends BasePageVo implements Serializable {
 
     private static final long serialVersionUID = 1L;
 

+ 4 - 0
common/src/main/java/com/lantone/common/vo/GetRegionVO.java

@@ -14,6 +14,10 @@ import lombok.Setter;
 @Getter
 @Setter
 public class GetRegionVO extends Page {
+
+    @ApiModelProperty(value = "病区id")
+    private Long id;
+
     @ApiModelProperty(value = "医院ID",hidden = true)
     private Long hospitalId;
 

+ 5 - 4
common/src/main/java/com/lantone/common/vo/UpdateHospitalVO.java

@@ -34,7 +34,7 @@ public class UpdateHospitalVO implements Serializable {
     private String name;
 
 
-    @ApiModelProperty(value = "组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院)",required = true)
+    @ApiModelProperty(value = "组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院 5:科室 6:病区)",required = true)
     @NotBlank(message = "组织机构类型不能为空")
     private String type;
 
@@ -44,14 +44,15 @@ public class UpdateHospitalVO implements Serializable {
     @ApiModelProperty(value = "状态:0-禁用,1-启用",required = true)
     @NotBlank(message = "组织机构状态不能为空")
     private String status;
+    @ApiModelProperty(value = "病区id")
+    private Long regionId;
+    @ApiModelProperty(value = "病区名称")
+    private String regionName;
 
     @ApiModelProperty(value = "组织管理员用户",required = true)
     @Valid
-    @NotNull(message = "组织管理员用户不能为空")
     private AddHospitalUserVO addHospitalUserVO;
 
     @ApiModelProperty(value = "系统服务对象",required = true)
-    @Valid
-    @NotNull(message = "组织管理员角色不能为空")
     private List<AddRoleSoftwareVO> softwares;
 }

+ 3 - 3
common/src/main/java/com/lantone/common/vo/UpdateMenuVO.java

@@ -37,15 +37,15 @@ public class UpdateMenuVO implements Serializable {
     @ApiModelProperty(value = "功能名称",required = true)
     private String name;
 
-    @ApiModelProperty(value = "权限标识")
+    @ApiModelProperty(value = "权限路由")
     private List<String> permissions;
 
     @ApiModelProperty(value = "类型:0:目录,1菜单,2按钮,3:功能",required = true)
     @NotBlank(message = "类型为空")
     private String type;
 
-    @ApiModelProperty(value = "页面路由")
-    private String url;
+    @ApiModelProperty(value = "权限标识")
+    private String code;
 
     @ApiModelProperty(value = "图标")
     private String icon;

+ 63 - 0
common/src/main/java/com/lantone/common/vo/UpdateRegionVO.java

@@ -0,0 +1,63 @@
+package com.lantone.common.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 病区表
+ * </p>
+ */
+@Data
+ public class UpdateRegionVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "病区id")
+    private Long id;
+
+    @ApiModelProperty(value = "医院ID",hidden = true)
+    private Long hospitalId;
+
+    @ApiModelProperty(value = "用户ID",hidden = true)
+    private Long userId;
+
+   @ApiModelProperty(value = "医院名称",required = true)
+   private String hospitalName;
+
+    @ApiModelProperty(value = "联系人")
+    private String liaison;
+
+    @ApiModelProperty(value = "手机号码")
+    private String phoneNumber;
+
+    @ApiModelProperty(value = "病区编码")
+    private String code;
+
+   @ApiModelProperty(value = "病区名称",required = true)
+   private String name;
+
+    @ApiModelProperty(value = "首字母拼音")
+    private String spell;
+
+   @ApiModelProperty(value = "区域类别",required = true)
+   private String station;
+
+    @ApiModelProperty(value = "排序")
+    private String orderNo;
+
+    @ApiModelProperty(value = "科室id集合")
+    private List<Long> deptIds;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "启用状态 0-否 1-是")
+    private Integer status;
+
+    @ApiModelProperty(value = "0-默认 1-查询单个病区")
+    private Integer mark = 0;
+}

+ 12 - 0
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/Dept.java

@@ -46,6 +46,18 @@ public class Dept implements Serializable {
     @TableField("name")
     private String name;
 
+    /**
+     * 联系人
+     */
+    @TableField("liaison")
+    private String liaison;
+
+    /**
+     * 手机号
+     */
+    @TableField("mobile_phone")
+    private String mobilePhone;
+
     /**
      * 类别
      */

+ 2 - 2
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/MedoupDoctor.java

@@ -37,8 +37,8 @@ public class MedoupDoctor implements Serializable {
     /**
      * 医生ID
      */
-    @TableField("dcotor_id")
-    private Long dcotorId;
+    @TableField("doctor_id")
+    private Long doctorId;
 
     /**
      * 是否删除,N:未删除,Y:删除

+ 2 - 2
dblayer-mbg/src/main/java/com/lantone/dblayermbg/entity/Menu.java

@@ -49,8 +49,8 @@ public class Menu implements Serializable {
     /**
      * 页面路由
      */
-    @TableField("url")
-    private String url;
+    @TableField("code")
+    private String code;
 
     /**
      * 图标

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

@@ -2,6 +2,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.GetDataAuthDetailDTO;
 import com.lantone.common.dto.GetDataAuthPageDTO;
 import com.lantone.common.dto.SoftwareDataAuthDetail;
 import com.lantone.common.vo.GetDataAuthPageVO;
@@ -41,4 +42,5 @@ public interface DataAuthMapper extends BaseMapper<DataAuth> {
     IPage<GetDataAuthPageDTO> getDataAuthPage(@Param("dataAuthVO") GetDataAuthPageVO getDataAuthPageVO);
 
 
+    List<GetDataAuthDetailDTO> getDataAuth(@Param("userID") Long userID,@Param("softwareId") String softwareId);
 }

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

@@ -2,6 +2,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.GetUserHospitalDeptDTO;
 import com.lantone.common.dto.GetUserPageDTO;
 import com.lantone.common.vo.GetUserPageVO;
 import com.lantone.dblayermbg.entity.HospitalUser;
@@ -20,4 +21,5 @@ public interface HospitalUserMapper extends BaseMapper<HospitalUser> {
 
     List<Long> getHospitalUserById(@Param("hospitalId") Long hospitalId ,@Param("name") String name);
 
+    List<GetUserHospitalDeptDTO> getUserHospitaDeptById(@Param("userId")Long userId);
 }

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

@@ -2,6 +2,10 @@ package com.lantone.dblayermbg.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.lantone.dblayermbg.entity.MedoupDoctor;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Collection;
+import java.util.List;
 
 /**
  * <p>
@@ -10,4 +14,5 @@ import com.lantone.dblayermbg.entity.MedoupDoctor;
  */
 public interface MedoupDoctorMapper extends BaseMapper<MedoupDoctor> {
 
+    List<Long> getDoctorIdByMedoup(@Param("userId") Long userId);
 }

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

@@ -27,5 +27,5 @@ public interface RoleSoftwareMenuMapper extends BaseMapper<RoleSoftwareMenu> {
 
     List<UserMenuResourceTreeDTO> getMenuResourceRelation(@Param("loginRoles")List<Long> loginRoles,@Param("selectRoles") List<Long> selectRoles,@Param("menuIds") List menuIds);
 
-    List<GetUserShowTreeDTO> getUserShowMemuTree(@Param("roleIds") List<Long> roleIds,@Param("menuIds") List menuIds);
+    List<GetUserShowTreeDTO> getUserShowMemuTree(@Param("roleIds") List<Long> roleIds,@Param("menuIds") List menuIds,@Param("softwareId") Long softwareId);
 }

+ 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);
+    List<Long> getUserRoleById(@Param("userId") Long userId);
 }

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

@@ -114,4 +114,34 @@
             AND auth.name LIKE concat('%',#{dataAuthVO.name},'%')
         </if>
     </select>
+    <select id="getDataAuth" resultType="com.lantone.common.dto.GetDataAuthDetailDTO">
+        SELECT DISTINCT
+            u.id userID,
+            dad.data_type dataType,
+            dad.detail_id detailId,
+            dad.detail_type detailType
+        FROM
+            sys_user u,
+            sys_role r,
+            sys_user_role ur,
+            sys_hospital_user hu,
+            sys_software_data_auth sda,
+            sys_role_software_data_auth rsda
+        LEFT JOIN sys_data_auth_detail dad ON rsda.software_data_auth_id = dad.software_data_auth_id
+        WHERE
+            u.is_deleted = 'N'
+        AND r.is_deleted = 'N'
+        AND ur.is_deleted = 'N'
+        AND hu.is_deleted = 'N'
+        AND rsda.is_deleted = 'N'
+        AND dad.is_deleted = 'N'
+        AND sda.is_deleted = 'N'
+        AND u.id = hu.user_id
+        AND sda.id = rsda.software_data_auth_id
+        AND r.id = ur.role_id
+        AND ur.user_id = u.id
+        AND rsda.role_id = r.id
+        AND sda.software_id = #{softwareId}
+        AND u.id = #{userID}
+    </select>
 </mapper>

+ 4 - 2
dblayer-mbg/src/main/resources/mapper/DoctorMapper.xml

@@ -29,7 +29,7 @@
         AND detail.detail_id = doc.id
         AND detail.is_deleted = 'N'
         WHERE
-            dept.id = dd.dept_id
+        dept.id = dd.dept_id
         AND h.id = dept.hospital_id
         AND doc.id = dd.doctor_id
         AND h.is_deleted = 'N'
@@ -65,6 +65,8 @@
                 #{id}
             </foreach>
         </if>
-
+        <if test="doctorVO.map!=null and doctorVO.map.dataAuthFilter!=null and doctorVO.map.dataAuthFilter!=''">
+            AND ${doctorVO.map.dataAuthFilter}
+        </if>
     </select>
 </mapper>

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

@@ -25,7 +25,7 @@
         AND h.is_deleted = 'N'
         AND u.id = hu.user_id
         AND h.id = hu.hospital_id
-        AND u.remark != 'Administrators'
+        AND (u.remark != 'Administrators' OR u.remark IS NULL)
         <if test="getUserPageVO.localUserID !=null ">
             AND u.creator = #{getUserPageVO.localUserID}
         </if>
@@ -38,9 +38,6 @@
         <if test="getUserPageVO.name !=null and getUserPageVO.name !=''">
             AND u.`name` LIKE concat('%',#{getUserPageVO.name},'%')
         </if>
-        <if test="getUserPageVO.map.dataAuthFilter != null ">
-            and ${getUserPageVO.map.dataAuthFilter}
-        </if>
     </select>
     <select id="getHospitalUserById" resultType="java.lang.Long">
         SELECT
@@ -58,4 +55,17 @@
             AND u.`name` = #{name}
         </if>
     </select>
+    <select id="getUserHospitaDeptById" resultType="com.lantone.common.dto.GetUserHospitalDeptDTO">
+        SELECT DISTINCT
+            d.hospital_id hospitalId,
+            du.dept_id deptId
+        FROM
+            `sys_dept` d
+        JOIN sys_dept_user du ON d.id = du.dept_id
+        AND du.is_deleted = 'N'
+        WHERE
+            d.is_deleted = 'N'
+        AND d.`status` = '1'
+        AND du.user_id = #{userId}
+    </select>
 </mapper>

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

@@ -2,4 +2,31 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.lantone.dblayermbg.mapper.MedoupDoctorMapper">
 
+    <select id="getDoctorIdByMedoup" resultType="java.lang.Long">
+        SELECT DISTINCT
+            d.id
+        FROM
+            sys_doctor d,
+            sys_medoup_doctor md
+        WHERE
+            d.id = md.doctor_id
+            AND d.is_deleted = 'N'
+            AND md.is_deleted = 'N'
+        AND md.medoup_id IN (
+            SELECT DISTINCT
+                md.medoup_id
+            FROM
+                sys_user u,
+                sys_doctor d,
+                sys_medoup_doctor md
+            WHERE
+                u.is_deleted = 'N'
+            AND d.is_deleted = 'N'
+            AND md.is_deleted = 'N'
+            AND u.`status` = '1'
+            AND u.job_no = d.`code`
+            AND md.doctor_id = d.id
+          AND u.id = #{userId}
+        )
+    </select>
 </mapper>

+ 16 - 4
dblayer-mbg/src/main/resources/mapper/RegionMapper.xml

@@ -2,7 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.lantone.dblayermbg.mapper.RegionMapper">
     <select id="getWard" resultType="com.lantone.common.dto.ViewRegionDTO">
-        select t1.name,t1.hospital_name as hospitalName,t2.deptName,
+        select t1.name,
+        t1.hospital_name as hospitalName,
+        t1.id,
+        t1.liaison,
+        t1.phone_number as phoneNumber,
+        t1.order_no as orderNo,
+        t1.station,
+        t1.code,
+        t2.deptName,
         case t1.status
         when 1 then '启用'
         when 0 then '禁用'end as status,
@@ -24,15 +32,19 @@
         and t1.id = t2.region_id
         where
         t1.is_deleted = 'N'
-        order by t1.order_no,t1.gmt_create desc;
+        <if test='id != null and id != ""'>
+            AND t1.id = #{id}
+        </if>
         <if test='hospitalId != null and hospitalId != ""'>
             AND t1.hospital_id = #{hospitalId}
         </if>
+
         <if test='name != null and name != ""'>
             and t1.name like CONCAT('%',#{name},'%')
         </if>
-        <if test='status != null and status != ""'>
-            and t2.status like CONCAT('%',#{status},'%')
+        <if test='status != null'>
+            and t1.status = #{status}
         </if>
+        order by t1.order_no,t1.gmt_create desc
     </select>
 </mapper>

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

@@ -13,7 +13,7 @@
             sys_role r
         WHERE
             r.is_deleted = 'N'
-        AND r.remark != 'ManagementRole'
+        AND (r.remark != 'ManagementRole' OR r.remark IS NULL)
         AND r.creator = #{getRolePageVO.creator}
         <if test="getRolePageVO.name!=null and getRolePageVO.name!=''">
             AND r.`name` LIKE concat('%',#{getRolePageVO.name},'%')
@@ -41,7 +41,7 @@
             AND sm.software_id = #{softwareId}
         </if>
         AND r.creator = #{creator}
-        AND r.remark != 'ManagementRole'
+        AND (r.remark != 'ManagementRole' OR r.remark IS NULL)
     </select>
     <select id="getDataAuthRole" resultType="com.lantone.common.dto.UserRoleDTO">
         SELECT DISTINCT

+ 9 - 5
dblayer-mbg/src/main/resources/mapper/RoleSoftwareMenuMapper.xml

@@ -269,20 +269,24 @@
             sm.software_id softwareId,
             sm.id softwareMenuId,
             m.type menuType,
-            m.`name` menuName
+            m.`name` menuName,
+            m.code
         FROM
-            sys_role r
+        sys_role r
         JOIN sys_role_software_menu rsm ON r.id = rsm.role_id
         JOIN sys_software_menu sm ON rsm.software_menu_id = sm.id
-        JOIN sys_menu m ON sm.menu_id = m.id AND m.type !=3
+        JOIN sys_menu m ON sm.menu_id = m.id AND m.type != 3
+        LEFT JOIN sys_menu_resource mr ON mr.menu_id = m.id
+        LEFT JOIN sys_resource res ON res.id = mr.resource_id AND res.is_deleted = 'N'
         WHERE
-            r.is_deleted = 'N'
+        r.is_deleted = 'N'
         AND rsm.is_deleted = 'N'
         AND sm.is_deleted = 'N'
         AND m.is_deleted = 'N'
         AND r.`status` = '1'
         AND m.`status` = '1'
-    <if test="roleIds !=null and roleIds.size!=0">
+        AND sm.software_id = #{softwareId}
+        <if test="roleIds !=null and roleIds.size!=0">
         AND r.id IN
         <foreach collection="roleIds" item="id" open="(" close=")" separator=",">
             #{id}

+ 2 - 0
dblayer-mbg/src/main/resources/mapper/base/BaseDeptMapper.xml

@@ -8,6 +8,8 @@
         <result column="hospital_id" property="hospitalId"/>
         <result column="code" property="code"/>
         <result column="name" property="name"/>
+        <result column="liaison" property="liaison"/>
+        <result column="mobile_phone" property="mobilePhone"/>
         <result column="type" property="type"/>
         <result column="spell" property="spell"/>
         <result column="station" property="station"/>

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

@@ -6,7 +6,7 @@
     <resultMap id="BaseResultMap" type="com.lantone.dblayermbg.entity.MedoupDoctor">
         <id column="id" property="id"/>
         <result column="medoup_id" property="medoupId"/>
-        <result column="dcotor_id" property="dcotorId"/>
+        <result column="doctor_id" property="doctorId"/>
         <result column="is_deleted" property="isDeleted"/>
         <result column="gmt_create" property="gmtCreate"/>
         <result column="gmt_modified" property="gmtModified"/>

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

@@ -8,7 +8,7 @@
         <result column="parent_id" property="parentId"/>
         <result column="name" property="name"/>
         <result column="type" property="type"/>
-        <result column="url" property="url"/>
+        <result column="code" property="code"/>
         <result column="icon" property="icon"/>
         <result column="order_no" property="orderNo"/>
         <result column="menu_describe" property="menuDescribe"/>

+ 18 - 6
security-center/src/main/java/com/lantone/security/annotation/DataAuthFilter.java

@@ -16,16 +16,28 @@ import java.lang.annotation.Target;
 @Documented
 public @interface DataAuthFilter {
     /**
-     * 用户表的别名
+     * 自身数据范围的别名(in)
      */
-    String userAlias() default "";
+    String self() default "";
+
+    /**
+     * 用户表数据范围的别名(in)
+     */
+    String usersAlias() default "";
     /**
-     * 科室表的别名
+     * 医生数据范围的别名(in)
      */
-    String deptAlias() default "";
+    String doctorsAlias() default "";
+
+    /**
+     * 科室表数据范围的别名(in)
+     */
+    String deptsAlias() default "";
+
     /**
-     * 组织表的别名
+     * /**
+     * 组织表数据范围的别名(in)
      */
-    String hospitalAlias() default "";
+    String hospitalsAlias() default "";
 
 }

+ 54 - 18
security-center/src/main/java/com/lantone/security/aop/DataAuthFilterAspect.java

@@ -5,6 +5,7 @@ import com.google.common.collect.Lists;
 import com.lantone.common.constant.AuthConstant;
 import com.lantone.common.enums.IsDeleteEnum;
 import com.lantone.common.exception.Asserts;
+import com.lantone.common.service.RedisService;
 import com.lantone.common.util.ListUtil;
 import com.lantone.common.util.SysUserUtils;
 import com.lantone.common.vo.base.BasePageVo;
@@ -22,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -34,7 +36,8 @@ import java.util.stream.Collectors;
 public class DataAuthFilterAspect {
     @Autowired
     private UserRoleFacade userRoleFacade;
-
+    @Autowired
+    private RedisService redisService;
     //切入点
     @Pointcut("@annotation(com.lantone.security.annotation.DataAuthFilter)")
     public void dataFilterCut() {
@@ -50,18 +53,18 @@ public class DataAuthFilterAspect {
                     .eq("user_id", SysUserUtils.getCurrentPrincipleId())
                     .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(UserRole::getRoleId).collect(Collectors.toList());
             if (!roleIds.contains(AuthConstant.SUPPER_ADMIN)) {
-                if (params instanceof BaseVo){
+                if (params instanceof BaseVo) {
                     BaseVo vo = (BaseVo) params;
                     vo.getMap().put(AuthConstant.DATAAUTH_FILTER_SQL, getSQLFilter(point));
                 }
-                if (params instanceof BasePageVo){
+                if (params instanceof BasePageVo) {
                     BasePageVo vo = (BasePageVo) params;
                     vo.getMap().put(AuthConstant.DATAAUTH_FILTER_SQL, getSQLFilter(point));
                 }
             }
             return;
         } else {
-            Asserts.fail("数据权限接口,只能是Map类型参数,且不能为NULL");
+            Asserts.fail("数据权限接口入参对象要继承BaseVo或BasePageVo,且不能为NULL");
         }
     }
 
@@ -74,27 +77,54 @@ public class DataAuthFilterAspect {
 
         MethodSignature signature = (MethodSignature) point.getSignature();
         DataAuthFilter dataAuthFilter = signature.getMethod().getAnnotation(DataAuthFilter.class);
-        //###模拟数据
-        List<String> users = Lists.newArrayList("1", "2");
-        List<String> depts = Lists.newArrayList("16", "34");
-        List<String> hopitals = Lists.newArrayList("1", "2");
-
+        //获取该用户数据权限
+        Map<String,List> dataAuthMap = redisService.hGetAll(SysUserUtils.getCurrentHospitalId()+"_"+SysUserUtils.getCurrentPrincipleId()+"_"+SysUserUtils.getCurrentSoftwareId());
 
         StringBuilder sqlFilter = new StringBuilder();
         sqlFilter.append(" (");
 
         //sql拼接
-        //1.用户
-        if (StringUtils.isNotEmpty(dataAuthFilter.userAlias()) && ListUtil.isNotEmpty(users)) {
-            sqlFilter.append(dataAuthFilter.userAlias()).append(" in(").append(StringUtils.join(depts, ",")).append(")");
+        //1.筛选用户组
+        if (StringUtils.isNotEmpty(dataAuthFilter.usersAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("users"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.usersAlias()).append(" in(").append(StringUtils.join(dataAuthMap.get("users"), ",")).append(")");
+        }
+
+        if (StringUtils.isNotEmpty(dataAuthFilter.usersAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("notUsers"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.usersAlias()).append(" not in(").append(StringUtils.join(dataAuthMap.get("notUsers"), ",")).append(")");
+        }
+
+        //2.筛选科室组
+        if (StringUtils.isNotEmpty(dataAuthFilter.deptsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("depts"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.deptsAlias()).append(" in(").append(StringUtils.join(dataAuthMap.get("depts"), ",")).append(")");
+        }
+        if (StringUtils.isNotEmpty(dataAuthFilter.deptsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("notDepts"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.deptsAlias()).append(" not in(").append(StringUtils.join(dataAuthMap.get("notDepts"), ",")).append(")");
         }
-        //2.科室
-        if (StringUtils.isNotEmpty(dataAuthFilter.deptAlias()) && ListUtil.isNotEmpty(depts)) {
-            sqlFilter.append(dataAuthFilter.deptAlias()).append(" in(").append(StringUtils.join(depts, ",")).append(")");
+
+        //3.筛选组织组
+        if (StringUtils.isNotEmpty(dataAuthFilter.hospitalsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("hospitals"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.hospitalsAlias()).append(" in(").append(StringUtils.join(dataAuthMap.get("hospitals"), ",")).append(")");
+        }
+        if (StringUtils.isNotEmpty(dataAuthFilter.hospitalsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("notHospitals"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.hospitalsAlias()).append(" not in(").append(StringUtils.join(dataAuthMap.get("notHospitals"), ",")).append(")");
+        }
+
+        //4.自身
+        if (StringUtils.isNotEmpty(dataAuthFilter.self())) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.self()).append(" =").append(SysUserUtils.getCurrentPrincipleId());
         }
-        //3.组织
-        if (StringUtils.isNotEmpty(dataAuthFilter.hospitalAlias()) && ListUtil.isNotEmpty(hopitals)) {
-            sqlFilter.append(dataAuthFilter.hospitalAlias()).append(" in(").append(StringUtils.join(depts, ",")).append(")");
+
+        //5.医生组(医疗组)
+        if (StringUtils.isNotEmpty(dataAuthFilter.doctorsAlias()) && ListUtil.isNotEmpty(dataAuthMap.get("doctors"))) {
+            sqlAppend(sqlFilter);
+            sqlFilter.append(dataAuthFilter.doctorsAlias()).append(" in(").append(StringUtils.join(dataAuthMap.get("doctors"), ",")).append(")");
         }
 
         sqlFilter.append(") ");
@@ -105,4 +135,10 @@ public class DataAuthFilterAspect {
 
         return sqlFilter.toString();
     }
+
+    private void sqlAppend(StringBuilder sqlFilter) {
+        if (sqlFilter.toString().trim().length() > 1) {
+            sqlFilter.append(" or ");
+        }
+    }
 }

+ 4 - 0
security-center/src/main/java/com/lantone/security/aop/DictionaryAspect.java

@@ -20,6 +20,10 @@ public class DictionaryAspect {
     private MessageSender messageSender;
 
     @Pointcut("execution(public * com.lantone.security.web.UserManagementController.login(..))")
+    private DictionaryInfoFacade dictionaryInfoFacade;
+    @Pointcut("execution(public * com.lantone.security.web.DictionaryManagementController.addDictionary(..))" +
+            "||execution(public * com.lantone.security.web.DictionaryManagementController.updateDictionary(..))" +
+            "||execution(public * com.lantone.security.web.DictionaryManagementController.deleteDictionary(..))")
     public void basicInfoChange() {
     }
 

+ 3 - 0
security-center/src/main/java/com/lantone/security/aop/HospitalSetAspect.java

@@ -20,6 +20,9 @@ public class HospitalSetAspect {
     private MessageSender messageSender;
 
     @Pointcut("execution(public * com.lantone.security.web.UserManagementController.addUser(..))")
+    @Pointcut("execution(public * com.lantone.security.web.HospitalSetManagementController.addHospitalSet(..))" +
+            "||execution(public * com.lantone.security.web.HospitalSetManagementController.updateHospitalSet(..))" +
+            "||execution(public * com.lantone.security.web.HospitalSetManagementController.deleteHospitalSet(..))")
     public void basicInfoChange() {
     }
 

+ 6 - 6
security-center/src/main/java/com/lantone/security/enums/ServiceEnum.java

@@ -4,13 +4,13 @@ import com.lantone.common.constant.KeyedNamed;
 import lombok.Setter;
 
 /**
- * @ClassName: CRUDEnum
+ * @ClassName: SoftwareEnum
  * @Description: 服务注解
  * @Author songxl
  * @Date 2021/7/21
  * @Version 1.0
  */
-public enum ServiceEnum implements KeyedNamed {
+public enum SoftwareEnum implements KeyedNamed {
     AI_END_SERVICE(1, "AI终末质控系统"),
     AI_RUN_SERVICE(2, "AI运行质控系统");
 
@@ -20,13 +20,13 @@ public enum ServiceEnum implements KeyedNamed {
     @Setter
     private String name;
 
-    ServiceEnum(int key, String name) {
+    SoftwareEnum(int key, String name) {
         this.key = key;
         this.name = name;
     }
 
-    public static ServiceEnum getEnum(int key) {
-        for (ServiceEnum item : ServiceEnum.values()) {
+    public static SoftwareEnum getEnum(int key) {
+        for (SoftwareEnum item : SoftwareEnum.values()) {
             if (item.key == key) {
                 return item;
             }
@@ -35,7 +35,7 @@ public enum ServiceEnum implements KeyedNamed {
     }
 
     public static String getName(int key) {
-        ServiceEnum item = getEnum(key);
+        SoftwareEnum item = getEnum(key);
         return item != null ? item.name : null;
     }
 

+ 124 - 12
security-center/src/main/java/com/lantone/security/facade/DataAuthManagementFacade.java

@@ -4,15 +4,18 @@ 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.DataAuthDetailDTO;
-import com.lantone.common.dto.DeptDTO;
 import com.lantone.common.dto.GetDataAuthByIdDTO;
+import com.lantone.common.dto.GetDataAuthDeptDTO;
+import com.lantone.common.dto.GetDataAuthDetailDTO;
+import com.lantone.common.dto.GetDataAuthDoctorDTO;
+import com.lantone.common.dto.GetDataAuthHospitalDTO;
 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.SoftwareDataAuthDetail;
 import com.lantone.common.exception.Asserts;
+import com.lantone.common.service.RedisService;
 import com.lantone.common.util.DateUtil;
 import com.lantone.common.util.EntityUtil;
 import com.lantone.common.util.ListUtil;
@@ -24,29 +27,33 @@ import com.lantone.common.vo.GetDoctorPageVO;
 import com.lantone.common.vo.UpdateAuthVO;
 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.DeptUser;
 import com.lantone.dblayermbg.entity.RoleSoftwareDataAuth;
 import com.lantone.dblayermbg.entity.SoftwareDataAuth;
 import com.lantone.dblayermbg.facade.DataAuthDetailFacade;
 import com.lantone.dblayermbg.facade.DataAuthFacade;
 import com.lantone.dblayermbg.facade.DeptFacade;
+import com.lantone.dblayermbg.facade.DeptUserFacade;
 import com.lantone.dblayermbg.facade.DoctorFacade;
 import com.lantone.dblayermbg.facade.HospitalFacade;
 import com.lantone.dblayermbg.facade.HospitalUserFacade;
+import com.lantone.dblayermbg.facade.MedoupDoctorFacade;
 import com.lantone.dblayermbg.facade.RoleSoftwareDataAuthFacade;
 import com.lantone.dblayermbg.facade.SoftwareDataAuthFacade;
+import com.lantone.dblayermbg.facade.UserFacade;
 import com.lantone.dblayermbg.service.impl.DataAuthDetailServiceImpl;
 import com.lantone.dblayermbg.service.impl.RoleSoftwareDataAuthServiceImpl;
 import com.lantone.security.enums.DataAuthDataTypeEnum;
 import com.lantone.security.enums.DataAuthDetailTypeEnum;
 import com.lantone.common.enums.IsDeleteEnum;
-import com.lantone.security.enums.ServiceEnum;
+import com.lantone.security.enums.SoftwareEnum;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -76,6 +83,14 @@ public class DataAuthManagementFacade {
     private DoctorFacade doctorFacade;
     @Autowired
     private HospitalUserFacade hospitalUserFacade;
+    @Autowired
+    private RedisService redisService;
+    @Autowired
+    private DeptUserFacade deptUserFacade;
+    @Autowired
+    private UserFacade userFacade;
+    @Autowired
+    private MedoupDoctorFacade medoupDoctorFacade;
 
 
     /**
@@ -115,7 +130,7 @@ public class DataAuthManagementFacade {
                 }
             }
             //4.插入新建数据权限与系统的关系
-            return saveServiceDataAuth(updateAuthVO.getUpdateDataAuthVO().getSoftwareVOS(), updateAuthVO.getRoles(), updateAuthVO.getUpdateDataAuthVO().getId());
+            return saveServiceDataAuth(updateAuthVO.getUpdateDataAuthVO().getSoftwareVOS(), updateAuthVO.getUpdateDataAuthVO().getId());
         } else {
             Asserts.fail("数据权限修改失败");
         }
@@ -189,7 +204,7 @@ public class DataAuthManagementFacade {
         dataAuth.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
         if (dataAuthFacade.save(dataAuth)) {
             //2.插入新建数据权限与系统的关系 sys_software_data_auth
-            return saveServiceDataAuth(addAuthVO.getAddDataAuthVO().getSoftwareVOS(), addAuthVO.getRoles(), dataAuth.getId());
+            return saveServiceDataAuth(addAuthVO.getAddDataAuthVO().getSoftwareVOS(), dataAuth.getId());
         } else {
             Asserts.fail("数据权限插入失败");
         }
@@ -199,12 +214,11 @@ public class DataAuthManagementFacade {
 
     /**
      * @param softwareVOS
-     * @param roles
      * @param dataAuthId
      * @Description插入新建数据权限与系统的关系
      * @Return void
      */
-    private boolean saveServiceDataAuth(List<AddAuthSoftwareVO> softwareVOS, List<Long> roles, Long dataAuthId) {
+    private boolean saveServiceDataAuth(List<AddAuthSoftwareVO> softwareVOS, Long dataAuthId) {
         AtomicBoolean out = new AtomicBoolean(false);
         softwareVOS.stream().forEach(softwareVO -> {
             SoftwareDataAuth softwareDataAuth = new SoftwareDataAuth();
@@ -215,7 +229,7 @@ public class DataAuthManagementFacade {
             if (softwareDataAuthFacade.save(softwareDataAuth)) {
                 //2.插入数据权限系统关联表与角色管理sys_role_service_data_auth
                 List<RoleSoftwareDataAuth> roleSoftwareDataAuths = new ArrayList<>();
-                for (Long roleId : roles) {
+                for (Long roleId : softwareVO.getRoles()) {
                     RoleSoftwareDataAuth roleServiceDataAuth = new RoleSoftwareDataAuth();
                     roleServiceDataAuth.setRoleId(roleId);
                     roleServiceDataAuth.setSoftwareDataAuthId(softwareDataAuth.getId());
@@ -279,7 +293,7 @@ public class DataAuthManagementFacade {
             //2.1获取系统信息
             GetDataAuthSoftwareDTO software = new GetDataAuthSoftwareDTO();
             software.setId(softwareDataAuth.getSoftwareId());
-            software.setName(ServiceEnum.getName(softwareDataAuth.getSoftwareId().intValue()));
+            software.setName(SoftwareEnum.getName(softwareDataAuth.getSoftwareId().intValue()));
 
             //2.2获取角色信息
             List<GetDataAuthRoleDTO> roles = roleSoftwareDataAuthFacade.getBaseMapper().getRole(softwareDataAuth.getId());
@@ -307,7 +321,7 @@ public class DataAuthManagementFacade {
                         dataAuthDetail.setDepts(deptFacade.getBaseMapper().getDepts(ids));
                     }
                     //医生
-                    if(DataAuthDetailTypeEnum.DOCTOR.getKey() == detailType){
+                    if (DataAuthDetailTypeEnum.DOCTOR.getKey() == detailType) {
                         dataAuthDetail.setDoctors(deptFacade.getBaseMapper().getDoctors(ids));
                     }
                 });
@@ -339,4 +353,102 @@ public class DataAuthManagementFacade {
         getDataAuthPageVO.setCreator(SysUserUtils.getCurrentPrincipleId());
         return dataAuthFacade.getBaseMapper().getDataAuthPage(getDataAuthPageVO);
     }
+
+    /**
+     * @param
+     * @Description获取用户数据权限
+     * @Return void
+     */
+    @Async
+    public void initUserDataAuth(Long userId, Long hospitalId,String softwareId) {
+        //获取当前用户的数据权限
+        List<GetDataAuthDetailDTO> dataAuthDetails = dataAuthFacade.getBaseMapper()
+                .getDataAuth(userId, softwareId);
+        Map<String, List<Long>> localDataAuthMap = new HashMap<>();
+        List<Long> users = new ArrayList<>();
+        List<Long> notUsers = new ArrayList<>();
+
+        List<Long> doctors = new ArrayList<>();
+
+        List<Long> depts = new ArrayList<>();
+        List<Long> notDepts = new ArrayList<>();
+
+        List<Long> hospitals = new ArrayList<>();
+        List<Long> notHospitals = new ArrayList<>();
+
+        if (ListUtil.isNotEmpty(dataAuthDetails)) {
+            Map<Integer, List<GetDataAuthDetailDTO>> dataAuthDetailMap = dataAuthDetails.stream()
+                    .collect(Collectors.groupingBy(GetDataAuthDetailDTO::getDataType));
+            dataAuthDetailMap.keySet().stream().forEach(dataType -> {
+                //1:全部组织,2:全部科室,3:全部科室除本科室外,4:本科室,5:本医疗组,6:本人,7:自定义
+                //全部组织
+                if (DataAuthDataTypeEnum.ALL_HOSPITAL.getKey() == dataType) {
+                    //获取当前登录用户的医院id
+                    hospitals.add(hospitalId);
+                }
+                //全部科室
+                if (DataAuthDataTypeEnum.ALL_DEPT.getKey() == dataType) {
+                    hospitals.add(hospitalId);
+                    //获取所有科室
+//                    depts.addAll(deptFacade.list(new QueryWrapper<Dept>()
+//                            .in("hospital_id",hospitalId)
+//                            .eq("is_deleted",IsDeleteEnum.N.getKey())).stream().map(Dept::getId).collect(Collectors.toList()));
+                }
+                //除了本科室外
+                if (DataAuthDataTypeEnum.ALL_DEPT_NOT_SELF.getKey() == dataType) {
+                    notDepts.addAll(deptUserFacade.list(new QueryWrapper<DeptUser>()
+                            .eq("user_id", userId)
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())).stream()
+                                .map(DeptUser::getDeptId).collect(Collectors.toList()));
+                }
+                //本科室
+                if (DataAuthDataTypeEnum.ALL_SELF_DEPT.getKey() == dataType) {
+                    depts.addAll(deptUserFacade.list(new QueryWrapper<DeptUser>()
+                            .eq("user_id", userId)
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())).stream()
+                            .map(DeptUser::getDeptId).collect(Collectors.toList()));
+                }
+                //本医疗组
+                if (DataAuthDataTypeEnum.SELF_MEDOUP.getKey() == dataType) {
+                    doctors.addAll(medoupDoctorFacade.getBaseMapper().getDoctorIdByMedoup(userId));
+                }
+                //本人
+                if (DataAuthDataTypeEnum.SELF_MEDOUP.getKey() == dataType) {
+                    users.add(userId);
+                }
+                //自定义
+                if (DataAuthDataTypeEnum.CUSTOMIZE.getKey() == dataType) {
+                    Map<Integer, List<GetDataAuthDetailDTO>> dataAuthDetailTypeMap = dataAuthDetailMap.get(dataType).stream()
+                            .collect(Collectors.groupingBy(GetDataAuthDetailDTO::getDetailType));
+                    dataAuthDetailTypeMap.keySet().stream().forEach(detailType -> {
+                        List<Long> ids = dataAuthDetailTypeMap
+                                .get(detailType).stream().map(GetDataAuthDetailDTO::getDetailId).collect(Collectors.toList());
+                        //医院
+                        if (DataAuthDetailTypeEnum.HOSPITAL.getKey() == detailType) {
+                            hospitals.addAll(hospitalFacade.getBaseMapper().getHospitals(ids).stream()
+                                    .map(GetDataAuthHospitalDTO::getId).collect(Collectors.toList()));
+                        }
+                        //科室
+                        if (DataAuthDetailTypeEnum.DEPT.getKey() == detailType) {
+                            depts.addAll(deptFacade.getBaseMapper().getDepts(ids).stream()
+                                    .map(GetDataAuthDeptDTO::getId).collect(Collectors.toList()));
+                        }
+                        //医生
+                        if (DataAuthDetailTypeEnum.DOCTOR.getKey() == detailType) {
+                            doctors.addAll(deptFacade.getBaseMapper().getDoctors(ids).stream()
+                                    .map(GetDataAuthDoctorDTO::getId).collect(Collectors.toList()));
+                        }
+                    });
+                }
+            });
+            localDataAuthMap.put("users", users);
+            localDataAuthMap.put("notUsers", notUsers);
+            localDataAuthMap.put("doctors", doctors);
+            localDataAuthMap.put("depts", depts);
+            localDataAuthMap.put("notDepts", notDepts);
+            localDataAuthMap.put("hospitals", hospitals);
+            localDataAuthMap.put("notHospitals", notHospitals);
+            redisService.hSetAll(hospitalId + "_" + userId + "_" + softwareId, localDataAuthMap);
+        }
+    }
 }

+ 19 - 11
security-center/src/main/java/com/lantone/security/facade/DictionaryManagementFacade.java

@@ -32,25 +32,32 @@ public class DictionaryManagementFacade {
     private DictionaryInfoFacade dictionaryInfoFacade;
 
     /**
-     * @Description: 新增/修改字典
+     * @Description: 新增字典
      * @Param: [saveDictionaryVO]
      * @return: java.lang.Object
      * @Author: cy
      * @Date: 2021/7/30
      */
-    public Object saveDictionary(SaveDictionaryVO saveDictionaryVO) {
-        saveDictionaryVO.setUserId(SysUserUtils.getCurrentPrincipleId());
-        Boolean flag = false;
-        //新增-校验重复数据
+    public Object addDictionary(SaveDictionaryVO saveDictionaryVO) {
+        //数据校验
         getCheckDictionary(saveDictionaryVO);
         DictionaryInfo dictionaryInfo = new DictionaryInfo();
         BeanUtils.copyProperties(saveDictionaryVO, dictionaryInfo);
-        if (null == saveDictionaryVO.getId()) {
-            flag = addDictionary(saveDictionaryVO.getUserId(), dictionaryInfo);
-        } else if (null != saveDictionaryVO.getId()) {
-            flag = updateDictionary(saveDictionaryVO.getUserId(), dictionaryInfo);
-        }
-        return flag;
+        return addDictionary(saveDictionaryVO.getUserId(), dictionaryInfo);
+    }
+
+    /**
+     * @Description: 修改字典
+     * @Param: [saveDictionaryVO]
+     * @return: java.lang.Object
+     * @Author: cy
+     * @Date: 2021/7/30
+     */
+    public Object updateDictionary(SaveDictionaryVO saveDictionaryVO) {
+        saveDictionaryVO.setUserId(SysUserUtils.getCurrentPrincipleId());
+        DictionaryInfo dictionaryInfo = new DictionaryInfo();
+        BeanUtils.copyProperties(saveDictionaryVO, dictionaryInfo);
+        return updateDictionary(saveDictionaryVO.getUserId(), dictionaryInfo);
     }
 
     /**
@@ -106,6 +113,7 @@ public class DictionaryManagementFacade {
      * @Date: 2021/7/30
      */
     public void getCheckDictionary(SaveDictionaryVO saveDictionaryVO) {
+        saveDictionaryVO.setUserId(SysUserUtils.getCurrentPrincipleId());
         if (null == saveDictionaryVO.getId()) {
             Integer count = dictionaryInfoFacade.lambdaQuery()
                     .eq(DictionaryInfo::getIsDeleted, IsDeleteEnum.N.getKey())

+ 217 - 133
security-center/src/main/java/com/lantone/security/facade/HospitalManagementFacade.java

@@ -2,7 +2,6 @@ package com.lantone.security.facade;
 
 import cn.hutool.crypto.digest.BCrypt;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.google.common.collect.Lists;
@@ -92,33 +91,36 @@ public class HospitalManagementFacade {
     public boolean addHospital(AddHospitalVO addHospitalVO) {
 
         //通过任务类型插入医院或科室
-        if((HospitalTypeEnum.DEPT.getKey()+"").equals(addHospitalVO.getType())){
+        if ((HospitalTypeEnum.DEPT.getKey() + "").equals(addHospitalVO.getType())) {
             Dept dept = new Dept();
             BeanUtils.copyProperties(addHospitalVO, dept);
             dept.setHospitalId(addHospitalVO.getParentId());
-            dept.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
+            dept.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
             dept.setGmtCreate(DateUtil.now());
-            if(deptFacade.save(dept)){
+            //添加联系人手机号
+            dept.setLiaison(addHospitalVO.getAddHospitalUserVO().getName());
+            dept.setMobilePhone(addHospitalVO.getAddHospitalUserVO().getMobilePhone());
+            if (deptFacade.save(dept)) {
                 //如果选择病区的话保存不能过去和科室的关系
-               if(addHospitalVO.getRegionId()!=null){
-                   RegionDept regionDept  = new RegionDept();
-                   regionDept.setHospitalId(addHospitalVO.getParentId());
-                   regionDept.setRegionId(addHospitalVO.getRegionId());
-                   regionDept.setDeptId(dept.getId());
-                   if(!regionDeptFacade.save(regionDept)){
-                       Asserts.fail("病区和科室关系插入失败");
-                   }
-               }
-                //2.保存该组织的用户
-                return saveUser(dept.getId(), addHospitalVO);
+                if (addHospitalVO.getRegionId() != null) {
+                    RegionDept regionDept = new RegionDept();
+                    regionDept.setHospitalId(addHospitalVO.getParentId());
+                    regionDept.setRegionId(addHospitalVO.getRegionId());
+                    regionDept.setDeptId(dept.getId());
+                    if (!regionDeptFacade.save(regionDept)) {
+                        Asserts.fail("病区和科室关系插入失败");
+                    }
+                }
+                //2.保存该组织的用户(不支持创建管理员)
+                return true;
             } else {
                 Asserts.fail("组织添加失败");
             }
-        }else {
+        } else {
             //1.添加组织信息
             Hospital hospital = new Hospital();
             BeanUtils.copyProperties(addHospitalVO, hospital);
-            hospital.setCreator(SysUserUtils.getCurrentPrincipleId()+"");
+            hospital.setCreator(SysUserUtils.getCurrentPrincipleId() + "");
             hospital.setGmtCreate(DateUtil.now());
             if (hospitalFacade.save(hospital)) {
                 //2.保存该组织的用户
@@ -144,9 +146,9 @@ public class HospitalManagementFacade {
         addRoleVO.setRemark("ManagementRole");
         addRoleVO.setStatus("1");
         Long insertHospitalId = 0l;
-        if((HospitalTypeEnum.DEPT.getKey()+"").equals(addHospitalVO.getType())){
+        if ((HospitalTypeEnum.DEPT.getKey() + "").equals(addHospitalVO.getType())) {
             insertHospitalId = addHospitalVO.getParentId();
-        }else {
+        } else {
             insertHospitalId = hospitalId;
         }
         addRoleVO.setHospitalId(insertHospitalId);
@@ -166,7 +168,7 @@ public class HospitalManagementFacade {
             addUserVO.setRemark("Administrators");
             //用户与组织的关系(医院、科室)
             AddHospitalTreeVO addHospitalTreeVO = new AddHospitalTreeVO();
-            if((HospitalTypeEnum.DEPT.getKey()+"").equals(addHospitalVO.getType())){
+            if ((HospitalTypeEnum.DEPT.getKey() + "").equals(addHospitalVO.getType())) {
                 addHospitalTreeVO.setDepts(new ArrayList<>());
                 addHospitalTreeVO.getDepts().add(hospitalId);
                 addUserVO.setAddHospitalTreeVO(addHospitalTreeVO);
@@ -174,7 +176,7 @@ public class HospitalManagementFacade {
                 addHospitalTreeVO.setHospitals(new ArrayList<>());
                 addHospitalTreeVO.getHospitals().add(addHospitalVO.getParentId());
                 addUserVO.setAddHospitalTreeVO(addHospitalTreeVO);
-            }else {
+            } else {
                 addHospitalTreeVO.setHospitals(new ArrayList<>());
                 addHospitalTreeVO.getHospitals().add(hospitalId);
                 addUserVO.setAddHospitalTreeVO(addHospitalTreeVO);
@@ -192,42 +194,50 @@ public class HospitalManagementFacade {
      * @Description删除组织
      * @Return boolean
      */
-    public boolean deleteHospital(Long hospitalId) {
+    public boolean deleteHospital(Long hospitalId,String type) {
         AtomicBoolean out = new AtomicBoolean(false);
-        //1.获取该组织及其子组织
-        List<Long> hospitals = hospitalFacade.getBaseMapper().getHospitalTreeInfo(hospitalId,null).stream()
-                .map(GetHospitalTreeDTO::getHospitalId).collect(Collectors.toList());
-        //2.删除这些组织的用户、角色
-        if (ListUtil.isNotEmpty(hospitals)) {
-            hospitals.forEach(id -> {
-                //删除该组织角色
-                if(roleFacade.update(new UpdateWrapper<Role>()
-                        .set("is_deleted", IsDeleteEnum.Y.getKey())
-                        .in("id", roleFacade.list(new QueryWrapper<Role>()
-                                .eq("hospital_id",id))
-                                .stream().map(Role::getId).collect(Collectors.toList())))){
-
-                    //删除组织用户
-                    if(userFacade.update(new UpdateWrapper<User>()
+        //禁用科室
+        if ((HospitalTypeEnum.DEPT.getKey() + "").equals(type)) {
+            return deptFacade.update(new UpdateWrapper<Dept>()
+                    .set("is_deleted", IsDeleteEnum.Y.getKey())
+                    .in("id",hospitalId));
+        }else {
+            //1.获取该组织及其子组织
+            List<Long> hospitals = hospitalFacade.getBaseMapper().getHospitalTreeInfo(hospitalId, null).stream()
+                    .map(GetHospitalTreeDTO::getHospitalId).collect(Collectors.toList());
+            //2.删除这些组织的用户、角色
+            if (ListUtil.isNotEmpty(hospitals)) {
+                hospitals.forEach(id -> {
+                    //删除该组织角色
+                    if (roleFacade.update(new UpdateWrapper<Role>()
                             .set("is_deleted", IsDeleteEnum.Y.getKey())
-                            .in("id", hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
-                                    .eq("hospital_id",id))
-                                    .stream().map(HospitalUser::getUserId).collect(Collectors.toList())))){
-                        //删除组织
-                       out.set(hospitalFacade.update(new UpdateWrapper<Hospital>()
-                               .set("is_deleted", IsDeleteEnum.Y.getKey())
-                               .eq("id", id)));
-                    }else {
-                        Asserts.fail("组织用户删除失败");
+                            .in("id", roleFacade.list(new QueryWrapper<Role>()
+                                    .eq("hospital_id", id))
+                                    .stream().map(Role::getId).collect(Collectors.toList())))) {
+
+                        //删除组织用户
+                        if (userFacade.update(new UpdateWrapper<User>()
+                                .set("is_deleted", IsDeleteEnum.Y.getKey())
+                                .in("id", hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
+                                        .eq("hospital_id", id))
+                                        .stream().map(HospitalUser::getUserId).collect(Collectors.toList())))) {
+                            //删除组织
+                            out.set(hospitalFacade.update(new UpdateWrapper<Hospital>()
+                                    .set("is_deleted", IsDeleteEnum.Y.getKey())
+                                    .eq("id", id)));
+                        } else {
+                            Asserts.fail("组织用户删除失败");
+                        }
+                    } else {
+                        Asserts.fail("组织角色删除失败");
                     }
-                }else {
-                    Asserts.fail("组织角色删除失败");
-                }
 
-            });
-        }else {
-            Asserts.fail("要删除的组织不存在,请刷新重试~");
+                });
+            } else {
+                Asserts.fail("要删除的组织不存在,请刷新重试~");
+            }
         }
+
         return out.get();
     }
 
@@ -239,16 +249,24 @@ public class HospitalManagementFacade {
     private boolean deleteHUserAndRole(Long hospitalId) {
 
         //1.获取用户id
-        List<Long> userIds = hospitalUserFacade.getBaseMapper().getHospitalUserById(hospitalId,hospitalFacade.getById(hospitalId).getName()+"管理员");
-        if(ListUtil.isEmpty(userIds)){
+        List<Long> userIds = hospitalUserFacade.getBaseMapper().getHospitalUserById(hospitalId, hospitalFacade.getById(hospitalId).getName() + "管理员");
+        if (ListUtil.isEmpty(userIds)) {
             Asserts.fail("该组织的管理用户不存在,请联系管理员~");
         }
-        if(userIds.size()>1){
+        if (userIds.size() > 1) {
             Asserts.fail("该组织的管理用户存在多个,请联系管理员~");
         }
         //2.获取角色id
-        Long roleId = userRoleFacade.getBaseMapper().getUserRoleById(userIds.get(0));
-        if (roleManagementFacade.deleteRole(roleId)) {
+        List<Long> roleIds = userRoleFacade.getBaseMapper().getUserRoleById(userIds.get(0));
+        if (ListUtil.isEmpty(roleIds)) {
+            Asserts.fail("要修改组织的管理角色不存在,请联系管理员~");
+        }
+        //通过角色id删除原来角色相关管理关系
+        AtomicBoolean deleteFlag = new AtomicBoolean(false);
+        roleIds.stream().forEach(roleId -> {
+            deleteFlag.set(roleManagementFacade.deleteRole(roleId));
+        });
+        if (deleteFlag.get()) {
             //3.删除用户
             return userManagementFacade.deleteUser(userIds.get(0));
         } else {
@@ -264,18 +282,56 @@ public class HospitalManagementFacade {
      * @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(updateHospitalVO, addHospitalVO);
-                addHospitalVO.setAddHospitalUserVO(updateHospitalVO.getAddHospitalUserVO());
-                addHospitalVO.setSoftwares(updateHospitalVO.getSoftwares());
-                return saveUser(updateHospitalVO.getId(), addHospitalVO);
+        //修改科室信息
+        if ((HospitalTypeEnum.DEPT.getKey() + "").equals(updateHospitalVO.getType())) {
+            boolean updateFlag = true;
+            //1.删除原来科室和病区的管理关系
+            List<Long> ids = regionDeptFacade.list(new QueryWrapper<RegionDept>()
+                    .eq("dept_id", updateHospitalVO.getId())
+                    .eq("hospital_id", updateHospitalVO.getParentId())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(RegionDept::getId).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(ids)) {
+                updateFlag = regionDeptFacade.removeByIds(ids);
+            }
+            //2.修改科室
+            if (updateFlag) {
+                Dept dept = new Dept();
+                BeanUtils.copyProperties(updateHospitalVO, dept);
+                dept.setHospitalId(updateHospitalVO.getParentId());
+                //添加联系人手机号
+                dept.setLiaison(updateHospitalVO.getAddHospitalUserVO().getName());
+                dept.setMobilePhone(updateHospitalVO.getAddHospitalUserVO().getMobilePhone());
+                updateFlag = deptFacade.updateById(dept);
+                //3.如果选择病区的话保存病区和科室的关系
+                if (updateHospitalVO.getRegionId() != null && updateFlag) {
+                    RegionDept regionDept = new RegionDept();
+                    regionDept.setHospitalId(updateHospitalVO.getParentId());
+                    regionDept.setRegionId(updateHospitalVO.getRegionId());
+                    regionDept.setDeptId(updateHospitalVO.getId());
+                    if (!regionDeptFacade.save(regionDept)) {
+                        Asserts.fail("病区和科室关系插入失败");
+                    }
+                }
+                return updateFlag;
+            } else {
+                Asserts.fail("原病区和科室的关联关系删除失败");
+            }
+        } else {
+            //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(updateHospitalVO, addHospitalVO);
+                    addHospitalVO.setAddHospitalUserVO(updateHospitalVO.getAddHospitalUserVO());
+                    addHospitalVO.setSoftwares(updateHospitalVO.getSoftwares());
+                    return saveUser(updateHospitalVO.getId(), addHospitalVO);
+                }
+            } else {
+                Asserts.fail("原组织管理用户信息清除失败,请联系管理员");
             }
         }
         return false;
@@ -287,45 +343,55 @@ public class HospitalManagementFacade {
      * @Description禁用启用组织
      * @Return boolean
      */
-    public boolean disableHospital(Long hospitalId, String status) {
+    public boolean disableHospital(Long hospitalId, String status,String type) {
         AtomicBoolean out = new AtomicBoolean(false);
         String selectStatus = "0";
-        if(StatusEnum.Enable.getKey().equals(status)){
+        if (StatusEnum.Enable.getKey().equals(status)) {
             selectStatus = StatusEnum.Disable.getKey();
-        }else {
+        } else {
             selectStatus = StatusEnum.Enable.getKey();
         }
-        //1.获取该组织及其子组织
-        List<Long> hospitals = hospitalFacade.getBaseMapper().getHospitalTreeInfo(hospitalId,selectStatus).stream()
-                .map(GetHospitalTreeDTO::getHospitalId).collect(Collectors.toList());
-        //2.禁用这些组织的用户、角色
-        if (ListUtil.isNotEmpty(hospitals)) {
-            hospitals.forEach(id -> {
-                //禁用该组织角色
-                if(roleFacade.update(new UpdateWrapper<Role>()
+        //禁用科室
+        if ((HospitalTypeEnum.DEPT.getKey() + "").equals(type)) {
+                return deptFacade.update(new UpdateWrapper<Dept>()
                         .set("status", status)
-                        .in("id", roleFacade.list(new QueryWrapper<Role>()
-                                .eq("hospital_id",id))
-                                .stream().map(Role::getId).collect(Collectors.toList())))){
+                        .in("id",hospitalId));
+        }else {
+            //1.获取该组织及其子组织
+            List<Long> hospitals = hospitalFacade.getBaseMapper().getHospitalTreeInfo(hospitalId, selectStatus).stream()
+                    .map(GetHospitalTreeDTO::getHospitalId).collect(Collectors.toList());
+            //2.禁用这些组织的用户、角色
+            if (ListUtil.isNotEmpty(hospitals)) {
+                hospitals.forEach(id -> {
+                    //禁用该组织角色
+                    if (roleFacade.update(new UpdateWrapper<Role>()
+                            .set("status", status)
+                            .in("id", roleFacade.list(new QueryWrapper<Role>()
+                                    .eq("hospital_id", id))
+                                    .stream().map(Role::getId).collect(Collectors.toList())))) {
 
-                    //删除组织用户
-                    if(userFacade.update(new UpdateWrapper<User>()
-                            .set("status",status)
-                            .in("id", hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
-                                    .eq("hospital_id",id))
-                                    .stream().map(HospitalUser::getUserId).collect(Collectors.toList())))){
-                        //删除组织
-                        out.set(hospitalFacade.update(new UpdateWrapper<Hospital>()
-                                .set("status", status).eq("id", id)));
-                    }else {
-                        Asserts.fail("组织用户禁用失败");
+                        //禁用组织用户
+                        if (userFacade.update(new UpdateWrapper<User>()
+                                .set("status", status)
+                                .in("id", hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
+                                        .eq("hospital_id", id))
+                                        .stream().map(HospitalUser::getUserId).collect(Collectors.toList())))) {
+                            //删除组织
+                            out.set(hospitalFacade.update(new UpdateWrapper<Hospital>()
+                                    .set("status", status).eq("id", id)));
+                        } else {
+                            Asserts.fail("组织用户禁用失败");
+                        }
+                    } else {
+                        Asserts.fail("组织角色禁用失败");
                     }
-                }else {
-                    Asserts.fail("组织角色禁用失败");
-                }
 
-            });
+                });
+            }else {
+                Asserts.fail("该组织不存在,请联系管理员");
+            }
         }
+
         return out.get();
     }
 
@@ -334,42 +400,53 @@ public class HospitalManagementFacade {
      * @Description通过组织id获取该组织及用户详情
      * @Return com.lantone.common.dto.GetHospitalByIdDTO
      */
-    public GetHospitalByIdDTO getHospitalById(Long hospitalId,int type) {
+    public GetHospitalByIdDTO getHospitalById(Long hospitalId, int type) {
         GetHospitalByIdDTO getHospitalByIdDTO = new GetHospitalByIdDTO();
-        Long hID = null;
-        //1.获取医院或科室详情
-        if(HospitalTypeEnum.DEPT.getKey()==type){
+        //1.获取科室详情
+        if (HospitalTypeEnum.DEPT.getKey() == type) {
             Dept dept = deptFacade.getById(hospitalId);
-            if(dept==null){
+            if (dept == null) {
                 Asserts.fail("该组织不存在,请联系管理员~");
             }
             BeanUtils.copyProperties(dept, getHospitalByIdDTO);
             getHospitalByIdDTO.setParentId(dept.getHospitalId());
-            hID = dept.getHospitalId();
-        }else {
+            //添加联系人、联系电话
+            GetHospitalUserDTO getHospitalUserDTO = new GetHospitalUserDTO();
+            getHospitalUserDTO.setName(dept.getLiaison());
+            getHospitalUserDTO.setMobilePhone(dept.getMobilePhone());
+            getHospitalByIdDTO.setGetHospitalUserDTO(getHospitalUserDTO);
+
+        } else {
+            //1.获取医院详情
             Hospital hospital = hospitalFacade.getById(hospitalId);
-            if(hospital==null){
+            if (hospital == null) {
                 Asserts.fail("该组织不存在,请联系管理员~");
             }
             BeanUtils.copyProperties(hospital, getHospitalByIdDTO);
-            hID = hospitalId;
+            //2.获取该医院的管理用户详情
+            List<Long> userIds = hospitalUserFacade.getBaseMapper().getHospitalUserById(hospitalId, getHospitalByIdDTO.getName() + "管理员");
+            if (ListUtil.isEmpty(userIds)) {
+                Asserts.fail("该组织的管理用户不存在,请联系管理员~");
+            }
+            if (userIds.size() > 1) {
+                Asserts.fail("该组织的管理用户存在多个,请联系管理员~");
+            }
+            User user = userFacade.getById(userIds.get(0));
+            GetHospitalUserDTO getHospitalUserDTO = new GetHospitalUserDTO();
+            user.setPassword(user.getPassword());
+            BeanUtils.copyProperties(user, getHospitalUserDTO);
+            getHospitalByIdDTO.setGetHospitalUserDTO(getHospitalUserDTO);
+            //3.获取管理角色相关信息(新增组织查询时type为0)
+            List<Long> roleIds = userRoleFacade.getBaseMapper().getUserRoleById(user.getId());
+            if (ListUtil.isEmpty(roleIds)) {
+                Asserts.fail("该组织的管理角色不存在,请联系管理员~");
+            }
+            if (roleIds.size() > 1) {
+                Asserts.fail("该组织的管理角色存在多个,请联系管理员~");
+            }
+            getHospitalByIdDTO.setGetRoleDTO(roleManagementFacade.getRoleById(roleIds.get(0), "0"));
         }
         getHospitalByIdDTO.setParentName(hospitalFacade.getById(getHospitalByIdDTO.getParentId()).getName());
-        //2.获取该医院的管理用户详情
-        List<Long> userIds = hospitalUserFacade.getBaseMapper().getHospitalUserById(hID,getHospitalByIdDTO.getName()+"管理员");
-        if(ListUtil.isEmpty(userIds)){
-            Asserts.fail("该组织的管理用户不存在,请联系管理员~");
-        }
-        if(userIds.size()>1){
-            Asserts.fail("该组织的管理用户存在多个,请联系管理员~");
-        }
-        User user = userFacade.getById(userIds.get(0));
-        GetHospitalUserDTO getHospitalUserDTO = new GetHospitalUserDTO();
-        BeanUtils.copyProperties(user, getHospitalUserDTO);
-        getHospitalByIdDTO.setGetHospitalUserDTO(getHospitalUserDTO);
-        //3.获取管理角色相关信息(新增组织查询时type为0)
-        getHospitalByIdDTO.setGetRoleDTO(roleManagementFacade.getRoleById(userRoleFacade.getBaseMapper()
-                .getUserRoleById(user.getId()),"0"));
         return getHospitalByIdDTO;
     }
 
@@ -380,13 +457,13 @@ public class HospitalManagementFacade {
      */
     public Map<String, Object> getManagerBoxInfo() {
         Map<String, Object> outMap = new HashMap<>();
-        Map<String, List<GetDictionaryInfoByTypeDTO>> dicMapObj= dictionaryInfoFacade.getDicMapObj(ReturnTypeEnum.INTERFACE.getKey(),
-                Lists.newArrayList(DictionaryEnum.TITLE.getKey()+"",
-                        DictionaryEnum.STATUS.getKey()+"",
-                        DictionaryEnum.HOSPITAL_TYPE.getKey()+"",
-                        DictionaryEnum.DATA_AUTH.getKey()+""));
+        Map<String, List<GetDictionaryInfoByTypeDTO>> dicMapObj = dictionaryInfoFacade.getDicMapObj(ReturnTypeEnum.INTERFACE.getKey(),
+                Lists.newArrayList(DictionaryEnum.TITLE.getKey() + "",
+                        DictionaryEnum.STATUS.getKey() + "",
+                        DictionaryEnum.HOSPITAL_TYPE.getKey() + "",
+                        DictionaryEnum.DATA_AUTH.getKey() + ""));
         outMap.putAll(dicMapObj);
-        outMap.remove(DictionaryEnum.HOSPITAL_TYPE.getKey()+"");
+        outMap.remove(DictionaryEnum.HOSPITAL_TYPE.getKey() + "");
         //1.获取当前用户的组织类型
         int hospitalType = -1;
         Hospital hospital = hospitalFacade.getById(SysUserUtils.getCurrentHospitalId());
@@ -404,11 +481,11 @@ public class HospitalManagementFacade {
                 BeanUtils.copyProperties(region, downBoxRegionDTO);
                 downBoxRegions.add(downBoxRegionDTO);
             });
-            outMap.put(DictionaryEnum.REGION.getKey()+"", downBoxRegions);
+            outMap.put(DictionaryEnum.REGION.getKey() + "", downBoxRegions);
         } else {
-            String type = dicMapObj.get(DictionaryEnum.HOSPITAL_TYPE.getKey()+"").get(hospitalType).getVal();
-            if(StringUtil.isNotEmpty(type)){
-                outMap.put(DictionaryEnum.HOSPITAL_TYPE.getKey()+"", JSONArray.parseArray(type));
+            String type = dicMapObj.get(DictionaryEnum.HOSPITAL_TYPE.getKey() + "").get(hospitalType).getVal();
+            if (StringUtil.isNotEmpty(type)) {
+                outMap.put(DictionaryEnum.HOSPITAL_TYPE.getKey() + "", JSONArray.parseArray(type));
             }
         }
         return outMap;
@@ -438,12 +515,19 @@ public class HospitalManagementFacade {
             //添加根目录标志
             getHospitalListInfoDTO.setRootFlag(true);
             getHospitalListInfoDTO.setTypeName(HospitalTypeEnum.getName(hospitalType));
-            if(StringUtil.isNotEmpty(getHospitalListInfoDTO.getStatus())){
+            if (StringUtil.isNotEmpty(getHospitalListInfoDTO.getStatus())) {
                 getHospitalListInfoDTO.setStatusName(StatusEnum.getName(Integer.parseInt(getHospitalListInfoDTO.getStatus())));
             }
             getHospitalListInfoDTO.setDepts(deptFacade.getBaseMapper().getDeptRegion(getHospitalListInfoVO));
             List<GetHospitalListInfoDTO> hospitalListInfos = new ArrayList<>();
+            //科室不为空则表示有子组织
             if (ListUtil.isNotEmpty(getHospitalListInfoDTO.getDepts())) {
+                getHospitalListInfoDTO.setHasHospitalFlag(true);
+            }
+            //该组织是否有用户
+            if (hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
+                    .eq("hospital_id", hospital.getId())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())).size() > 1) {
                 getHospitalListInfoDTO.setHasUserFlag(true);
             }
             hospitalListInfos.add(getHospitalListInfoDTO);

+ 20 - 12
security-center/src/main/java/com/lantone/security/facade/HospitalSetManagementFacade.java

@@ -29,26 +29,32 @@ public class HospitalSetManagementFacade {
     private HospitalSetFacade hospitalSetFacade;
 
     /**
-     * @Description:  新增/修改参数
+     * @Description:  新增参数
      * @Param: [saveHospitalSetVO]
      * @return: java.lang.Object
      * @Author: cy
      * @Date: 2021/7/30
      */
-    public Object saveHospitalSet(SaveHospitalSetVO saveHospitalSetVO) {
-        saveHospitalSetVO.setHospitalId(SysUserUtils.getCurrentHospitalId());
-        saveHospitalSetVO.setUserId(SysUserUtils.getCurrentPrincipleId());
-        Boolean flag = false;
-        //新增-校验重复数据
+    public Object addHospitalSet(SaveHospitalSetVO saveHospitalSetVO) {
+       // 数据校验
         checkHospitalSet(saveHospitalSetVO);
         HospitalSet hospitalSet = new HospitalSet();
         BeanUtils.copyProperties(saveHospitalSetVO, hospitalSet);
-        if (null == saveHospitalSetVO.getId()) {
-            flag = addHospitalSet(saveHospitalSetVO.getUserId(),hospitalSet);
-        } else if (null != saveHospitalSetVO.getId()) {
-            flag = updateHospitalSet(saveHospitalSetVO.getUserId(),hospitalSet);
-        }
-        return flag;
+        return addHospitalSet(saveHospitalSetVO.getUserId(),hospitalSet);
+    }
+
+    /**
+     * @Description:  修改参数
+     * @Param: [saveHospitalSetVO]
+     * @return: java.lang.Object
+     * @Author: cy
+     * @Date: 2021/7/30
+     */
+    public Object updateHospitalSet(SaveHospitalSetVO saveHospitalSetVO) {
+        saveHospitalSetVO.setUserId(SysUserUtils.getCurrentPrincipleId());
+        HospitalSet hospitalSet = new HospitalSet();
+        BeanUtils.copyProperties(saveHospitalSetVO, hospitalSet);
+        return updateHospitalSet(saveHospitalSetVO.getUserId(),hospitalSet);
     }
 
     /**
@@ -99,6 +105,8 @@ public class HospitalSetManagementFacade {
      * @Date: 2021/7/30
      */
     public void checkHospitalSet(SaveHospitalSetVO saveHospitalSetVO) {
+        saveHospitalSetVO.setHospitalId(SysUserUtils.getCurrentHospitalId());
+        saveHospitalSetVO.setUserId(SysUserUtils.getCurrentPrincipleId());
         if (null == saveHospitalSetVO.getId()) {
             Integer count = hospitalSetFacade.lambdaQuery()
                     .eq(HospitalSet::getIsDeleted, IsDeleteEnum.N.getKey())

+ 50 - 21
security-center/src/main/java/com/lantone/security/facade/RegionManagementFacade.java

@@ -14,6 +14,7 @@ import com.lantone.common.vo.CheckSolveRegionVO;
 import com.lantone.common.vo.GetDeptListVO;
 import com.lantone.common.vo.SaveRegionVO;
 import com.lantone.common.vo.GetRegionVO;
+import com.lantone.common.vo.UpdateRegionVO;
 import com.lantone.dblayermbg.entity.Dept;
 import com.lantone.dblayermbg.entity.Region;
 import com.lantone.dblayermbg.entity.RegionDept;
@@ -21,6 +22,7 @@ import com.lantone.dblayermbg.facade.DeptFacade;
 import com.lantone.dblayermbg.facade.RegionFacade;
 import com.lantone.dblayermbg.service.RegionDeptService;
 import com.lantone.common.enums.IsDeleteEnum;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -47,27 +49,52 @@ public class RegionManagementFacade {
     private DeptFacade deptFacade;
 
     /**
-     * @Description: 新增/修改病区
+     * @Description: 新增病区
      * @Param: [saveRegionVo]
      * @return: java.lang.Object
      * @Author: cy
      * @Date: 2021/7/30
      */
-    public Object saveRegion(SaveRegionVO saveRegionVo) {
-        saveRegionVo.setHospitalId(SysUserUtils.getCurrentHospitalId());
-        saveRegionVo.setUserId(SysUserUtils.getCurrentPrincipleId());
-        Boolean flag = false;
-        //新增-校验重复数据
+    public Object addRegion(SaveRegionVO saveRegionVo) {
+        //数据校验
         getCheckRegion(saveRegionVo);
         Region sysRegion = new Region();
         BeanUtils.copyProperties(saveRegionVo, sysRegion);
         List<RegionDept> sysRegionDepts = new ArrayList<>();
-        if (null == saveRegionVo.getId()) {
-            flag = addRegion(saveRegionVo, sysRegion, sysRegionDepts);
-        } else if (null != saveRegionVo.getId()) {
-            flag = updateRegion(saveRegionVo, sysRegion, sysRegionDepts);
+        return addRegion(saveRegionVo, sysRegion, sysRegionDepts);
+    }
+
+    /**
+     * @Description: 修改病区
+     * @Param: [saveRegionVo]
+     * @return: java.lang.Object
+     * @Author: cy
+     * @Date: 2021/7/30
+     */
+    public Object updateRegion(UpdateRegionVO updateRegionVO) {
+        updateRegionVO.setHospitalId(SysUserUtils.getCurrentHospitalId());
+        updateRegionVO.setUserId(SysUserUtils.getCurrentPrincipleId());
+        if(1==updateRegionVO.getMark()){
+            GetRegionVO getRegionVO = new GetRegionVO();
+            BeanUtils.copyProperties(updateRegionVO, getRegionVO);
+            IPage<ViewRegionDTO> region = regionFacade.getWard(getRegionVO);
+            List<ViewRegionDTO> records = region.getRecords();
+            if(ListUtil.isNotEmpty(records) && records.size() == 1){
+                ViewRegionDTO viewRegionDTO = records.get(0);
+                String deptName = viewRegionDTO.getDeptName();
+                List<String> deptNameList = viewRegionDTO.getDeptNameList();
+                if(StringUtils.isNotBlank(deptName) && deptName.contains(",")){
+                    for (String str : deptName.split(",")) {
+                        deptNameList.add(str);
+                    }
+                }
+            }
+            return region;
         }
-        return flag;
+        Region sysRegion = new Region();
+        BeanUtils.copyProperties(updateRegionVO, sysRegion);
+        List<RegionDept> sysRegionDepts = new ArrayList<>();
+        return updateRegion(updateRegionVO, sysRegion, sysRegionDepts);
     }
 
     /**
@@ -121,6 +148,8 @@ public class RegionManagementFacade {
      * @Date: 2021/7/30
      */
     public void getCheckRegion(SaveRegionVO saveRegionVo) {
+        saveRegionVo.setHospitalId(SysUserUtils.getCurrentHospitalId());
+        saveRegionVo.setUserId(SysUserUtils.getCurrentPrincipleId());
         if (null == saveRegionVo.getId()) {
             Region region = regionFacade.lambdaQuery()
                     .eq(Region::getIsDeleted, IsDeleteEnum.N.getKey())
@@ -166,30 +195,30 @@ public class RegionManagementFacade {
      * @Author: cy
      * @Date: 2021/7/30
      */
-    public Boolean updateRegion(SaveRegionVO saveRegionVo, Region sysRegion, List<RegionDept> sysRegionDepts) {
+    public Boolean updateRegion(UpdateRegionVO updateRegionVO, Region sysRegion, List<RegionDept> sysRegionDepts) {
         sysRegion.setGmtModified(new Date());
-        sysRegion.setModifier(saveRegionVo.getUserId().toString());
+        sysRegion.setModifier(updateRegionVO.getUserId().toString());
         regionFacade.updateById(sysRegion);
-        if (ListUtil.isNotEmpty(saveRegionVo.getDeptIds())) {
+        if (ListUtil.isNotEmpty(updateRegionVO.getDeptIds())) {
             Region region = regionFacade.lambdaQuery()
-                    .eq(Region::getId, saveRegionVo.getId())
+                    .eq(Region::getId, updateRegionVO.getId())
                     .eq(Region::getIsDeleted, IsDeleteEnum.N.getKey()).one();
             regionDeptService.lambdaUpdate()
-                    .eq(RegionDept::getHospitalId, saveRegionVo.getHospitalId())
+                    .eq(RegionDept::getHospitalId, updateRegionVO.getHospitalId())
                     .eq(RegionDept::getIsDeleted, IsDeleteEnum.N.getKey())
-                    .eq(RegionDept::getRegionId, saveRegionVo.getId()).remove();
-            saveRegionVo.getDeptIds().forEach(obj -> {
+                    .eq(RegionDept::getRegionId, updateRegionVO.getId()).remove();
+            updateRegionVO.getDeptIds().forEach(obj -> {
                 RegionDept sysRegionDeptEntry = new RegionDept();
-                BeanUtils.copyProperties(saveRegionVo, sysRegionDeptEntry);
+                BeanUtils.copyProperties(updateRegionVO, sysRegionDeptEntry);
                 sysRegionDeptEntry.setId(null);
                 sysRegionDeptEntry.setDeptId(obj);
-                sysRegionDeptEntry.setRegionId(saveRegionVo.getId());
+                sysRegionDeptEntry.setRegionId(updateRegionVO.getId());
                 if (null != region) {
                     sysRegionDeptEntry.setGmtCreate(region.getGmtCreate());
                     sysRegionDeptEntry.setCreator(region.getCreator());
                 }
                 sysRegionDeptEntry.setGmtModified(new Date());
-                sysRegionDeptEntry.setModifier(saveRegionVo.getUserId().toString());
+                sysRegionDeptEntry.setModifier(updateRegionVO.getUserId().toString());
                 sysRegionDepts.add(sysRegionDeptEntry);
             });
             return regionDeptService.saveBatch(sysRegionDepts);

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

@@ -11,7 +11,7 @@ import com.lantone.common.dto.GetRoleDTO;
 import com.lantone.common.dto.GetRolePageDTO;
 import com.lantone.common.dto.GetUserShowTreeDTO;
 import com.lantone.common.dto.SoftwareDTO;
-import com.lantone.common.dto.SoftwareMenuRelationDTO;
+import com.lantone.common.dto.UserInfoDTO;
 import com.lantone.common.dto.UserMenuResourceTreeDTO;
 import com.lantone.common.dto.UserRoleDTO;
 import com.lantone.common.enums.StatusEnum;
@@ -44,12 +44,14 @@ import com.lantone.dblayermbg.facade.RoleSoftwareResourceFacade;
 import com.lantone.dblayermbg.facade.SoftwareFacade;
 import com.lantone.dblayermbg.facade.SoftwareMenuFacade;
 import com.lantone.dblayermbg.facade.SoftwareResourceFacade;
+import com.lantone.dblayermbg.facade.UserFacade;
 import com.lantone.dblayermbg.facade.UserRoleFacade;
 import com.lantone.dblayermbg.service.impl.RoleSoftwareMenuServiceImpl;
 import com.lantone.dblayermbg.service.impl.RoleSoftwareResourceServiceImpl;
 import com.lantone.common.enums.IsDeleteEnum;
 import com.lantone.security.enums.DictionaryEnum;
 import com.lantone.security.enums.RelationEnum;
+import com.lantone.security.enums.SoftwareEnum;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -74,6 +76,8 @@ public class RoleManagementFacade {
     @Autowired
     private RoleFacade roleFacade;
     @Autowired
+    private UserFacade userFacade;
+    @Autowired
     private UserRoleFacade userRoleFacade;
     @Autowired
     private RoleSoftwareMenuFacade roleSoftwareMenuFacade;
@@ -93,6 +97,8 @@ public class RoleManagementFacade {
     private SoftwareMenuFacade softwareMenuFacade;
     @Autowired
     private SoftwareResourceFacade softwareResourceFacade;
+    @Autowired
+    private DataAuthManagementFacade dataAuthManagementFacade;
 
 
     /**
@@ -167,6 +173,8 @@ public class RoleManagementFacade {
         }
         if(ListUtil.isNotEmpty(softwares)){
             softwares.stream().forEach(addRoleSoftwareVO -> {
+                //移除菜单中的系统信息
+                addRoleSoftwareVO.getSoftwareMenuIds().remove(addRoleSoftwareVO.getId());
                 //获取菜单比对插入的功能菜单都能正常使用
                 List<SoftwareMenu> softwareMenus = softwareMenuFacade.list(new QueryWrapper<SoftwareMenu>()
                         .select("menu_id")
@@ -478,7 +486,13 @@ public class RoleManagementFacade {
      * @Description获取当前登录用户的显示的菜单列表
      * @Return java.util.Map<java.lang.Long, java.util.List < com.lantone.common.dto.GetUserShowTreeDTO>>
      */
-    public Map<Long, List<GetUserShowTreeDTO>> getUserShowMemuTree() {
+    public Map<String, Object> getUserShowMemuTree() {
+        if(StringUtil.isEmpty(SysUserUtils.getCurrentSoftwareId())){
+            Asserts.fail("请求头服务id为空");
+        }
+        Long softwareId = Long.parseLong(SysUserUtils.getCurrentSoftwareId());
+        Map<String, Object> out = new HashMap<>();
+        dataAuthManagementFacade.initUserDataAuth(SysUserUtils.getCurrentPrincipleId(),SysUserUtils.getCurrentHospitalId(),SysUserUtils.getCurrentSoftwareId());
         AtomicReference<List> notShowSoftwareMenuIds = new AtomicReference<>();
         //1.1获取当前用户的角色列表
         List<Role> roles = roleFacade.list(new QueryWrapper<Role>().
@@ -499,12 +513,12 @@ public class RoleManagementFacade {
             }
         }
         List<GetUserShowTreeDTO> getUserShowTreeDTOS = roleSoftwareMenuFacade.getBaseMapper()
-                .getUserShowMemuTree(roles.stream().map(Role::getId).collect(Collectors.toList()),notShowSoftwareMenuIds.get());
+                .getUserShowMemuTree(roles.stream().map(Role::getId).collect(Collectors.toList()),notShowSoftwareMenuIds.get(),softwareId);
         //菜单转成树状结构
         if(ListUtil.isNotEmpty(getUserShowTreeDTOS)){
-            return getShowTree(getUserShowTreeDTOS);
+            out.put("showMenuInfo",getShowTree(getUserShowTreeDTOS).get(softwareId));
         }
-        return null;
+        return out;
     }
 
 
@@ -519,6 +533,9 @@ public class RoleManagementFacade {
                 Map<Long, List<GetUserShowTreeDTO>> menuResourceMap = EntityUtil
                         .makeEntityListMap(userMenuResourceMap.get(softwareId), "parentId");
                 List<GetUserShowTreeDTO> menuRes = menuResourceMap.get(0L);
+                if(ListUtil.isEmpty(menuRes)){
+                    Asserts.fail("菜单目录为空");
+                }
                 for (GetUserShowTreeDTO bean : menuRes) {
                     getSonMenu(bean, menuResourceMap);
                 }

+ 48 - 24
security-center/src/main/java/com/lantone/security/facade/UserManagementFacade.java

@@ -10,9 +10,11 @@ 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.GetUserHospitalDeptDTO;
 import com.lantone.common.dto.GetUserHospitalsDTO;
 import com.lantone.common.dto.GetUserPageDTO;
 import com.lantone.common.dto.SoftwareDTO;
+import com.lantone.common.dto.UserInfoDTO;
 import com.lantone.common.dto.UserRoleDTO;
 import com.lantone.common.dto.UserSoftwareHospitalDTO;
 import com.lantone.common.enums.IsDeleteEnum;
@@ -28,6 +30,7 @@ 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.Dept;
 import com.lantone.dblayermbg.entity.DeptUser;
 import com.lantone.dblayermbg.entity.Doctor;
 import com.lantone.dblayermbg.entity.Hospital;
@@ -111,7 +114,7 @@ public class UserManagementFacade {
         userQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
         List<User> userList = userFacade.list(userQueryWrapper);
         if (userList.size() == 0) {
-            return null;
+            Asserts.fail("用户不存在!");
         }
         if (userList.size() > 1) {
             Asserts.fail("当前账号异常!");
@@ -193,7 +196,7 @@ public class UserManagementFacade {
         } else {
             User userTemp = userFacade.getById(user.getId());
             //用户名没有变动
-            if (!user.getUsername().equals(userTemp.getName())) {
+            if (!user.getUsername().equals(userTemp.getUsername())) {
                 if (userFacade.list(new QueryWrapper<User>()
                         .eq("username", user.getUsername())
                         .eq("is_deleted", IsDeleteEnum.N.getKey())).size() > 0) {
@@ -207,9 +210,7 @@ public class UserManagementFacade {
         checkRoles(roles);
         //5.用户如果没有医疗组、科室 绑定角色不能选择本医疗组、全部科室除本科室外、本科室数据权限角色
         //科室
-        if (!deptFlag) {
-            userDeptCheck(roles);
-        }
+        userDeptCheck(roles,deptFlag);
         //医疗组(无医生信息,就不会有医疗组;有医生信息无医疗组)
         boolean groupFlag = false;
         if (StringUtil.isEmpty(user.getJobNo())) {
@@ -258,7 +259,7 @@ public class UserManagementFacade {
      * @Description校验用户如果没有科室信息时,是否分配科室数据权限相关的角色
      * @Return void
      */
-    private void userDeptCheck(List<Long> roles) {
+    private void userDeptCheck(List<Long> roles,boolean deptFlag) {
         //获取当前用户的角色
         List<Long> dataTypes = new ArrayList<>();
         dataTypes.add(DataAuthDataTypeEnum.ALL_DEPT_NOT_SELF.getKey() * 1l);
@@ -266,11 +267,16 @@ public class UserManagementFacade {
         List<UserRoleDTO> checkRoles = roleFacade.getBaseMapper()
                 .getDataAuthRole(SysUserUtils.getCurrentPrincipleId(), roles, dataTypes);
         StringBuffer errStr = new StringBuffer();
+        //角色需要用户包含科室信息
         if (ListUtil.isNotEmpty(checkRoles)) {
-            checkRoles.stream().forEach(userRoleDTO -> {
-                errStr.append(userRoleDTO.getRoleName() + ";");
-            });
-            Asserts.fail(errStr.toString() + "角色需要用户具备科室信息");
+            if(!deptFlag){
+                checkRoles.stream().forEach(userRoleDTO -> {
+                    errStr.append(userRoleDTO.getRoleName() + ";");
+                });
+            }
+            if(StringUtil.isNotEmpty(errStr.toString())){
+                Asserts.fail(errStr.toString() + "角色需要用户具备科室信息");
+            }
         }
     }
 
@@ -337,6 +343,16 @@ public class UserManagementFacade {
         if (ListUtil.isEmpty(addHospitalTreeVO.getDepts()) && ListUtil.isEmpty(addHospitalTreeVO.getHospitals())) {
             Asserts.fail("用户关联的医院或科室都为空");
         }
+        //如果选择科室没有添加科室对应的医院
+        addHospitalTreeVO.getHospitals().addAll(deptFacade.list(new QueryWrapper<Dept>()
+                .in("id",addHospitalTreeVO.getDepts())
+                .eq("is_deleted",IsDeleteEnum.N.getKey())
+                .eq("status",StatusEnum.Enable.getKey())).stream().map(Dept::getHospitalId).collect(Collectors.toList()));
+        //去重
+        Set<Long> hospitalSet = new HashSet<>(addHospitalTreeVO.getHospitals());
+        List<Long> hospitals = new ArrayList<>(hospitalSet);
+        addHospitalTreeVO.setHospitals(hospitals);
+
         //插入用户和科室的关系(没有科室信息默认为全院)
         if (ListUtil.isNotEmpty(addHospitalTreeVO.getDepts())) {
             addHospitalTreeVO.getDepts().stream().forEach(deptID -> {
@@ -492,16 +508,19 @@ public class UserManagementFacade {
     public GetUserDTO getUserById(Long userId) {
         GetUserDTO getUserDTO = new GetUserDTO();
         //1.获取用户的基本信息
-        BeanUtils.copyProperties(userFacade.getById(userId), getUserDTO);
+        User user = userFacade.getById(userId);
+        if(user==null){
+            Asserts.fail("该用户不存在请刷新重试~");
+        }
+        BeanUtils.copyProperties(user, getUserDTO);
         //2.获取当前用户的组织类型
         Hospital hospital = hospitalFacade.getById(SysUserUtils.getCurrentHospitalId());
         //3.获取查询用户的科室id列表、医院id列表
         List<Long> hospitals = hospitalUserFacade.list(new QueryWrapper<HospitalUser>()
                 .eq("user_id", userId)
                 .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(HospitalUser::getHospitalId).collect(Collectors.toList());
-        List<Long> depts = deptUserFacade.list(new QueryWrapper<DeptUser>()
-                .eq("user_id", userId)
-                .eq("is_deleted", IsDeleteEnum.N.getKey())).stream().map(DeptUser::getDeptId).collect(Collectors.toList());
+        //如果用户属于某医院但是没有科室信息默认为全院
+        List<GetUserHospitalDeptDTO> userHospitalDepts = hospitalUserFacade.getBaseMapper().getUserHospitaDeptById(userId);
         //3.2获取当前登录用户的组织机构树
         //获取当前医院的树状结构
         List<GetHospitalTreeDTO> hospitalTrees = hospitalFacade.getBaseMapper()
@@ -510,7 +529,7 @@ public class UserManagementFacade {
         Map<Long, List<GetHospitalTreeDTO>> hospitalMap = EntityUtil.makeEntityListMap(hospitalTrees, "parentId");
         //深度遍历拼装结果
         List<GetHospitalTreeDTO> hospitalTree = hospitalMap.get(hospital.getParentId());
-        getHospitalDeptInfo(hospitalMap, hospitals, depts, hospitalTree);
+        getHospitalDeptInfo(hospitalMap, hospitals, userHospitalDepts, hospitalTree);
         getUserDTO.setHospitals(hospitalTree);
 
         //4.获取用户的角色
@@ -525,41 +544,43 @@ public class UserManagementFacade {
      * @param hospital    当前医院
      * @param hospitalMap 医院集
      */
-    public void getSonHospital(GetHospitalTreeDTO hospital, Map<Long, List<GetHospitalTreeDTO>> hospitalMap, List<Long> hospitals, List<Long> depts) {
-        //通过查询用户所在的医院集添加关联关系
-        if (hospitals.contains(hospital.getHospitalId())) {
-            hospital.setRelation(RelationEnum.Y.getName());
-        }
+    public void getSonHospital(GetHospitalTreeDTO hospital, Map<Long, List<GetHospitalTreeDTO>> hospitalMap, List<Long> hospitals, List<GetUserHospitalDeptDTO> userHospitalDepts) {
         List<GetHospitalTreeDTO> hospitalTreeDTOS = hospitalMap.get(hospital.getHospitalId());
         if (ListUtil.isNotEmpty(hospitalTreeDTOS)) {
             hospital.setChildren(hospitalTreeDTOS);
-            getHospitalDeptInfo(hospitalMap, hospitals, depts, hospitalTreeDTOS);
+            getHospitalDeptInfo(hospitalMap, hospitals, userHospitalDepts, hospitalTreeDTOS);
         }
     }
 
     /**
      * @param hospitalMap      医院结果级
      * @param hospitals        查询用户所在医院集
-     * @param depts            查询用户所在科室集
+     * @param userHospitalDepts 查询用户所在科室集
      * @param hospitalTreeDTOS 当前遍历医院集
      * @Description
      * @Return void
      */
-    private void getHospitalDeptInfo(Map<Long, List<GetHospitalTreeDTO>> hospitalMap, List<Long> hospitals, List<Long> depts, List<GetHospitalTreeDTO> hospitalTreeDTOS) {
+    private void getHospitalDeptInfo(Map<Long, List<GetHospitalTreeDTO>> hospitalMap, List<Long> hospitals, List<GetUserHospitalDeptDTO> userHospitalDepts, List<GetHospitalTreeDTO> hospitalTreeDTOS) {
 
         for (GetHospitalTreeDTO bean : hospitalTreeDTOS) {
             //真实医院添加科室信息
             if (HospitalTypeEnum.SINGLE_HOSPITAL.getKey() == Integer.parseInt(bean.getType())) {
                 List<GetDeptTreeDTO> getDeptTreeDTOList = deptFacade.getBaseMapper().getDeptInfo(bean.getHospitalId());
                 //通过查询用户所在的科室集添加关联关系
+                List<Long> depts = userHospitalDepts.stream().map(GetUserHospitalDeptDTO::getDeptId).collect(Collectors.toList());
+                List<Long> dHospitals = userHospitalDepts.stream().map(GetUserHospitalDeptDTO::getHospitalId).collect(Collectors.toList());
                 getDeptTreeDTOList.stream().forEach(getDeptTreeDTO -> {
                     if (depts.contains(getDeptTreeDTO.getDeptId())) {
                         getDeptTreeDTO.setRelation(RelationEnum.Y.getName());
+                        //如果只有医院没有科室则是医院全选
+                    }else if(hospitals.contains(bean.getHospitalId())&&!dHospitals.contains(bean.getHospitalId())){
+                        getDeptTreeDTO.setRelation(RelationEnum.Y.getName());
+                        bean.setRelation(RelationEnum.Y.getName());
                     }
                 });
                 bean.setDepts(getDeptTreeDTOList);
             }
-            getSonHospital(bean, hospitalMap, hospitals, depts);
+            getSonHospital(bean, hospitalMap, hospitals, userHospitalDepts);
         }
     }
 
@@ -649,6 +670,9 @@ public class UserManagementFacade {
         }
         out.put("jump", jumpFlag);
         out.put("software", userSoftwareHospitals);
+        UserInfoDTO userInfo = new UserInfoDTO();
+        BeanUtils.copyProperties(userFacade.getById(SysUserUtils.getCurrentPrincipleId()),userInfo);
+        out.put("userInfo",userInfo);
         return out;
     }
 

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

@@ -60,14 +60,14 @@ public class DataAuthManagementController {
     @ApiOperation(value = "删除数据权限[by:songxl]")
     @PostMapping("/deleteAuth")
     @Transactional
-    public CommonResult<Boolean> deleteAuth(@RequestParam @Valid @NotNull(message = "数据权限id为空") Long Id) {
-        return CommonResult.success(dataAuthHandleFacade.deleteDataAuth(Id));
+    public CommonResult<Boolean> deleteAuth(@RequestParam @Valid @NotNull(message = "数据权限id为空") Long id) {
+        return CommonResult.success(dataAuthHandleFacade.deleteDataAuth(id));
     }
 
     @ApiOperation(value = "查看数据权限[by:songxl]")
     @PostMapping("/getDataAuthById")
-    public CommonResult<GetDataAuthByIdDTO> getDataAuthById(@RequestParam @Valid @NotNull(message = "数据权限id为空") Long Id) {
-        return CommonResult.success(dataAuthHandleFacade.getDataAuthById(Id));
+    public CommonResult<GetDataAuthByIdDTO> getDataAuthById(@RequestParam @Valid @NotNull(message = "数据权限id为空") Long id) {
+        return CommonResult.success(dataAuthHandleFacade.getDataAuthById(id));
     }
 
     @ApiOperation(value = "获取医生列表[by:songxl]")

+ 11 - 4
security-center/src/main/java/com/lantone/security/web/DictionaryManagementController.java

@@ -32,11 +32,18 @@ public class DictionaryManagementController {
     @Autowired
     private DictionaryManagementFacade dictionaryManagementFacade;
 
-    @ApiOperation(value = "新增/修改字典[by:cy]")
-    @PostMapping("/saveDictionary")
+    @ApiOperation(value = "新增字典[by:cy]")
+    @PostMapping("/addDictionary")
     @Transactional
-    public CommonResult<Object> saveDictionary(@RequestBody @Valid SaveDictionaryVO saveDictionaryVO) {
-        return CommonResult.success(dictionaryManagementFacade.saveDictionary(saveDictionaryVO));
+    public CommonResult<Object> addDictionary(@RequestBody @Valid SaveDictionaryVO saveDictionaryVO) {
+        return CommonResult.success(dictionaryManagementFacade.addDictionary(saveDictionaryVO));
+    }
+
+    @ApiOperation(value = "修改字典[by:cy]")
+    @PostMapping("/updateDictionary")
+    @Transactional
+    public CommonResult<Object> updateDictionary(@RequestBody @Valid SaveDictionaryVO saveDictionaryVO) {
+        return CommonResult.success(dictionaryManagementFacade.updateDictionary(saveDictionaryVO));
     }
 
     @ApiOperation(value = "查看字典管理[by:cy]")

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

@@ -48,19 +48,24 @@ public class HospitalManagementController {
         return CommonResult.success(hospitalManagementFacade.updateHospital(updateHospitalVO));
     }
 
-    @ApiOperation(value = "删除组织 [by:songxl]")
+    @ApiOperation(value = "删除组织 [by:songxl]",
+            notes = "type:组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院 5:科室),必填<br>")
     @PostMapping("/deleteHospital")
     @Transactional
-    public CommonResult<Boolean> deleteHospital(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId) {
-        return CommonResult.success(hospitalManagementFacade.deleteHospital(HospitalId));
+    public CommonResult<Boolean> deleteHospital(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId,
+                                                @RequestParam @Valid @NotBlank(message = "组织机构类型为空") String type) {
+        return CommonResult.success(hospitalManagementFacade.deleteHospital(HospitalId,type));
     }
 
 
-    @ApiOperation(value = "禁用|启用组织 [by:songxl]")
+    @ApiOperation(value = "禁用|启用组织 [by:songxl]",
+            notes = "type:组织机构类型(0:AI病案质控平台 1:集团医院 2:医共 3:医联 4:医院 5:科室),必填<br>")
     @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));
+    public CommonResult<Boolean> disableHospital(@RequestParam @Valid @NotNull(message = "组织编号为空") Long HospitalId,
+                                                 @RequestParam @Valid @NotBlank(message = "启用禁用status为空") String status,
+                                                 @RequestParam @Valid @NotBlank(message = "组织机构类型为空") String type) {
+        return CommonResult.success(hospitalManagementFacade.disableHospital(HospitalId,status,type));
     }
 
     @ApiOperation(value = "查看功能 [by:songxl]",

+ 11 - 4
security-center/src/main/java/com/lantone/security/web/HospitalSetManagementController.java

@@ -32,11 +32,18 @@ public class HospitalSetManagementController {
     @Autowired
     private HospitalSetManagementFacade hospitalSetManagementFacade;
 
-    @ApiOperation(value = "新增/修改参数[by:cy]")
-    @PostMapping("/saveHospitalSet")
+    @ApiOperation(value = "新增参数[by:cy]")
+    @PostMapping("/addHospitalSet")
     @Transactional
-    public CommonResult<Object> saveHospitalSet(@RequestBody @Valid SaveHospitalSetVO saveHospitalSetVO) {
-        return CommonResult.success(hospitalSetManagementFacade.saveHospitalSet(saveHospitalSetVO));
+    public CommonResult<Object> addHospitalSet(@RequestBody @Valid SaveHospitalSetVO saveHospitalSetVO) {
+        return CommonResult.success(hospitalSetManagementFacade.addHospitalSet(saveHospitalSetVO));
+    }
+
+    @ApiOperation(value = "修改参数[by:cy]")
+    @PostMapping("/updateHospitalSet")
+    @Transactional
+    public CommonResult<Object> updateHospitalSet(@RequestBody @Valid SaveHospitalSetVO saveHospitalSetVO) {
+        return CommonResult.success(hospitalSetManagementFacade.updateHospitalSet(saveHospitalSetVO));
     }
 
     @ApiOperation(value = "查看参数管理[by:cy]")

+ 12 - 4
security-center/src/main/java/com/lantone/security/web/RegionManagementController.java

@@ -8,6 +8,7 @@ import com.lantone.common.vo.CheckSolveRegionVO;
 import com.lantone.common.vo.GetDeptListVO;
 import com.lantone.common.vo.GetRegionVO;
 import com.lantone.common.vo.SaveRegionVO;
+import com.lantone.common.vo.UpdateRegionVO;
 import com.lantone.security.facade.RegionManagementFacade;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -35,11 +36,18 @@ public class RegionManagementController {
     @Autowired
     private RegionManagementFacade sysRegionFacade;
 
-    @ApiOperation(value = "新增/修改病区[by:cy]")
-    @PostMapping("/saveRegion")
+    @ApiOperation(value = "新增病区[by:cy]")
+    @PostMapping("/addRegion")
     @Transactional
-    public CommonResult<Object> saveRegion(@RequestBody @Valid SaveRegionVO saveRegionVo) {
-        return CommonResult.success(sysRegionFacade.saveRegion(saveRegionVo));
+    public CommonResult<Object> addRegion(@RequestBody @Valid SaveRegionVO saveRegionVo) {
+        return CommonResult.success(sysRegionFacade.addRegion(saveRegionVo));
+    }
+
+    @ApiOperation(value = "修改病区[by:cy]")
+    @PostMapping("/updateRegion")
+    @Transactional
+    public CommonResult<Object> updateRegion(@RequestBody UpdateRegionVO updateRegionVO) {
+        return CommonResult.success(sysRegionFacade.updateRegion(updateRegionVO));
     }
 
     @ApiOperation(value = "校验/禁用/启用病区管理[by:cy]")

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

@@ -100,7 +100,7 @@ public class RoleManagementController {
 
     @ApiOperation(value = "获取当前登录用户的显示的菜单列表 [by:songxl]")
     @PostMapping("/getUserShowMemuTree")
-    public CommonResult<Map<Long, List<GetUserShowTreeDTO>>> getUserShowMemuTree() {
+    public CommonResult<Map<String, Object>> getUserShowMemuTree() {
         return CommonResult.success(roleManagementFacade.getUserShowMemuTree());
     }
 }

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

@@ -34,7 +34,7 @@ import java.util.Map;
  * @time: 2021/7/20 12:39
  */
 @RestController
-@Api(value = "用户管理API", tags = { "用户管理API" })
+@Api(value = "用户管理API", tags = {"用户管理API"})
 @RequestMapping("/userManage")
 public class UserManagementController {
 
@@ -99,9 +99,10 @@ public class UserManagementController {
     public CommonResult<IPage<GetUserPageDTO>> getUserPage(@RequestBody @Valid GetUserPageVO getUserPageVO) {
         return CommonResult.success(userManagementFacade.getUserPage(getUserPageVO));
     }
+
     @ApiOperation(value = "登录成功获取用户的系统医院信息 [by:songxl]")
     @PostMapping("/getUserHospitals")
-    public CommonResult<Map<String,Object>> getUserHospitals() {
+    public CommonResult<Map<String, Object>> getUserHospitals() {
         return CommonResult.success(userManagementFacade.getUserHospitals());
     }
 }