Browse Source

Merge branch 'main' into hrx

# Conflicts:
#	ruoyi-admin/src/main/resources/application-dev.yml
HuRongxin 3 months ago
parent
commit
e0a37d9acf
29 changed files with 969 additions and 41 deletions
  1. 105 0
      ruoyi-admin/src/main/java/org/dromara/web/controller/TreatmentUserController.java
  2. 118 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/TreatmentUser.java
  3. 139 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/bo/TreatmentUserBo.java
  4. 161 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/vo/TreatmentUserVo.java
  5. 16 0
      ruoyi-admin/src/main/java/org/dromara/web/mapper/TreatmentUserMapper.java
  6. 69 0
      ruoyi-admin/src/main/java/org/dromara/web/service/ITreatmentUserService.java
  7. 149 0
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/TreatmentUserServiceImpl.java
  8. 6 6
      ruoyi-admin/src/main/resources/application-dev.yml
  9. 1 1
      ruoyi-admin/src/main/resources/application-prod.yml
  10. 2 2
      ruoyi-admin/src/main/resources/application.yml
  11. 7 0
      ruoyi-admin/src/main/resources/mapper/workbench/TreatmentUserMapper.xml
  12. 9 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/BizConst.java
  13. 1 1
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/TenantConstants.java
  14. 42 24
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java
  15. 12 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java
  16. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java
  17. 12 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java
  18. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java
  19. 5 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java
  20. 4 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java
  21. 10 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java
  22. 2 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
  23. 7 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java
  24. 34 5
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
  25. 30 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java
  26. 13 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java
  27. 1 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
  28. 3 0
      script/sql/ry_vue_5.X.sql
  29. 1 0
      script/sql/ry_workflow.sql

+ 105 - 0
ruoyi-admin/src/main/java/org/dromara/web/controller/TreatmentUserController.java

@@ -0,0 +1,105 @@
+package org.dromara.web.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.web.domain.bo.TreatmentUserBo;
+import org.dromara.web.domain.vo.TreatmentUserVo;
+import org.dromara.web.service.ITreatmentUserService;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 【工作台 待诊患者】
+ *
+ * @author Lion Li
+ * @date 2025-06-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/workbench/treatmentUser")
+public class TreatmentUserController extends BaseController {
+
+    private final ITreatmentUserService treatmentUserService;
+
+    /**
+     * 查询【待诊患者】列表
+     */
+    @SaCheckPermission("workbench:treatmentUser:list")
+    @GetMapping("/list")
+    public TableDataInfo<TreatmentUserVo> list(TreatmentUserBo bo, PageQuery pageQuery) {
+        return treatmentUserService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出【待诊患者】列表
+     */
+    @SaCheckPermission("workbench:treatmentUser:export")
+    @Log(title = "【待诊患者】", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(TreatmentUserBo bo, HttpServletResponse response) {
+        List<TreatmentUserVo> list = treatmentUserService.queryList(bo);
+        ExcelUtil.exportExcel(list, "【待诊患者】", TreatmentUserVo.class, response);
+    }
+
+    /**
+     * 获取【待诊患者】详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("workbench:treatmentUser:query")
+    @GetMapping("/{id}")
+    public R<TreatmentUserVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(treatmentUserService.queryById(id));
+    }
+
+    /**
+     * 新增【待诊患者】
+     */
+    @SaCheckPermission("workbench:treatmentUser:add")
+    @Log(title = "【待诊患者】", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody TreatmentUserBo bo) {
+        return toAjax(treatmentUserService.insertByBo(bo));
+    }
+
+    /**
+     * 修改【待诊患者】
+     */
+    @SaCheckPermission("workbench:treatmentUser:edit")
+    @Log(title = "【待诊患者】", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody TreatmentUserBo bo) {
+        return toAjax(treatmentUserService.updateByBo(bo));
+    }
+
+    /**
+     * 删除【待诊患者】
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("workbench:treatmentUser:remove")
+    @Log(title = "【待诊患者】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(treatmentUserService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 118 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/TreatmentUser.java

@@ -0,0 +1,118 @@
+package org.dromara.web.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 【待诊患者】对象 treatment_user
+ *
+ * @author Lion Li
+ * @date 2025-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("treatment_user")
+public class TreatmentUser extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 看诊类型
+     */
+    private String type;
+
+    /**
+     * 诊疗卡号
+     */
+    private String treatNum;
+
+    /**
+     * 门诊号
+     */
+    private String outpatientNo;
+
+    /**
+     * 科室
+     */
+    private Long doorId;
+
+    /**
+     * 姓名
+     */
+    private String treatName;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 年龄
+     */
+    private String age;
+
+    /**
+     * 身高
+     */
+    private String height;
+
+    /**
+     * 体重
+     */
+    private String weight;
+
+    /**
+     * 过敏食物
+     */
+    private String allergyFoot;
+
+
+    /**
+     * 过敏药物
+     */
+    private String allergyDrug;
+
+    /**
+     * 体力活动
+     */
+    private String activity;
+
+    /**
+     * 诊断状态
+     */
+    private String medicalType;
+
+    /**
+     * 删除标记
+     */
+    @TableLogic
+    private String delFlag;
+
+    /**
+     * 患者状态
+     */
+    private String treatmentUserStatus;
+
+    /**
+     * 评估状态
+     */
+    private String evaluationStatus;
+
+
+}

+ 139 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/bo/TreatmentUserBo.java

@@ -0,0 +1,139 @@
+package org.dromara.web.domain.bo;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.web.domain.TreatmentUser;
+
+import java.util.Date;
+
+/**
+ * 【请填写功能名称】业务对象 treatment_user
+ *
+ * @author Lion Li
+ * @date 2025-06-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = TreatmentUser.class, reverseConvertGenerate = false)
+public class TreatmentUserBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 看诊类型
+     */
+    private String type;
+
+    /**
+     * 诊疗卡号
+     */
+    private String treatNum;
+
+    /**
+     * 门诊号
+     */
+    private String outpatientNo;
+
+    /**
+     * 科室
+     */
+    private Long doorId;
+
+    /**
+     * 姓名
+     */
+    private String treatName;
+
+    /**
+     * 出生日期
+     */
+    private String birthday;
+
+    /**
+     * 联系电话
+     */
+    private String phoneNum;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 年龄
+     */
+    private String age;
+
+    /**
+     * 身高
+     */
+    private String height;
+
+    /**
+     * 体重
+     */
+    private String weight;
+
+    /**
+     * 过敏食物
+     */
+    private String allergyFoot;
+
+    /**
+     * 过敏药物
+     */
+    private String allergyDrug;
+
+    /**
+     * 体力活动
+     */
+    private String activity;
+
+    /**
+     * 床号
+     */
+    private String bedNo;
+
+    /**
+     * 病区
+     */
+    private String inpatientWard;
+
+    /**
+     * 入院时间
+     */
+    private Date admissionDate;
+
+    /*查询字段*/
+
+    private String searchFlag;
+
+    /**
+     * 诊断状态
+     */
+    private String medicalType;
+
+    /**
+     * 患者状态
+     */
+    private String treatmentUserStatus;
+
+    /**
+     * 评估状态
+     */
+    private String evaluationStatus;
+}

+ 161 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/TreatmentUserVo.java

@@ -0,0 +1,161 @@
+package org.dromara.web.domain.vo;
+
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.web.domain.TreatmentUser;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】视图对象 treatment_user
+ *
+ * @author Lion Li
+ * @date 2025-06-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = TreatmentUser.class)
+public class TreatmentUserVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 看诊类型
+     */
+    @ExcelProperty(value = "看诊类型")
+    private String type;
+
+    /**
+     * 诊疗卡号
+     */
+    @ExcelProperty(value = "诊疗卡号")
+    private String treatNum;
+
+    /**
+     * 门诊号
+     */
+    @ExcelProperty(value = "门诊号")
+    private String outpatientNo;
+
+    /**
+     * 科室
+     */
+    @ExcelProperty(value = "科室")
+    private Long doorId;
+
+    /**
+     * 姓名
+     */
+    @ExcelProperty(value = "姓名")
+    private String treatName;
+
+    /**
+     * 出生日期
+     */
+    @ExcelProperty(value = "出生日期")
+    private String birthday;
+
+    /**
+     * 联系电话
+     */
+    @ExcelProperty(value = "联系电话")
+    private String phoneNum;
+
+    /**
+     * 性别
+     */
+    @ExcelProperty(value = "性别 ")
+    private String sex;
+
+    /**
+     * 身份证号
+     */
+    @ExcelProperty(value = "身份证号")
+    private String idCard;
+
+    /**
+     * 年龄
+     */
+    @ExcelProperty(value = "年龄")
+    private String age;
+
+    /**
+     * 身高
+     */
+    @ExcelProperty(value = "身高")
+    private String height;
+
+    /**
+     * 体重
+     */
+    @ExcelProperty(value = "体重")
+    private String weight;
+
+    /**
+     * 过敏食物
+     */
+    @ExcelProperty(value = "过敏食物")
+    private String allergyFoot;
+
+    /**
+     * 过敏药物
+     */
+    @ExcelProperty(value = "过敏药物")
+    private String allergyDrug;
+
+    /**
+     * 体力活动
+     */
+    @ExcelProperty(value = "体力活动")
+    private String activity;
+
+    /**
+     * 床号
+     */
+    @ExcelProperty(value = "床号")
+    private String bedNo;
+
+    /**
+     * 病区
+     */
+    @ExcelProperty(value = "病区")
+    private String inpatientWard;
+
+    /**
+     * 入院时间
+     */
+    @ExcelProperty(value = "入院时间")
+    private Date admissionDate;
+
+    /**
+     * 诊断状态
+     */
+    private String medicalType;
+
+    /**
+     * 患者状态
+     */
+    private String treatmentUserStatus;
+
+    /**
+     * 评估状态
+     */
+    private String evaluationStatus;
+
+}

+ 16 - 0
ruoyi-admin/src/main/java/org/dromara/web/mapper/TreatmentUserMapper.java

@@ -0,0 +1,16 @@
+package org.dromara.web.mapper;
+
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.web.domain.TreatmentUser;
+import org.dromara.web.domain.vo.TreatmentUserVo;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-06-24
+ */
+public interface TreatmentUserMapper extends BaseMapperPlus<TreatmentUser, TreatmentUserVo> {
+
+}

+ 69 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/ITreatmentUserService.java

@@ -0,0 +1,69 @@
+package org.dromara.web.service;
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.web.domain.bo.TreatmentUserBo;
+import org.dromara.web.domain.vo.TreatmentUserVo;
+
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2025-06-24
+ */
+public interface ITreatmentUserService {
+
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 主键
+     * @return 【请填写功能名称】
+     */
+    TreatmentUserVo queryById(Long id);
+
+    /**
+     * 分页查询【请填写功能名称】列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 【请填写功能名称】分页列表
+     */
+    TableDataInfo<TreatmentUserVo> queryPageList(TreatmentUserBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的【请填写功能名称】列表
+     *
+     * @param bo 查询条件
+     * @return 【请填写功能名称】列表
+     */
+    List<TreatmentUserVo> queryList(TreatmentUserBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param bo 【请填写功能名称】
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(TreatmentUserBo bo);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param bo 【请填写功能名称】
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(TreatmentUserBo bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 149 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/impl/TreatmentUserServiceImpl.java

@@ -0,0 +1,149 @@
+package org.dromara.web.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+import org.dromara.web.domain.TreatmentUser;
+import org.dromara.web.domain.bo.TreatmentUserBo;
+import org.dromara.web.domain.vo.TreatmentUserVo;
+import org.dromara.web.mapper.TreatmentUserMapper;
+import org.dromara.web.service.ITreatmentUserService;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-06-24
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TreatmentUserServiceImpl implements ITreatmentUserService {
+
+    private final TreatmentUserMapper baseMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 主键
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public TreatmentUserVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询【请填写功能名称】列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 【请填写功能名称】分页列表
+     */
+    @Override
+    public TableDataInfo<TreatmentUserVo> queryPageList(TreatmentUserBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<TreatmentUser> lqw = buildQueryWrapper(bo);
+        Page<TreatmentUserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的【请填写功能名称】列表
+     *
+     * @param bo 查询条件
+     * @return 【请填写功能名称】列表
+     */
+    @Override
+    public List<TreatmentUserVo> queryList(TreatmentUserBo bo) {
+        LambdaQueryWrapper<TreatmentUser> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<TreatmentUser> buildQueryWrapper(TreatmentUserBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<TreatmentUser> lqw = Wrappers.lambdaQuery();
+        lqw.orderByAsc(TreatmentUser::getId);
+        lqw.eq(StringUtils.isNotBlank(bo.getType()), TreatmentUser::getType, bo.getType());
+        lqw.eq(bo.getDoorId() != null, TreatmentUser::getDoorId, bo.getDoorId());
+        lqw.eq(bo.getEvaluationStatus() != null, TreatmentUser::getEvaluationStatus, bo.getEvaluationStatus());
+        lqw.eq(bo.getTreatmentUserStatus() != null, TreatmentUser::getTreatmentUserStatus, bo.getTreatmentUserStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getTreatNum()), TreatmentUser::getTreatNum, bo.getTreatNum());
+        lqw.eq(StringUtils.isNotBlank(bo.getOutpatientNo()), TreatmentUser::getOutpatientNo, bo.getOutpatientNo());
+        // 添加searchFlag的多字段模糊查询
+        if (StringUtils.isNotBlank(bo.getSearchFlag())) {
+            lqw.and(wrapper ->
+                wrapper.like(TreatmentUser::getTreatName, bo.getSearchFlag())
+                    .or()
+                    .like(TreatmentUser::getOutpatientNo, bo.getSearchFlag())
+                    .or()
+                    .like(TreatmentUser::getIdCard, bo.getSearchFlag())
+                    .or()
+                    .like(TreatmentUser::getOutpatientNo, bo.getSearchFlag()));
+        }
+        return lqw;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param bo 【请填写功能名称】
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(TreatmentUserBo bo) {
+        TreatmentUser add = MapstructUtils.convert(bo, TreatmentUser.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param bo 【请填写功能名称】
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(TreatmentUserBo bo) {
+        TreatmentUser update = MapstructUtils.convert(bo, TreatmentUser.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(TreatmentUser entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 6 - 6
ruoyi-admin/src/main/resources/application-dev.yml

@@ -13,7 +13,7 @@ spring.boot.admin.client:
 
 --- # snail-job 配置
 snail-job:
-  enabled: true
+  enabled:  false
   # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
   group: "ruoyi_group"
   # SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config` 表
@@ -49,9 +49,9 @@ spring:
           driverClassName: com.mysql.cj.jdbc.Driver
           # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
           # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
-          url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+          url: jdbc:mysql://192.168.1.146:3306/wkx_his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
           username: root
-          password: 123456
+          password: P@ssw0rd
 #        # 从库数据源
 #        slave:
 #          lazy: true
@@ -98,11 +98,11 @@ spring:
 spring.data:
   redis:
     # 地址
-    host: localhost
+    host: 192.168.1.146
     # 端口,默认为6379
     port: 6379
     # 数据库索引
-    database: 0
+    database: 14
     # redis 密码必须配置
 #    password: ruoyi123
     # 连接超时时间
@@ -121,7 +121,7 @@ redisson:
   # 单节点配置
   singleServerConfig:
     # 客户端名称 不能用中文
-    clientName: RuoYi-Vue-Plus
+    clientName: wkx-his
     # 最小空闲连接数
     connectionMinimumIdleSize: 8
     # 连接池大小

+ 1 - 1
ruoyi-admin/src/main/resources/application-prod.yml

@@ -124,7 +124,7 @@ redisson:
   # 单节点配置
   singleServerConfig:
     # 客户端名称 不能用中文
-    clientName: RuoYi-Vue-Plus
+    clientName: wkx-his
     # 最小空闲连接数
     connectionMinimumIdleSize: 32
     # 连接池大小

+ 2 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -52,7 +52,7 @@ user:
 # Spring配置
 spring:
   application:
-    name: RuoYi-Vue-Plus
+    name: wkx-his
   threads:
     # 开启虚拟线程 仅jdk21可用
     virtual:
@@ -263,7 +263,7 @@ websocket:
 --- # warm-flow工作流配置
 warm-flow:
   # 是否开启工作流,默认true
-  enabled: true
+  enabled: false
   # 是否开启设计器ui
   ui: true
   # 默认Authorization,如果有多个token,用逗号分隔

+ 7 - 0
ruoyi-admin/src/main/resources/mapper/workbench/TreatmentUserMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.dromara.web.mapper.TreatmentUserMapper">
+
+</mapper>

+ 9 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/BizConst.java

@@ -0,0 +1,9 @@
+package org.dromara.common.core.constant;
+
+/**
+ * @author chenYing
+ * @date 2025-06-24 16:12:13
+ **/
+public interface BizConst {
+    String HOSPITAL_ROLE_TYPE = "hospital_role_type";
+}

+ 1 - 1
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/TenantConstants.java

@@ -15,7 +15,7 @@ public interface TenantConstants {
     /**
      * 超级管理员角色 roleKey
      */
-    String SUPER_ADMIN_ROLE_KEY = "superadmin";
+    String SUPER_ADMIN_ROLE_KEY = "SuperAdmin";
 
     /**
      * 租户管理员角色 roleKey

+ 42 - 24
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java

@@ -14,12 +14,20 @@ import org.dromara.system.domain.vo.SysDeptVo;
 import org.dromara.system.service.ISysDeptService;
 import org.dromara.system.service.ISysPostService;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
 /**
- * 部门信息
+ * 科室信息
  *
  * @author Lion Li
  */
@@ -33,7 +41,7 @@ public class SysDeptController extends BaseController {
     private final ISysPostService postService;
 
     /**
-     * 获取部门列表
+     * 获取科室列表
      */
     @SaCheckPermission("system:dept:list")
     @GetMapping("/list")
@@ -43,9 +51,19 @@ public class SysDeptController extends BaseController {
     }
 
     /**
-     * 查询部门列表(排除节点)
+     * 状态修改
+     */
+    @SaCheckPermission("system:dept:edit")
+    @Log(title = "科室管理", businessType = BusinessType.UPDATE)
+    @PutMapping("/changeStatus")
+    public R<Void> changeStatus(@RequestBody SysDeptBo deptBo) {
+        return toAjax(deptService.updateDeptStatus(deptBo));
+    }
+
+    /**
+     * 查询科室列表(排除节点)
      *
-     * @param deptId 部门ID
+     * @param deptId 科室ID
      */
     @SaCheckPermission("system:dept:list")
     @GetMapping("/list/exclude/{deptId}")
@@ -57,9 +75,9 @@ public class SysDeptController extends BaseController {
     }
 
     /**
-     * 根据部门编号获取详细信息
+     * 根据科室编号获取详细信息
      *
-     * @param deptId 部门ID
+     * @param deptId 科室ID
      */
     @SaCheckPermission("system:dept:query")
     @GetMapping(value = "/{deptId}")
@@ -69,67 +87,67 @@ public class SysDeptController extends BaseController {
     }
 
     /**
-     * 新增部门
+     * 新增科室
      */
     @SaCheckPermission("system:dept:add")
-    @Log(title = "部门管理", businessType = BusinessType.INSERT)
+    @Log(title = "科室管理", businessType = BusinessType.INSERT)
     @PostMapping
     public R<Void> add(@Validated @RequestBody SysDeptBo dept) {
         if (!deptService.checkDeptNameUnique(dept)) {
-            return R.fail("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
+            return R.fail("新增科室'" + dept.getDeptName() + "'失败,科室名称已存在");
         }
         return toAjax(deptService.insertDept(dept));
     }
 
     /**
-     * 修改部门
+     * 修改科室
      */
     @SaCheckPermission("system:dept:edit")
-    @Log(title = "部门管理", businessType = BusinessType.UPDATE)
+    @Log(title = "科室管理", businessType = BusinessType.UPDATE)
     @PutMapping
     public R<Void> edit(@Validated @RequestBody SysDeptBo dept) {
         Long deptId = dept.getDeptId();
         deptService.checkDeptDataScope(deptId);
         if (!deptService.checkDeptNameUnique(dept)) {
-            return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
+            return R.fail("修改科室'" + dept.getDeptName() + "'失败,科室名称已存在");
         } else if (dept.getParentId().equals(deptId)) {
-            return R.fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
+            return R.fail("修改科室'" + dept.getDeptName() + "'失败,上级科室不能是自己");
         } else if (StringUtils.equals(SystemConstants.DISABLE, dept.getStatus())) {
             if (deptService.selectNormalChildrenDeptById(deptId) > 0) {
-                return R.fail("该部门包含未停用的子部门!");
+                return R.fail("该科室包含未停用的子科室!");
             } else if (deptService.checkDeptExistUser(deptId)) {
-                return R.fail("该部门下存在已分配用户,不能禁用!");
+                return R.fail("该科室下存在已分配用户,不能禁用!");
             }
         }
         return toAjax(deptService.updateDept(dept));
     }
 
     /**
-     * 删除部门
+     * 删除科室
      *
-     * @param deptId 部门ID
+     * @param deptId 科室ID
      */
     @SaCheckPermission("system:dept:remove")
-    @Log(title = "部门管理", businessType = BusinessType.DELETE)
+    @Log(title = "科室管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{deptId}")
     public R<Void> remove(@PathVariable Long deptId) {
         if (deptService.hasChildByDeptId(deptId)) {
-            return R.warn("存在下级部门,不允许删除");
+            return R.warn("存在下级科室,不允许删除");
         }
         if (deptService.checkDeptExistUser(deptId)) {
-            return R.warn("部门存在用户,不允许删除");
+            return R.warn("科室存在用户,不允许删除");
         }
         if (postService.countPostByDeptId(deptId) > 0) {
-            return R.warn("部门存在岗位,不允许删除");
+            return R.warn("科室存在岗位,不允许删除");
         }
         deptService.checkDeptDataScope(deptId);
         return toAjax(deptService.deleteDeptById(deptId));
     }
 
     /**
-     * 获取部门选择框列表
+     * 获取科室选择框列表
      *
-     * @param deptIds 部门ID串
+     * @param deptIds 科室ID串
      */
     @SaCheckPermission("system:dept:query")
     @GetMapping("/optionselect")

+ 12 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java

@@ -9,6 +9,7 @@ import org.dromara.common.core.domain.R;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.SysDictData;
 import org.dromara.system.domain.bo.SysDictDataBo;
 import org.dromara.system.domain.vo.SysDictDataVo;
 import org.dromara.system.service.ISysDictDataService;
@@ -19,7 +20,9 @@ import org.springframework.web.bind.annotation.*;
 
 import jakarta.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 数据字典信息
@@ -44,6 +47,15 @@ public class SysDictDataController extends BaseController {
         return dictDataService.selectPageDictDataList(dictData, pageQuery);
     }
 
+    /**
+     * 查询字典数据列表
+     */
+    @SaCheckPermission("system:dict:list")
+    @GetMapping("/listByType")
+    public R<Map<String, List<SysDictDataVo>>> listByType(@RequestParam String dictType) {
+        return dictDataService.selectGroupByType(Arrays.stream(dictType.split(",")).toList());
+    }
+
     /**
      * 导出字典数据列表
      */

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java

@@ -83,6 +83,11 @@ public class SysDept extends TenantEntity {
      */
     private String ancestors;
 
+    /**
+     * 科室描述
+     */
+    private String remark;
+
     /**
      * 子部门
      */

+ 12 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java

@@ -1,5 +1,6 @@
 package org.dromara.system.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -31,6 +32,17 @@ public class SysRole extends TenantEntity {
      */
     private String roleName;
 
+    /**
+     * 角色类型
+     */
+    private Integer roleType;
+
+    /**
+     * 角色类型名称
+     */
+    @TableField(exist = false)
+    private String roleTypeName;
+
     /**
      * 角色权限
      */

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java

@@ -31,6 +31,11 @@ public class SysDeptBo extends BaseEntity {
      */
     private Long parentId;
 
+    /**
+     * 科室描述
+     */
+    private String remark;
+
     /**
      * 部门名称
      */

+ 5 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java

@@ -42,6 +42,11 @@ public class SysRoleBo extends BaseEntity {
     @Size(min = 0, max = 100, message = "权限字符长度不能超过{max}个字符")
     private String roleKey;
 
+    /**
+     * 角色类型
+     */
+    private Integer roleType;
+
     /**
      * 显示顺序
      */

+ 4 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java

@@ -32,7 +32,10 @@ public class SysDeptVo implements Serializable {
      */
     @ExcelProperty(value = "部门id")
     private Long deptId;
-
+    /**
+     * 科室描述
+     */
+    private String remark;
     /**
      * 父部门id
      */

+ 10 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java

@@ -38,6 +38,16 @@ public class SysRoleVo implements Serializable {
     @ExcelProperty(value = "角色名称")
     private String roleName;
 
+    /**
+     * 角色类型
+     */
+    private Integer roleType;
+
+    /**
+     * 角色类型
+     */
+    private String roleTypeName;
+
     /**
      * 角色权限字符串
      */

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java

@@ -127,6 +127,8 @@ public interface ISysDeptService {
      */
     int updateDept(SysDeptBo bo);
 
+    int updateDeptStatus(SysDeptBo bo);
+
     /**
      * 删除部门管理信息
      *

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java

@@ -1,11 +1,14 @@
 package org.dromara.system.service;
 
+import org.dromara.common.core.domain.R;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.system.domain.SysDictData;
 import org.dromara.system.domain.bo.SysDictDataBo;
 import org.dromara.system.domain.vo.SysDictDataVo;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 字典 业务层
@@ -17,6 +20,10 @@ public interface ISysDictDataService {
 
     TableDataInfo<SysDictDataVo> selectPageDictDataList(SysDictDataBo dictData, PageQuery pageQuery);
 
+    R<Map<String, SysDictDataVo>> selectMapByType(String type);
+
+    R<Map<String, List<SysDictDataVo>>> selectGroupByType(List<String> typeList);
+
     /**
      * 根据条件分页查询字典数据
      *

+ 34 - 5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -4,7 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.util.ObjUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,6 +15,7 @@ import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.constant.SystemConstants;
 import org.dromara.common.core.domain.dto.DeptDTO;
+import org.dromara.common.core.enums.UserStatus;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.service.DeptService;
 import org.dromara.common.core.utils.*;
@@ -311,13 +314,22 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
     @CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, allEntries = true)
     @Override
     public int insertDept(SysDeptBo bo) {
-        SysDept info = baseMapper.selectById(bo.getParentId());
-        // 如果父节点不为正常状态,则不允许新增子节点
-        if (!SystemConstants.NORMAL.equals(info.getStatus())) {
-            throw new ServiceException("部门停用,不允许新增");
+        if (ObjUtil.isNull(bo.getParentId())) {
+            bo.setParentId(0L);
         }
+
         SysDept dept = MapstructUtils.convert(bo, SysDept.class);
-        dept.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + dept.getParentId());
+        if (dept.getParentId() == 0L) {
+            dept.setAncestors(String.valueOf(0));
+        } else {
+            SysDept info = baseMapper.selectById(bo.getParentId());
+            // 如果父节点不为正常状态,则不允许新增子节点
+            if (!SystemConstants.NORMAL.equals(info.getStatus())) {
+                throw new ServiceException("部门停用,不允许新增");
+            }
+            dept.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + dept.getParentId());
+        }
+
         return baseMapper.insert(dept);
     }
 
@@ -415,4 +427,21 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
         return baseMapper.deleteById(deptId);
     }
 
+    @Override
+    public int updateDeptStatus(SysDeptBo bo) {
+        if (StrUtil.isBlank(bo.getStatus())) {
+            throw new ServiceException("状态不能为空!");
+        }
+        if (ObjUtil.isNull(bo.getDeptId())) {
+            throw new ServiceException("ids不能为空!");
+        }
+        if (!UserStatus.OK.getCode().equals(bo.getStatus())
+            && !UserStatus.DISABLE.getCode().equals(bo.getStatus())) {
+            throw new ServiceException("状态值无效!");
+        }
+
+        return baseMapper.update(Wrappers.lambdaUpdate(SysDept.class)
+            .set(SysDept::getStatus, bo.getStatus())
+            .eq(SysDept::getDeptId, bo.getDeptId()));
+    }
 }

+ 30 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java

@@ -1,10 +1,13 @@
 package org.dromara.system.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.dromara.common.core.constant.CacheNames;
+import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.ObjectUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
@@ -21,7 +24,10 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.cache.annotation.CachePut;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 字典 业务层处理
@@ -34,6 +40,30 @@ public class SysDictDataServiceImpl implements ISysDictDataService {
 
     private final SysDictDataMapper baseMapper;
 
+    @Override
+    public R<Map<String, List<SysDictDataVo>>> selectGroupByType(List<String> typeList) {
+        List<SysDictDataVo> dataList = baseMapper.selectVoList(Wrappers.lambdaQuery(SysDictData.class)
+            .select(SysDictData::getDictLabel, SysDictData::getDictSort, SysDictData::getDictValue, SysDictData::getDictType)
+            .in(SysDictData::getDictType, typeList).orderByAsc(SysDictData::getDictSort));
+        if (CollUtil.isEmpty(dataList)) {
+            return R.ok();
+        }
+
+        return R.ok(dataList.stream().collect(Collectors.groupingBy(k1 -> k1.getDictType())));
+    }
+
+    @Override
+    public R<Map<String, SysDictDataVo>> selectMapByType(String type) {
+        List<SysDictDataVo> dataList = baseMapper.selectVoList(Wrappers.lambdaQuery(SysDictData.class)
+            .select(SysDictData::getDictLabel, SysDictData::getDictSort, SysDictData::getDictValue, SysDictData::getDictType)
+            .eq(SysDictData::getDictType, type));
+        if (CollUtil.isEmpty(dataList)) {
+            return R.ok();
+        }
+
+        return R.ok(dataList.stream().collect(Collectors.toMap(k1 -> k1.getDictValue(), k2 -> k2, (k1, k2) -> k1)));
+    }
+
     @Override
     public TableDataInfo<SysDictDataVo> selectPageDictDataList(SysDictDataBo dictData, PageQuery pageQuery) {
         LambdaQueryWrapper<SysDictData> lqw = buildQueryWrapper(dictData);

+ 13 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.constant.BizConst;
 import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.constant.SystemConstants;
 import org.dromara.common.core.constant.TenantConstants;
@@ -29,11 +30,14 @@ import org.dromara.system.domain.SysRoleDept;
 import org.dromara.system.domain.SysRoleMenu;
 import org.dromara.system.domain.SysUserRole;
 import org.dromara.system.domain.bo.SysRoleBo;
+import org.dromara.system.domain.vo.SysDictDataVo;
 import org.dromara.system.domain.vo.SysRoleVo;
+import org.dromara.system.mapper.SysDictDataMapper;
 import org.dromara.system.mapper.SysRoleDeptMapper;
 import org.dromara.system.mapper.SysRoleMapper;
 import org.dromara.system.mapper.SysRoleMenuMapper;
 import org.dromara.system.mapper.SysUserRoleMapper;
+import org.dromara.system.service.ISysDictDataService;
 import org.dromara.system.service.ISysRoleService;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.stereotype.Service;
@@ -54,10 +58,18 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
     private final SysRoleMenuMapper roleMenuMapper;
     private final SysUserRoleMapper userRoleMapper;
     private final SysRoleDeptMapper roleDeptMapper;
+    private final ISysDictDataService sysDictDataService;
 
     @Override
     public TableDataInfo<SysRoleVo> selectPageRoleList(SysRoleBo role, PageQuery pageQuery) {
         Page<SysRoleVo> page = baseMapper.selectPageRoleList(pageQuery.build(), this.buildQueryWrapper(role));
+        Map<String, SysDictDataVo> dictDataMap = sysDictDataService.selectMapByType(BizConst.HOSPITAL_ROLE_TYPE).getData();
+        page.getRecords().forEach(r -> {
+            SysDictDataVo vo = dictDataMap.get(String.valueOf(r.getRoleType()));
+            if (ObjectUtil.isNotNull(vo)) {
+                r.setRoleTypeName(vo.getDictLabel());
+            }
+        });
         return TableDataInfo.build(page);
     }
 
@@ -82,7 +94,7 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
             .like(StringUtils.isNotBlank(bo.getRoleKey()), "r.role_key", bo.getRoleKey())
             .between(params.get("beginTime") != null && params.get("endTime") != null,
                 "r.create_time", params.get("beginTime"), params.get("endTime"))
-            .orderByAsc("r.role_sort").orderByAsc("r.create_time");
+            .orderByDesc("r.role_sort").orderByDesc("r.create_time");
         return wrapper;
     }
 

+ 1 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -10,6 +10,7 @@
     <sql id="selectRoleVo">
         select distinct r.role_id,
                         r.role_name,
+                        r.role_type,
                         r.role_key,
                         r.role_sort,
                         r.data_scope,

+ 3 - 0
script/sql/ry_vue_5.X.sql

@@ -1,3 +1,6 @@
+create database wkx_his;
+use wkx_his;
+
 -- ----------------------------
 -- 第三方平台授权表
 -- ----------------------------

+ 1 - 0
script/sql/ry_workflow.sql

@@ -1,6 +1,7 @@
 -- ----------------------------
 -- 0、warm-flow-all.sql,地址:https://gitee.com/dromara/warm-flow/blob/master/sql/mysql/warm-flow-all.sql
 -- ----------------------------
+use wkx_his;
 CREATE TABLE `flow_definition`
 (
     `id`              bigint          NOT NULL COMMENT '主键id',