From 0832f454bc53eafee9c6b7eedb32481a021257c3 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 03 十二月 2024 18:38:00 +0800
Subject: [PATCH] 系统管理:数据字典、角色管理接口

---
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java     |   23 
 medicalWaste-admin/src/main/resources/application.yml                                                |    2 
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java       |   45 +
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentInfoController.java  |   18 
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRoleController.java     |   98 ++
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysRoleServiceImpl.java             |   79 ++
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysConfigController.java   |    2 
 medicalWaste-common/src/main/java/com/sinata/common/entity/BaseModel.java                            |   49 -
 medicalWaste-system/src/main/resources/mapper/system/SysRoleMapper.xml                               |   36 +
 medicalWaste-framework/src/main/java/com/sinata/framework/config/handler/MyMetaObjectHandler.java    |   46 +
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java     |    2 
 medicalWaste-system/src/main/java/com/sinata/system/mapper/SysRoleMapper.java                        |   18 
 medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java                        |   86 ++
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictDataController.java |   78 ++
 medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentInfoService.java            |   16 
 medicalWaste-system/src/main/java/com/sinata/system/service/ISysMenuService.java                     |   11 
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentController.java      |   40 +
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDeptController.java     |    2 
 medicalWaste-system/src/main/java/com/sinata/system/mapper/SysUserDepartmentMapper.java              |   18 
 medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictDataService.java                 |   19 
 medicalWaste-admin/src/test/java/DepartmentTest.java                                                 |   30 +
 medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java                    |   88 +++
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentInfoServiceImpl.java   |   20 
 medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictData.java              |   12 
 medicalWaste-common/src/main/java/com/sinata/common/core/text/Convert.java                           |    5 
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysPostController.java     |    2 
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysLoginController.java    |   23 
 medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictDataMapper.java                    |    8 
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysMenuServiceImpl.java             |   26 
 medicalWaste-system/src/main/resources/mapper/system/SysMenuMapper.xml                               |   26 
 medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java                  |   27 
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysProfileController.java  |    2 
 medicalWaste-system/src/main/java/com/sinata/system/service/ISysRoleService.java                     |   36 +
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysUserDepartmentController.java  |   18 
 medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml                         |   44 +
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysIndexController.java    |    2 
 medicalWaste-system/src/main/java/com/sinata/system/enums/DepartmentEnum.java                        |   23 
 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java                     |   28 
 medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java                 |    2 
 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysRoleVO.java                         |   38 +
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java         |   46 +
 medicalWaste-system/src/main/resources/mapper/system/SysDepartmentInfoMapper.xml                     |   28 
 medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictType.java              |   18 
 medicalWaste-system/src/main/java/com/sinata/system/service/SysUserDepartmentService.java            |   16 
 medicalWaste-system/src/main/resources/mapper/system/SysUserDepartmentMapper.xml                     |   17 
 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysDictDataDTO.java                   |   26 
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictTypeServiceImpl.java         |   20 
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserDepartmentServiceImpl.java   |   20 
 medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentInfoMapper.java              |   18 
 medicalWaste-common/src/main/java/com/sinata/common/core/domain/BaseEntity.java                      |   15 
 medicalWaste-system/src/main/java/com/sinata/system/domain/SysUserDepartment.java                    |   43 +
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysNoticeController.java   |    2 
 medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysRole.java                  |   19 
 medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysRoleDTO.java                       |   31 +
 medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictTypeMapper.java                    |    6 
 medicalWaste-admin/src/test/java/MybatisPlusGeneraotr.java                                           |   26 
 medicalWaste-common/src/main/java/com/sinata/common/entity/BasePage.java                             |   55 +
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictTypeController.java |   48 +
 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDepartmentVO.java                   |   39 +
 medicalWaste-system/src/main/java/com/sinata/system/mapper/SysMenuMapper.java                        |    7 
 medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictTypeService.java                 |    6 
 medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java                |   23 
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRegisterController.java |    2 
 medicalWaste-system/src/main/java/com/sinata/system/domain/query/KeyWordQuery.java                   |   21 
 64 files changed, 1,482 insertions(+), 218 deletions(-)

diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentController.java
new file mode 100644
index 0000000..6f17659
--- /dev/null
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentController.java
@@ -0,0 +1,40 @@
+package com.sinata.web.controller.backend;
+
+import com.sinata.common.core.domain.R;
+import com.sinata.system.domain.vo.SysDepartmentVO;
+import com.sinata.system.enums.DepartmentEnum;
+import com.sinata.system.service.SysDepartmentService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 区域表 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Api(tags = {"区域管理相关接口"})
+@RestController
+@RequestMapping("/backend/sysDepartment")
+@RequiredArgsConstructor
+public class SysDepartmentController {
+    private final SysDepartmentService sysDepartmentService;
+
+    /**
+     * 获取区域树
+     * @return
+     */
+    @ApiOperation("获取区域树")
+    @PostMapping("/tree")
+    public R<List<SysDepartmentVO>> list() {
+      return R.ok(sysDepartmentService.listByType(DepartmentEnum.REGION.getCode()));
+    }
+}
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentInfoController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentInfoController.java
new file mode 100644
index 0000000..3f7d9a9
--- /dev/null
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentInfoController.java
@@ -0,0 +1,18 @@
+package com.sinata.web.controller.backend;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 单位信息 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@RestController
+@RequestMapping("/backend/sysDepartmentInfo")
+public class SysDepartmentInfoController {
+
+}
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysUserDepartmentController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysUserDepartmentController.java
new file mode 100644
index 0000000..cba7c2c
--- /dev/null
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysUserDepartmentController.java
@@ -0,0 +1,18 @@
+package com.sinata.web.controller.backend;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 用户区域关系 前端控制器
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@RestController
+@RequestMapping("/backend/sysUserDepartment")
+public class SysUserDepartmentController {
+
+}
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysConfigController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysConfigController.java
similarity index 98%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysConfigController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysConfigController.java
index 65fa2f6..ed77dc7 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysConfigController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysConfigController.java
@@ -1,4 +1,4 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDeptController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDeptController.java
similarity index 98%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDeptController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDeptController.java
index a3b0379..caa41b2 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDeptController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDeptController.java
@@ -1,4 +1,4 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
 import java.util.List;
 import org.apache.commons.lang3.ArrayUtils;
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDictDataController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictDataController.java
similarity index 73%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDictDataController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictDataController.java
index ddaf494..feba2ef 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDictDataController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictDataController.java
@@ -1,8 +1,23 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import com.sinata.common.annotation.Log;
+import com.sinata.common.core.controller.BaseController;
+import com.sinata.common.core.domain.AjaxResult;
+import com.sinata.common.core.domain.R;
+import com.sinata.common.core.domain.entity.SysDictData;
+import com.sinata.common.core.page.TableDataInfo;
+import com.sinata.common.entity.BasePage;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.common.enums.BusinessType;
+import com.sinata.common.utils.StringUtils;
+import com.sinata.common.utils.poi.ExcelUtil;
+import com.sinata.system.domain.dto.SysDictDataDTO;
+import com.sinata.system.domain.vo.SysDictDataVO;
+import com.sinata.system.service.ISysDictDataService;
+import com.sinata.system.service.ISysDictTypeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -14,24 +29,21 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import com.sinata.common.annotation.Log;
-import com.sinata.common.core.controller.BaseController;
-import com.sinata.common.core.domain.AjaxResult;
-import com.sinata.common.core.domain.entity.SysDictData;
-import com.sinata.common.core.page.TableDataInfo;
-import com.sinata.common.enums.BusinessType;
-import com.sinata.common.utils.StringUtils;
-import com.sinata.common.utils.poi.ExcelUtil;
-import com.sinata.system.service.ISysDictDataService;
-import com.sinata.system.service.ISysDictTypeService;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 数据字典信息
  * 
  * @author ruoyi
  */
+@Api(tags = {"数据字典相关接口"})
 @RestController
-@RequestMapping("/system/dict/data")
+@Validated
+@RequestMapping("/backend/system/dict/data")
 public class SysDictDataController extends BaseController
 {
     @Autowired
@@ -40,6 +52,42 @@
     @Autowired
     private ISysDictTypeService dictTypeService;
 
+    /**
+     * 数据字典分页列表
+     *
+     * @param page
+     * @return
+     */
+    @ApiOperation("数据字典分页列表")
+    @PostMapping("/page")
+    public R<PageDTO<SysDictDataVO>> page(@Valid @RequestBody BasePage page) {
+        return R.ok(dictDataService.pageList(page));
+    }
+
+    /**
+     * 新增数据字典
+     *
+     * @return
+     */
+    @ApiOperation("保存数据字典信息")
+    @PostMapping("/save")
+    public R<?> add(@Valid @RequestBody SysDictDataDTO dto) {
+        dictDataService.save(dto);
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     *
+     * @param dictCode
+     * @return
+     */
+    @ApiOperation("删除")
+    @DeleteMapping("/{dictCode}")
+    public R<?> remove(@ApiParam(name = "dictCode", value = "数据字典主键", required = true) @PathVariable("dictCode") Long dictCode) {
+        dictDataService.removeById(dictCode);
+        return R.ok();
+    }
     @PreAuthorize("@ss.hasPermi('system:dict:list')")
     @GetMapping("/list")
     public TableDataInfo list(SysDictData dictData)
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDictTypeController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictTypeController.java
similarity index 83%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDictTypeController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictTypeController.java
index 7056416..89a382b 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysDictTypeController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictTypeController.java
@@ -1,7 +1,15 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import com.sinata.common.annotation.Log;
+import com.sinata.common.core.controller.BaseController;
+import com.sinata.common.core.domain.AjaxResult;
+import com.sinata.common.core.domain.R;
+import com.sinata.common.core.domain.entity.SysDictType;
+import com.sinata.common.enums.BusinessType;
+import com.sinata.common.utils.poi.ExcelUtil;
+import com.sinata.system.service.ISysDictTypeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -13,36 +21,40 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import com.sinata.common.annotation.Log;
-import com.sinata.common.core.controller.BaseController;
-import com.sinata.common.core.domain.AjaxResult;
-import com.sinata.common.core.domain.entity.SysDictType;
-import com.sinata.common.core.page.TableDataInfo;
-import com.sinata.common.enums.BusinessType;
-import com.sinata.common.utils.poi.ExcelUtil;
-import com.sinata.system.service.ISysDictTypeService;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * 数据字典信息
  * 
  * @author ruoyi
  */
+@Api(tags = {"字典类型相关接口"})
 @RestController
-@RequestMapping("/system/dict/type")
+@RequestMapping("/backend/system/dict/type")
 public class SysDictTypeController extends BaseController
 {
     @Autowired
     private ISysDictTypeService dictTypeService;
 
-    @PreAuthorize("@ss.hasPermi('system:dict:list')")
+    @ApiOperation("字典类型列表")
     @GetMapping("/list")
-    public TableDataInfo list(SysDictType dictType)
-    {
-        startPage();
-        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
-        return getDataTable(list);
+    public R<List<SysDictType>> list() {
+        List<SysDictType> list = dictTypeService.list();
+        return R.ok(list);
     }
 
+    //@ApiOperation(value = "字典类型列表")
+    //@PreAuthorize("@ss.hasPermi('system:dict:list')")
+    //@GetMapping("/list")
+    //public TableDataInfo list(SysDictType dictType)
+    //{
+    //    startPage();
+    //    List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
+    //    return getDataTable(list);
+    //}
+
     @Log(title = "字典类型", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('system:dict:export')")
     @PostMapping("/export")
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysIndexController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysIndexController.java
similarity index 93%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysIndexController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysIndexController.java
index 88edf72..23a84e0 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysIndexController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysIndexController.java
@@ -1,4 +1,4 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysLoginController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysLoginController.java
similarity index 89%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysLoginController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysLoginController.java
index 6c3138e..21944f6 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysLoginController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysLoginController.java
@@ -1,12 +1,5 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
-import java.util.List;
-import java.util.Set;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
 import com.sinata.common.constant.Constants;
 import com.sinata.common.core.domain.AjaxResult;
 import com.sinata.common.core.domain.entity.SysMenu;
@@ -16,13 +9,26 @@
 import com.sinata.framework.web.service.SysLoginService;
 import com.sinata.framework.web.service.SysPermissionService;
 import com.sinata.system.service.ISysMenuService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Set;
 
 /**
  * 登录验证
  * 
  * @author ruoyi
  */
+@Api(tags = {"登录相关接口"})
 @RestController
+@RequestMapping("/backend")
 public class SysLoginController
 {
     @Autowired
@@ -41,6 +47,7 @@
      * @return 结果
      */
     @PostMapping("/login")
+    @ApiOperation("管理后台登录")
     public AjaxResult login(@RequestBody LoginBody loginBody)
     {
         AjaxResult ajax = AjaxResult.success();
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysMenuController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
similarity index 97%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysMenuController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
index 4f03785..71d449b 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysMenuController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
@@ -1,6 +1,13 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
-import java.util.List;
+import com.sinata.common.annotation.Log;
+import com.sinata.common.constant.UserConstants;
+import com.sinata.common.core.controller.BaseController;
+import com.sinata.common.core.domain.AjaxResult;
+import com.sinata.common.core.domain.entity.SysMenu;
+import com.sinata.common.enums.BusinessType;
+import com.sinata.common.utils.StringUtils;
+import com.sinata.system.service.ISysMenuService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -12,14 +19,8 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import com.sinata.common.annotation.Log;
-import com.sinata.common.constant.UserConstants;
-import com.sinata.common.core.controller.BaseController;
-import com.sinata.common.core.domain.AjaxResult;
-import com.sinata.common.core.domain.entity.SysMenu;
-import com.sinata.common.enums.BusinessType;
-import com.sinata.common.utils.StringUtils;
-import com.sinata.system.service.ISysMenuService;
+
+import java.util.List;
 
 /**
  * 菜单信息
@@ -36,7 +37,7 @@
     /**
      * 获取菜单列表
      */
-    @PreAuthorize("@ss.hasPermi('system:menu:list')")
+    //@PreAuthorize("@ss.hasPermi('system:menu:list')")
     @GetMapping("/list")
     public AjaxResult list(SysMenu menu)
     {
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysNoticeController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysNoticeController.java
similarity index 98%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysNoticeController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysNoticeController.java
index 1108194..bdabfb1 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysNoticeController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysNoticeController.java
@@ -1,4 +1,4 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysPostController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysPostController.java
similarity index 98%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysPostController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysPostController.java
index 4d1dbaf..66c9172 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysPostController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysPostController.java
@@ -1,4 +1,4 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysProfileController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysProfileController.java
similarity index 98%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysProfileController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysProfileController.java
index b7bb2c1..f2d819f 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysProfileController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysProfileController.java
@@ -1,4 +1,4 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysRegisterController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRegisterController.java
similarity index 95%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysRegisterController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRegisterController.java
index e84f505..282089b 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysRegisterController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRegisterController.java
@@ -1,4 +1,4 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysRoleController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRoleController.java
similarity index 82%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysRoleController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRoleController.java
index 2f23298..cfbb21e 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysRoleController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRoleController.java
@@ -1,7 +1,30 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
+import com.sinata.common.annotation.Log;
+import com.sinata.common.core.controller.BaseController;
+import com.sinata.common.core.domain.AjaxResult;
+import com.sinata.common.core.domain.R;
+import com.sinata.common.core.domain.entity.SysDept;
+import com.sinata.common.core.domain.entity.SysRole;
+import com.sinata.common.core.domain.entity.SysUser;
+import com.sinata.common.core.domain.model.LoginUser;
+import com.sinata.common.core.page.TableDataInfo;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.common.enums.BusinessType;
+import com.sinata.common.utils.StringUtils;
+import com.sinata.common.utils.poi.ExcelUtil;
+import com.sinata.framework.web.service.SysPermissionService;
+import com.sinata.framework.web.service.TokenService;
+import com.sinata.system.domain.SysUserRole;
+import com.sinata.system.domain.dto.SysRoleDTO;
+import com.sinata.system.domain.query.KeyWordQuery;
+import com.sinata.system.domain.vo.SysRoleVO;
+import com.sinata.system.service.ISysDeptService;
+import com.sinata.system.service.ISysRoleService;
+import com.sinata.system.service.ISysUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -13,31 +36,21 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import com.sinata.common.annotation.Log;
-import com.sinata.common.core.controller.BaseController;
-import com.sinata.common.core.domain.AjaxResult;
-import com.sinata.common.core.domain.entity.SysDept;
-import com.sinata.common.core.domain.entity.SysRole;
-import com.sinata.common.core.domain.entity.SysUser;
-import com.sinata.common.core.domain.model.LoginUser;
-import com.sinata.common.core.page.TableDataInfo;
-import com.sinata.common.enums.BusinessType;
-import com.sinata.common.utils.StringUtils;
-import com.sinata.common.utils.poi.ExcelUtil;
-import com.sinata.framework.web.service.SysPermissionService;
-import com.sinata.framework.web.service.TokenService;
-import com.sinata.system.domain.SysUserRole;
-import com.sinata.system.service.ISysDeptService;
-import com.sinata.system.service.ISysRoleService;
-import com.sinata.system.service.ISysUserService;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
 
 /**
  * 角色信息
  * 
  * @author ruoyi
  */
+@Api(tags = {"角色相关接口"})
+@Validated
 @RestController
-@RequestMapping("/system/role")
+@RequestMapping("/backend/system/role")
 public class SysRoleController extends BaseController
 {
     @Autowired
@@ -55,6 +68,49 @@
     @Autowired
     private ISysDeptService deptService;
 
+    /**
+     * 角色分页列表
+     *
+     * @param query
+     * @return
+     */
+    @ApiOperation("角色分页列表")
+    @PostMapping("/page")
+    public R<PageDTO<SysRoleVO>> pageList(@Valid @RequestBody KeyWordQuery query) {
+        return R.ok(roleService.pageList(query));
+    }
+
+    /**
+     * 保存角色信息
+     *
+     * @param dto
+     * @return
+     */
+    @ApiOperation("保存角色信息")
+    @PostMapping("/save")
+    public R<?> save(@Valid @RequestBody SysRoleDTO dto) {
+        roleService.saveRole(dto);
+        return R.ok();
+    }
+
+    /**
+     * 获取角色详情
+     *
+     * @param roleId
+     * @return
+     */
+    @ApiOperation("获取角色详情")
+    @GetMapping("/{roleId}")
+    public R<SysRoleVO> getDetailInfo(@ApiParam(name = "roleId", value = "角色id", required = true) @PathVariable("roleId") Long roleId) {
+        return R.ok(roleService.getDetailInfo(roleId));
+    }
+
+    @ApiOperation("删除详情")
+    @PostMapping("/deleteBatch")
+    public R<?> deleteBatch(@ApiParam(name = "roleIds", value = "角色id列表", required = true) @NotEmpty(message = "角色id列表不能为空") @RequestBody List<Long> roleIds) {
+        roleService.removeBatchByIds(roleIds);
+        return R.ok();
+    }
     @PreAuthorize("@ss.hasPermi('system:role:list')")
     @GetMapping("/list")
     public TableDataInfo list(SysRole role)
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysUserController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java
similarity index 99%
rename from medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysUserController.java
rename to medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java
index 3c8e4c8..0696fdb 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/system/SysUserController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java
@@ -1,4 +1,4 @@
-package com.sinata.web.controller.system;
+package com.sinata.web.controller.backend.system;
 
 import com.sinata.common.annotation.Log;
 import com.sinata.common.core.controller.BaseController;
diff --git a/medicalWaste-admin/src/main/resources/application.yml b/medicalWaste-admin/src/main/resources/application.yml
index de36bda..683ff0a 100644
--- a/medicalWaste-admin/src/main/resources/application.yml
+++ b/medicalWaste-admin/src/main/resources/application.yml
@@ -195,7 +195,7 @@
   # 是否开启swagger
   enabled: true
   # 请求前缀
-  pathMapping: /dev-api
+  pathMapping: /
 
 # 防止XSS攻击
 xss:
diff --git a/medicalWaste-admin/src/test/java/DepartmentTest.java b/medicalWaste-admin/src/test/java/DepartmentTest.java
new file mode 100644
index 0000000..e093009
--- /dev/null
+++ b/medicalWaste-admin/src/test/java/DepartmentTest.java
@@ -0,0 +1,30 @@
+import com.sinata.RuoYiApplication;
+import com.sinata.system.enums.DepartmentEnum;
+import com.sinata.system.mapper.SysDepartmentMapper;
+import com.sinata.system.service.ISysDictTypeService;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import javax.annotation.Resource;
+
+/**
+ * @author mitao
+ * @date 2024/12/3
+ */
+@SpringBootTest(classes = RuoYiApplication.class)
+public class DepartmentTest {
+    @Resource
+    private SysDepartmentMapper departmentMapper;
+    @Resource
+    private ISysDictTypeService sysDictTypeService;
+
+    @Test
+    public void test(){
+        System.out.println(departmentMapper.getDepartmentListByType(1L, DepartmentEnum.REGION.getCode()));
+    }
+    @Test
+    public void test2(){
+
+        System.out.println(sysDictTypeService.list());
+    }
+}
diff --git a/medicalWaste-admin/src/test/java/MybatisPlusGeneraotr.java b/medicalWaste-admin/src/test/java/MybatisPlusGeneraotr.java
index 4437511..8749b6c 100644
--- a/medicalWaste-admin/src/test/java/MybatisPlusGeneraotr.java
+++ b/medicalWaste-admin/src/test/java/MybatisPlusGeneraotr.java
@@ -1,9 +1,5 @@
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.generator.FastAutoGenerator;
-import com.baomidou.mybatisplus.generator.config.po.LikeTable;
-import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
 import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
-import com.sinata.common.entity.BaseModel;
 import org.junit.jupiter.api.Test;
 
 public class MybatisPlusGeneraotr {
@@ -23,7 +19,7 @@
                             builder
                                     .author("mitao")              // 作者
                                     //.outputDir(System.getProperty("user.dir") + "/src/main/java")    // 指定输出目录
-                                    .outputDir("F:\\喜望软件\\code\\YiFeiNN\\medicalWaste-system\\src\\main\\java")    // 指定输出目录
+                                    .outputDir("F:\\喜望软件\\code\\YiFeiNN\\medicalWaste-admin\\src\\main\\java\\com\\sinata\\web\\controller\\backend")    // 指定输出目录
                                     .commentDate("yyyy-MM-dd")// 注释的日期
                                     // 修改Date类型为LocalDateTime
                                     //.dateType(DateType.ONLY_DATE)
@@ -49,23 +45,23 @@
                             builder
                                     // 在这里添加数据库表名
                                     //.addInclude("MW_BOX")
-                                    .likeTable(new LikeTable("MW_"))// 设置需要生成的表名,多个表之间可以用逗号隔开
+                                    .addInclude("SYS_DEPARTMENT", "SYS_DEPARTMENT_INFO", "SYS_USER_DEPARTMENT")// 设置需要生成的表名,多个表之间可以用逗号隔开
                                     // .addExclude("BBZQ_USER","BBZQ_USER_LOG")
-                                    .controllerBuilder().enableRestStyle()          // controller配置策略
-                                    .serviceBuilder().formatServiceFileName("%sService")            // service配置策略
-                                    .mapperBuilder().enableBaseColumnList().enableBaseResultMap().enableMapperAnnotation()     // mapper配置策略
-                                    .entityBuilder().enableLombok().enableRemoveIsPrefix().enableTableFieldAnnotation()       // 实体配置策略
-                                    .logicDeleteColumnName("del_flag")        		  // 逻辑删除字段名
-                                    .naming(NamingStrategy.underline_to_camel)            // 数据库表映射到实体的命名策略,下划线转驼峰
-                                    .columnNaming(NamingStrategy.underline_to_camel)      // 数据库表字段映射的命名策略,下划线转驼峰
-                                    .superClass(BaseModel.class)
+                                    .controllerBuilder().enableRestStyle();          // controller配置策略
+                                    //.serviceBuilder().formatServiceFileName("%sService")            // service配置策略
+                                    //.mapperBuilder().enableBaseColumnList().enableBaseResultMap().enableMapperAnnotation()     // mapper配置策略
+                                    //.entityBuilder().enableLombok().enableRemoveIsPrefix().enableTableFieldAnnotation()       // 实体配置策略
+                                    //.logicDeleteColumnName("del_flag")        		  // 逻辑删除字段名
+                                    //.naming(NamingStrategy.underline_to_camel)            // 数据库表映射到实体的命名策略,下划线转驼峰
+                                    //.columnNaming(NamingStrategy.underline_to_camel)      // 数据库表字段映射的命名策略,下划线转驼峰
+                                    //.superClass(BaseModel.class)
                                     //.addTableFills(    // 添加表字段填充,"create_time"自动填充为插入时间,"update_time"自动填充为修改时间
                                     //        new Column("create_time", FieldFill.INSERT),
                                     //        new Column("create_by", FieldFill.INSERT),
                                     //        new Column("update_time", FieldFill.INSERT_UPDATE),
                                     //        new Column("update_by", FieldFill.INSERT_UPDATE)
                                     //)
-                                    .idType(IdType.AUTO);
+                                    //.idType(IdType.AUTO);
                         }
                 )
                 // 模板配置
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/BaseEntity.java b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/BaseEntity.java
index c5fb505..1b59520 100644
--- a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/BaseEntity.java
+++ b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/BaseEntity.java
@@ -1,12 +1,15 @@
 package com.sinata.common.core.domain;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
 
 /**
  * Entity基类
@@ -19,20 +22,25 @@
 
     /** 搜索值 */
     @JsonIgnore
+    @TableField(exist = false)
     private String searchValue;
 
     /** 创建者 */
+    @TableField(value = "create_by", fill = FieldFill.INSERT)
     private String createBy;
 
     /** 创建时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
     private Date createTime;
 
     /** 更新者 */
+    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
     private String updateBy;
 
     /** 更新时间 */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
     private Date updateTime;
 
     /** 备注 */
@@ -40,6 +48,7 @@
 
     /** 请求参数 */
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    @TableField(exist = false)
     private Map<String, Object> params;
 
     public String getSearchValue()
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictData.java b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictData.java
index 54c60f9..5c76626 100644
--- a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictData.java
+++ b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictData.java
@@ -1,13 +1,16 @@
 package com.sinata.common.core.domain.entity;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.sinata.common.annotation.Excel;
 import com.sinata.common.annotation.Excel.ColumnType;
 import com.sinata.common.constant.UserConstants;
 import com.sinata.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
 
 /**
  * 字典数据表 sys_dict_data
@@ -20,6 +23,7 @@
 
     /** 字典编码 */
     @Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
+    @TableId(type = IdType.AUTO)
     private Long dictCode;
 
     /** 字典排序 */
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictType.java b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictType.java
index 19e7c6d..9327606 100644
--- a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictType.java
+++ b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictType.java
@@ -1,13 +1,17 @@
 package com.sinata.common.core.domain.entity;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.sinata.common.annotation.Excel;
 import com.sinata.common.annotation.Excel.ColumnType;
 import com.sinata.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
 
 /**
  * 字典类型表 sys_dict_type
@@ -20,14 +24,18 @@
 
     /** 字典主键 */
     @Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty("字典主键")
     private Long dictId;
 
     /** 字典名称 */
     @Excel(name = "字典名称")
+    @ApiModelProperty("字典名称")
     private String dictName;
 
     /** 字典类型 */
     @Excel(name = "字典类型")
+    @ApiModelProperty("字典类型")
     private String dictType;
 
     /** 状态(0正常 1停用) */
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysRole.java b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysRole.java
index 426ea0d..f6ecccc 100644
--- a/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysRole.java
+++ b/medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysRole.java
@@ -1,14 +1,18 @@
 package com.sinata.common.core.domain.entity;
 
-import java.util.Set;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.sinata.common.annotation.Excel;
 import com.sinata.common.annotation.Excel.ColumnType;
 import com.sinata.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.Set;
 
 /**
  * 角色表 sys_role
@@ -21,6 +25,7 @@
 
     /** 角色ID */
     @Excel(name = "角色序号", cellType = ColumnType.NUMERIC)
+    @TableId(type = IdType.AUTO)
     private Long roleId;
 
     /** 角色名称 */
@@ -64,6 +69,8 @@
     /** 角色菜单权限 */
     private Set<String> permissions;
 
+    @TableField("MANAGE_ROLE_ID_STR")
+    private String manageRoleIdStr;
     public SysRole()
     {
 
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/core/text/Convert.java b/medicalWaste-common/src/main/java/com/sinata/common/core/text/Convert.java
index 40af32d..4a449c0 100644
--- a/medicalWaste-common/src/main/java/com/sinata/common/core/text/Convert.java
+++ b/medicalWaste-common/src/main/java/com/sinata/common/core/text/Convert.java
@@ -1,5 +1,8 @@
 package com.sinata.common.core.text;
 
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import org.apache.commons.lang3.ArrayUtils;
+
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.math.RoundingMode;
@@ -7,8 +10,6 @@
 import java.nio.charset.Charset;
 import java.text.NumberFormat;
 import java.util.Set;
-import com.sinata.common.utils.StringUtils;
-import org.apache.commons.lang3.ArrayUtils;
 
 /**
  * 类型转换器
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/entity/BaseModel.java b/medicalWaste-common/src/main/java/com/sinata/common/entity/BaseModel.java
index 37e49ea..6eb05bc 100644
--- a/medicalWaste-common/src/main/java/com/sinata/common/entity/BaseModel.java
+++ b/medicalWaste-common/src/main/java/com/sinata/common/entity/BaseModel.java
@@ -4,14 +4,17 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * Entity基类
  * 
  * @author ruoyi
  */
+@Data
 public class BaseModel implements Serializable
 {
     private static final long serialVersionUID = 1L;
@@ -24,7 +27,7 @@
     /** 创建时间 */
     @ApiModelProperty(value = "记录创建时间,前端忽略")
     @TableField(value = "create_time", fill = FieldFill.INSERT)
-    private LocalDateTime createTime;
+    private Date createTime;
 
     /** 更新者 */
     @ApiModelProperty(value = "记录修改人,前端忽略")
@@ -34,7 +37,7 @@
     /** 更新时间 */
     @ApiModelProperty(value = "记录修改时间,前端忽略")
     @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
     /** 是否删除 0未删除 1已删除 */
     @TableField("del_flag")
@@ -42,44 +45,4 @@
     @TableLogic
     private Integer delFlag;
 
-
-    public String getCreateBy() {
-        return createBy;
-    }
-
-    public void setCreateBy(String createBy) {
-        this.createBy = createBy;
-    }
-
-    public LocalDateTime getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(LocalDateTime createTime) {
-        this.createTime = createTime;
-    }
-
-    public String getUpdateBy() {
-        return updateBy;
-    }
-
-    public void setUpdateBy(String updateBy) {
-        this.updateBy = updateBy;
-    }
-
-    public LocalDateTime getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(LocalDateTime updateTime) {
-        this.updateTime = updateTime;
-    }
-
-    public Integer getDelFlag() {
-        return delFlag;
-    }
-
-    public void setDelFlag(Integer delFlag) {
-        this.delFlag = delFlag;
-    }
 }
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/entity/BasePage.java b/medicalWaste-common/src/main/java/com/sinata/common/entity/BasePage.java
new file mode 100644
index 0000000..a02c952
--- /dev/null
+++ b/medicalWaste-common/src/main/java/com/sinata/common/entity/BasePage.java
@@ -0,0 +1,55 @@
+package com.sinata.common.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.DecimalMin;
+import java.io.Serializable;
+
+/**
+ * <p></p>
+ *
+ * @author mouseyCat
+ * @date 2020/8/24 16:39
+ */
+@ApiModel(value = "基础查询列表dto")
+public class BasePage implements Serializable {
+
+    private static final long serialVersionUID = -6677391205868835849L;
+    /**
+     * 分页参数,当前页码
+     */
+    @ApiModelProperty(value = "分页参数,当前页码")
+    @DecimalMin(value = "1", message = "当前页码最小为1")
+    private Integer pageCurr = 1;
+    /**
+     * 分页参数,每页数量
+     */
+    @ApiModelProperty(value = "分页参数,每页数量,默认为10")
+    @DecimalMin(value = "1", message = "每页数量最低为1")
+    private Integer pageSize = 10;
+
+    public Integer getPageCurr() {
+        return pageCurr;
+    }
+
+    public void setPageCurr(Integer pageCurr) {
+        this.pageCurr = pageCurr;
+    }
+
+    public Integer getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    @Override
+    public String toString() {
+        return "BasePage{" +
+                "pageCurr=" + pageCurr +
+                ", pageSize=" + pageSize +
+                '}';
+    }
+}
diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java b/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java
index 54c92e4..0ff6ad5 100644
--- a/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java
+++ b/medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java
@@ -111,7 +111,7 @@
             .authorizeHttpRequests((requests) -> {
                 permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
+                requests.antMatchers("/backend/login", "/register", "/captchaImage").permitAll()
                     // 静态资源,可匿名访问
                     .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                     .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/config/handler/MyMetaObjectHandler.java b/medicalWaste-framework/src/main/java/com/sinata/framework/config/handler/MyMetaObjectHandler.java
new file mode 100644
index 0000000..f823086
--- /dev/null
+++ b/medicalWaste-framework/src/main/java/com/sinata/framework/config/handler/MyMetaObjectHandler.java
@@ -0,0 +1,46 @@
+package com.sinata.framework.config.handler;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.sinata.common.utils.DateUtils;
+import com.sinata.common.utils.SecurityUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+/**
+ * 自动填充处理类
+ *
+ * @author jishanfeng
+ * @date 2024-01-12
+ */
+@Slf4j
+@Component
+public class MyMetaObjectHandler implements MetaObjectHandler {
+
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        // 获取当前登录用户
+        Long userId = SecurityUtils.getUserId();
+        fillValue("createBy", userId, metaObject);
+        fillValue("createTime", DateUtils.getNowDate(), metaObject);
+    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        // 获取当前登录用户
+        Long userId = SecurityUtils.getUserId();
+        fillValue("updateBy", userId, metaObject);
+        fillValue("updateTime", DateUtils.getNowDate(), metaObject);
+    }
+
+    private void fillValue(String fieldName, Object data, MetaObject metaObject) {
+        if (metaObject.hasSetter(fieldName)) {
+            // 值为空时设置默认值
+            Object sidObj = getFieldValByName(fieldName, metaObject);
+            if (sidObj == null || "updateBy".equals(fieldName) || "updateTime".equals(fieldName)) {
+                setFieldValByName(fieldName, data, metaObject);
+            }
+        }
+    }
+}
+
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java
new file mode 100644
index 0000000..c41be07
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java
@@ -0,0 +1,86 @@
+package com.sinata.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.sinata.common.entity.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 区域表
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Getter
+@Setter
+@TableName("SYS_DEPARTMENT")
+@ApiModel(value = "SysDepartment对象", description = "区域表")
+public class SysDepartment extends BaseModel {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("区域id")
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("区域名称")
+    @TableField("DEPARTMENT_NAME")
+    private String departmentName;
+
+    @ApiModelProperty("上级区域id")
+    @TableField("PARENT_ID")
+    private Integer parentId;
+
+    @ApiModelProperty("树编码")
+    @TableField("TREE_CODE")
+    private String treeCode;
+
+    @ApiModelProperty("机构类型 1:区域 2:医疗机构 3:处置单位 4:监管单位")
+    @TableField("ORG_TYPE")
+    private Integer orgType;
+
+    @ApiModelProperty("机构编码")
+    @TableField("ORG_CODE")
+    private String orgCode;
+
+    @ApiModelProperty("单位地址")
+    @TableField("ADDRESS")
+    private String address;
+
+    @ApiModelProperty("经度")
+    @TableField("LONGITUDE")
+    private Double longitude;
+
+    @ApiModelProperty("纬度")
+    @TableField("LATITUDE")
+    private Double latitude;
+
+    @ApiModelProperty("联系人")
+    @TableField("CONTACT_PERSON")
+    private String contactPerson;
+
+    @ApiModelProperty("联系电话")
+    @TableField("CONTACT_PHONE")
+    private String contactPhone;
+
+    @ApiModelProperty("备注")
+    @TableField("REMARK")
+    private String remark;
+
+    @ApiModelProperty("法人代表")
+    @TableField("LEGAL_PERSON")
+    private String legalPerson;
+
+    @ApiModelProperty("统一社会信用代码")
+    @TableField("UNIFIED_SOCIAL_CREDIT_CODE")
+    private String unifiedSocialCreditCode;
+
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java
new file mode 100644
index 0000000..417f33f
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java
@@ -0,0 +1,88 @@
+package com.sinata.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.sinata.common.entity.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 单位信息
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Getter
+@Setter
+@TableName("SYS_DEPARTMENT_INFO")
+@ApiModel(value = "SysDepartmentInfo对象", description = "单位信息")
+public class SysDepartmentInfo extends BaseModel {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键id")
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("区域id(医疗机构id,处置单位id)")
+    @TableField("DEPARTMENT_ID")
+    private Long departmentId;
+
+    @ApiModelProperty("机构级别(数据字典id)")
+    @TableField("INSTITUTION_LEVEL")
+    private Integer institutionLevel;
+
+    @ApiModelProperty("机构性质(数据字典id)")
+    @TableField("INSTITUTION_TYPE")
+    private Integer institutionType;
+
+    @ApiModelProperty("每日产废范围起")
+    @TableField("DAILY_MIN_WASTE_QUANTITY")
+    private BigDecimal dailyMinWasteQuantity;
+
+    @ApiModelProperty("每日产废范围止")
+    @TableField("DAILY_MAX_WASTE_QUANTITY")
+    private BigDecimal dailyMaxWasteQuantity;
+
+    @ApiModelProperty("每月产废范围起")
+    @TableField("MONTHLY_MIN_WASTE_QUANTITY")
+    private BigDecimal monthlyMinWasteQuantity;
+
+    @ApiModelProperty("每月产废范围止")
+    @TableField("MONTHLY_MAX_WASTE_QUANTITY")
+    private BigDecimal monthlyMaxWasteQuantity;
+
+    @ApiModelProperty("医疗废物处置许可证号")
+    @TableField("DISPOSAL_LICENSE_NUMBER")
+    private String disposalLicenseNumber;
+
+    @ApiModelProperty("许可证图片")
+    @TableField("DISPOSAL_LICENSE_IMAGE")
+    private String disposalLicenseImage;
+
+    @ApiModelProperty("日处理能力(kg)")
+    @TableField("DAILY_DISPOSAL_QUANTITY")
+    private BigDecimal dailyDisposalQuantity;
+
+    @ApiModelProperty("年处理能力(kg)")
+    @TableField("YEARLY_DISPOSAL_QUANTITY")
+    private BigDecimal yearlyDisposalQuantity;
+
+    @ApiModelProperty("主要技术")
+    @TableField("MAIN_TECHNOLOGY")
+    private String mainTechnology;
+
+    @ApiModelProperty("医废最大存储量")
+    @TableField("MAXIMUM_STORAGE_CAPACITY")
+    private BigDecimal maximumStorageCapacity;
+
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/SysUserDepartment.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysUserDepartment.java
new file mode 100644
index 0000000..9d033af
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/SysUserDepartment.java
@@ -0,0 +1,43 @@
+package com.sinata.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.sinata.common.entity.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 用户区域关系
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("SYS_USER_DEPARTMENT")
+@ApiModel(value = "SysUserDepartment对象", description = "用户区域关系")
+public class SysUserDepartment extends BaseModel {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("用户区域关系表id")
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("用户id")
+    @TableField("USER_ID")
+    private Long userId;
+
+    @ApiModelProperty("区域id")
+    @TableField("DEPARTMENT_ID")
+    private Long departmentId;
+
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysDictDataDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysDictDataDTO.java
new file mode 100644
index 0000000..bc9fca8
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysDictDataDTO.java
@@ -0,0 +1,26 @@
+package com.sinata.system.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/12/3
+ */
+@Data
+@ApiModel("数据字典数据传输对象")
+public class SysDictDataDTO {
+    
+    @ApiModelProperty(value = "字典主键", notes = "新增不传,编辑必传")
+    private Long dictCode;
+
+    @ApiModelProperty("字典类型")
+    private String dictType;
+
+    @ApiModelProperty("数值")
+    private String dictLabel;
+
+    @ApiModelProperty("备注")
+    private String remark;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysRoleDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysRoleDTO.java
new file mode 100644
index 0000000..1a07fd1
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysRoleDTO.java
@@ -0,0 +1,31 @@
+package com.sinata.system.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author mitao
+ * @date 2024/12/3
+ */
+@Data
+@ApiModel("角色数据传输对象")
+public class SysRoleDTO {
+
+    @ApiModelProperty(value = "角色主键", notes = "更新必传")
+    private Long roleId;
+
+    @ApiModelProperty("角色名称")
+    private String roleName;
+
+    @ApiModelProperty(value = "可管理角色", notes = "使用英文逗号拼接")
+    private String manageRoleStr;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("菜单id列表")
+    private List<Long> menuIds;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/KeyWordQuery.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/KeyWordQuery.java
new file mode 100644
index 0000000..5efc337
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/KeyWordQuery.java
@@ -0,0 +1,21 @@
+package com.sinata.system.domain.query;
+
+import com.sinata.common.entity.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author mitao
+ * @date 2024/12/3
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("关键字数据查询对象")
+public class KeyWordQuery extends BasePage {
+    private static final long serialVersionUID = 389575019431291989L;
+    
+    @ApiModelProperty("关键字")
+    private String keyword;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDepartmentVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDepartmentVO.java
new file mode 100644
index 0000000..ca726d6
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDepartmentVO.java
@@ -0,0 +1,39 @@
+package com.sinata.system.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author mitao
+ * @date 2024/12/2
+ */
+@Data
+@ApiModel("区域视图对象")
+public class SysDepartmentVO {
+
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("区域名称")
+    private String departmentName;
+
+    @ApiModelProperty("父级id")
+    private Long parentId;
+
+    @ApiModelProperty("树编码")
+    private String treeCode;
+
+    @ApiModelProperty("机构类型 1:区域 2:医疗机构 3:处置单位 4:监管单位")
+    private Integer orgType;
+
+    @ApiModelProperty("机构编码")
+    private String orgCode;
+
+    @ApiModelProperty("子节点")
+    private List<SysDepartmentVO> children = new ArrayList<>();
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java
new file mode 100644
index 0000000..d50205d
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java
@@ -0,0 +1,28 @@
+package com.sinata.system.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/12/3
+ */
+@Data
+@ApiModel("数据字典视图对象")
+public class SysDictDataVO {
+    @ApiModelProperty("主键")
+    private Long dictCode;
+
+    @ApiModelProperty("字典键值")
+    private String dictValue;
+
+    @ApiModelProperty("字典标签")
+    private String dictLabel;
+
+    @ApiModelProperty("字典类型")
+    private String dictType;
+    
+    @ApiModelProperty("备注")
+    private String remark;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysRoleVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysRoleVO.java
new file mode 100644
index 0000000..d21c1ad
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysRoleVO.java
@@ -0,0 +1,38 @@
+package com.sinata.system.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author mitao
+ * @date 2024/12/3
+ */
+@Data
+@ApiModel("角色视图对象")
+public class SysRoleVO {
+
+    @ApiModelProperty("角色主键")
+    private Long roleId;
+
+    @ApiModelProperty("角色名称")
+    private String roleName;
+
+    @ApiModelProperty("可管理角色")
+    private String manageRoleStr;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("创建人")
+    private String nickName;
+
+    @ApiModelProperty("添加时间")
+    private Date createTime;
+    
+    @ApiModelProperty("菜单id列表")
+    private List<Long> menuIds;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/enums/DepartmentEnum.java b/medicalWaste-system/src/main/java/com/sinata/system/enums/DepartmentEnum.java
new file mode 100644
index 0000000..5bd9719
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/enums/DepartmentEnum.java
@@ -0,0 +1,23 @@
+package com.sinata.system.enums;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+@Getter
+@AllArgsConstructor
+public enum DepartmentEnum {
+	REGION(1, "区域"),
+	MEDICAL_INSTITUTION(2, "医疗机构"),
+	DISPOSAL_UNIT(3, "处置单位"),
+	REGULATORY_UNIT(4, "监管单位");
+
+	private final Integer code;
+	private final String desc;
+
+	public static DepartmentEnum getEnumByCode(Integer code) {
+		for (DepartmentEnum e : DepartmentEnum.values()) {
+			if (e.code.equals(code)) {
+				return e;
+			}
+		}
+		return null;
+	}
+} 
\ No newline at end of file
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentInfoMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentInfoMapper.java
new file mode 100644
index 0000000..a2b17a7
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentInfoMapper.java
@@ -0,0 +1,18 @@
+package com.sinata.system.mapper;
+
+import com.sinata.system.domain.SysDepartmentInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 单位信息 Mapper 接口
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Mapper
+public interface SysDepartmentInfoMapper extends BaseMapper<SysDepartmentInfo> {
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java
new file mode 100644
index 0000000..40b01f1
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java
@@ -0,0 +1,27 @@
+package com.sinata.system.mapper;
+
+import com.sinata.system.domain.SysDepartment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 区域表 Mapper 接口
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Mapper
+public interface SysDepartmentMapper extends BaseMapper<SysDepartment> {
+    /**
+     * 根据类型查询用户区域列表
+     * @param userId
+     * @param type
+     * @return
+     */
+    List<SysDepartment> getDepartmentListByType(@Param("userId") Long userId, @Param("type") Integer type);
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictDataMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictDataMapper.java
index ef731fa..ceba70f 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictDataMapper.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictDataMapper.java
@@ -1,15 +1,17 @@
 package com.sinata.system.mapper;
 
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sinata.common.core.domain.entity.SysDictData;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 字典表 数据层
  * 
  * @author ruoyi
  */
-public interface SysDictDataMapper
+public interface SysDictDataMapper extends BaseMapper<SysDictData>
 {
     /**
      * 根据条件分页查询字典数据
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictTypeMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictTypeMapper.java
index 5fc49e8..f6335a9 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictTypeMapper.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictTypeMapper.java
@@ -1,14 +1,16 @@
 package com.sinata.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sinata.common.core.domain.entity.SysDictType;
+
+import java.util.List;
 
 /**
  * 字典表 数据层
  * 
  * @author ruoyi
  */
-public interface SysDictTypeMapper
+public interface SysDictTypeMapper extends BaseMapper<SysDictType>
 {
     /**
      * 根据条件分页查询字典类型
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysMenuMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysMenuMapper.java
index b5eb44e..9d48ac2 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysMenuMapper.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysMenuMapper.java
@@ -1,8 +1,9 @@
 package com.sinata.system.mapper;
 
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
 import com.sinata.common.core.domain.entity.SysMenu;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 菜单表 数据层
@@ -122,4 +123,6 @@
      * @return 结果
      */
     public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
+
+    List<SysMenu> selectListByRoleId(@Param("roleId") Long roleId);
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysRoleMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysRoleMapper.java
index 4fc90fe..ef38bde 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysRoleMapper.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysRoleMapper.java
@@ -1,14 +1,19 @@
 package com.sinata.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sinata.common.core.domain.entity.SysRole;
+import com.sinata.system.domain.vo.SysRoleVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 角色表 数据层
  * 
  * @author ruoyi
  */
-public interface SysRoleMapper
+public interface SysRoleMapper extends BaseMapper<SysRole>
 {
     /**
      * 根据条件分页查询角色数据
@@ -104,4 +109,13 @@
      * @return 结果
      */
     public int deleteRoleByIds(Long[] roleIds);
+
+    /**
+     * 角色分页列表
+     *
+     * @param sysRoleVOPage
+     * @param keyword
+     * @return
+     */
+    Page<SysRoleVO> pageList(Page<SysRoleVO> sysRoleVOPage, @Param("keyword") String keyword);
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysUserDepartmentMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysUserDepartmentMapper.java
new file mode 100644
index 0000000..52166ca
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysUserDepartmentMapper.java
@@ -0,0 +1,18 @@
+package com.sinata.system.mapper;
+
+import com.sinata.system.domain.SysUserDepartment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 用户区域关系 Mapper 接口
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Mapper
+public interface SysUserDepartmentMapper extends BaseMapper<SysUserDepartment> {
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictDataService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictDataService.java
index 3a62e8e..f6fcad0 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictDataService.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictDataService.java
@@ -1,14 +1,20 @@
 package com.sinata.system.service;
 
-import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.sinata.common.core.domain.entity.SysDictData;
+import com.sinata.common.entity.BasePage;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.system.domain.dto.SysDictDataDTO;
+import com.sinata.system.domain.vo.SysDictDataVO;
+
+import java.util.List;
 
 /**
  * 字典 业务层
  * 
  * @author ruoyi
  */
-public interface ISysDictDataService
+public interface ISysDictDataService extends IService<SysDictData>
 {
     /**
      * 根据条件分页查询字典数据
@@ -57,4 +63,13 @@
      * @return 结果
      */
     public int updateDictData(SysDictData dictData);
+
+    PageDTO<SysDictDataVO> pageList(BasePage page);
+
+    /**
+     * 新增
+     *
+     * @param dto
+     */
+    void save(SysDictDataDTO dto);
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictTypeService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictTypeService.java
index 6e76341..825856e 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictTypeService.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictTypeService.java
@@ -1,15 +1,17 @@
 package com.sinata.system.service;
 
-import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.sinata.common.core.domain.entity.SysDictData;
 import com.sinata.common.core.domain.entity.SysDictType;
+
+import java.util.List;
 
 /**
  * 字典 业务层
  * 
  * @author ruoyi
  */
-public interface ISysDictTypeService
+public interface ISysDictTypeService extends IService<SysDictType>
 {
     /**
      * 根据条件分页查询字典类型
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/ISysMenuService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/ISysMenuService.java
index 91d1d31..a6a504a 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/ISysMenuService.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/ISysMenuService.java
@@ -1,10 +1,11 @@
 package com.sinata.system.service;
 
-import java.util.List;
-import java.util.Set;
 import com.sinata.common.core.domain.TreeSelect;
 import com.sinata.common.core.domain.entity.SysMenu;
 import com.sinata.system.domain.vo.RouterVo;
+
+import java.util.List;
+import java.util.Set;
 
 /**
  * 菜单 业务层
@@ -141,4 +142,10 @@
      * @return 结果
      */
     public boolean checkMenuNameUnique(SysMenu menu);
+    /**
+     * 获取当前角色的菜单列表
+     * @param roleId
+     * @return
+     */
+    List<SysMenu> selectListByRoleId(Long roleId);
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/ISysRoleService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/ISysRoleService.java
index 3d47db1..ca32cb7 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/ISysRoleService.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/ISysRoleService.java
@@ -1,16 +1,22 @@
 package com.sinata.system.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sinata.common.core.domain.entity.SysRole;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.system.domain.SysUserRole;
+import com.sinata.system.domain.dto.SysRoleDTO;
+import com.sinata.system.domain.query.KeyWordQuery;
+import com.sinata.system.domain.vo.SysRoleVO;
+
 import java.util.List;
 import java.util.Set;
-import com.sinata.common.core.domain.entity.SysRole;
-import com.sinata.system.domain.SysUserRole;
 
 /**
  * 角色业务层
  * 
  * @author ruoyi
  */
-public interface ISysRoleService
+public interface ISysRoleService extends IService<SysRole>
 {
     /**
      * 根据条件分页查询角色数据
@@ -170,4 +176,28 @@
      * @return 结果
      */
     public int insertAuthUsers(Long roleId, Long[] userIds);
+
+    /**
+     * 角色分页列表
+     *
+     * @param query
+     * @return
+     */
+    PageDTO<SysRoleVO> pageList(KeyWordQuery query);
+
+    /**
+     * 保存角色信息
+     *
+     * @param dto
+     * @return
+     */
+    void saveRole(SysRoleDTO dto);
+
+    /**
+     * 获取角色详情
+     *
+     * @param roleId
+     * @return
+     */
+    SysRoleVO getDetailInfo(Long roleId);
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentInfoService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentInfoService.java
new file mode 100644
index 0000000..af763d5
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentInfoService.java
@@ -0,0 +1,16 @@
+package com.sinata.system.service;
+
+import com.sinata.system.domain.SysDepartmentInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 单位信息 服务类
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+public interface SysDepartmentInfoService extends IService<SysDepartmentInfo> {
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java
new file mode 100644
index 0000000..d000280
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java
@@ -0,0 +1,23 @@
+package com.sinata.system.service;
+
+import com.sinata.system.domain.SysDepartment;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sinata.system.domain.vo.SysDepartmentVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 区域表 服务类
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+public interface SysDepartmentService extends IService<SysDepartment> {
+    /**
+     * 获取区域树
+     * @return
+     */
+    List<SysDepartmentVO> listByType(Integer type);
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/SysUserDepartmentService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/SysUserDepartmentService.java
new file mode 100644
index 0000000..e396707
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/SysUserDepartmentService.java
@@ -0,0 +1,16 @@
+package com.sinata.system.service;
+
+import com.sinata.system.domain.SysUserDepartment;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 用户区域关系 服务类
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+public interface SysUserDepartmentService extends IService<SysUserDepartment> {
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentInfoServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentInfoServiceImpl.java
new file mode 100644
index 0000000..795e2fc
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentInfoServiceImpl.java
@@ -0,0 +1,20 @@
+package com.sinata.system.service.impl;
+
+import com.sinata.system.domain.SysDepartmentInfo;
+import com.sinata.system.mapper.SysDepartmentInfoMapper;
+import com.sinata.system.service.SysDepartmentInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 单位信息 服务实现类
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Service
+public class SysDepartmentInfoServiceImpl extends ServiceImpl<SysDepartmentInfoMapper, SysDepartmentInfo> implements SysDepartmentInfoService {
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java
new file mode 100644
index 0000000..f5d51f8
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java
@@ -0,0 +1,45 @@
+package com.sinata.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sinata.common.utils.CollUtils;
+import com.sinata.common.utils.SecurityUtils;
+import com.sinata.system.domain.SysDepartment;
+import com.sinata.system.domain.vo.SysDepartmentVO;
+import com.sinata.system.mapper.SysDepartmentMapper;
+import com.sinata.system.service.SysDepartmentService;
+import com.sinata.system.service.SysUserDepartmentService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 区域表 服务实现类
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Service
+@RequiredArgsConstructor
+public class SysDepartmentServiceImpl extends ServiceImpl<SysDepartmentMapper, SysDepartment> implements SysDepartmentService {
+    private final SysUserDepartmentService sysUserDepartmentService;
+    /**
+     * 获取区域树
+     * @return
+     */
+    @Override
+    public List<SysDepartmentVO> listByType(Integer type) {
+        Long userId = SecurityUtils.getUserId();
+        List<SysDepartment> departmentList =  baseMapper.getDepartmentListByType(userId, type);
+        if (CollUtils.isNotEmpty(departmentList)) {
+            Map<Long, SysDepartment> departmentMap = departmentList.stream().collect(Collectors.toMap(SysDepartment::getId, Function.identity()));
+
+        }
+        return null;
+    }
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java
index 6696aa3..aee4bec 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java
@@ -1,12 +1,24 @@
 package com.sinata.system.service.impl;
 
-import java.util.List;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sinata.common.core.domain.entity.SysDictData;
+import com.sinata.common.core.domain.entity.SysDictType;
+import com.sinata.common.entity.BasePage;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.common.exception.ServiceException;
+import com.sinata.common.utils.BeanUtils;
+import com.sinata.common.utils.DictUtils;
+import com.sinata.system.domain.dto.SysDictDataDTO;
+import com.sinata.system.domain.vo.SysDictDataVO;
+import com.sinata.system.mapper.SysDictDataMapper;
+import com.sinata.system.mapper.SysDictTypeMapper;
+import com.sinata.system.service.ISysDictDataService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.sinata.common.core.domain.entity.SysDictData;
-import com.sinata.common.utils.DictUtils;
-import com.sinata.system.mapper.SysDictDataMapper;
-import com.sinata.system.service.ISysDictDataService;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
  * 字典 业务层处理
@@ -14,10 +26,12 @@
  * @author ruoyi
  */
 @Service
-public class SysDictDataServiceImpl implements ISysDictDataService
+public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService
 {
     @Autowired
     private SysDictDataMapper dictDataMapper;
+    @Autowired
+    private SysDictTypeMapper dictTypeMapper;
 
     /**
      * 根据条件分页查询字典数据
@@ -108,4 +122,24 @@
         }
         return row;
     }
+
+    @Override
+    public PageDTO<SysDictDataVO> pageList(BasePage page) {
+        Page<SysDictData> result = this.lambdaQuery().page(new Page<>(page.getPageCurr(), page.getPageSize()));
+        return PageDTO.of(result, SysDictDataVO.class);
+    }
+
+    @Override
+    public void save(SysDictDataDTO dto) {
+        SysDictData sysDictData = BeanUtils.copyBean(dto, SysDictData.class);
+        SysDictType sysDictType = dictTypeMapper.selectDictTypeByType(dto.getDictType());
+        if (Objects.isNull(sysDictType)) {
+            throw new ServiceException("字典类型不存在");
+        }
+        if (Objects.nonNull(sysDictData.getDictCode())) {
+            baseMapper.updateById(sysDictData);
+        } else {
+            baseMapper.insert(sysDictData);
+        }
+    }
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictTypeServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictTypeServiceImpl.java
index 0ac49d0..ab66766 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictTypeServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictTypeServiceImpl.java
@@ -1,13 +1,6 @@
 package com.sinata.system.service.impl;
 
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sinata.common.constant.UserConstants;
 import com.sinata.common.core.domain.entity.SysDictData;
 import com.sinata.common.core.domain.entity.SysDictType;
@@ -17,6 +10,15 @@
 import com.sinata.system.mapper.SysDictDataMapper;
 import com.sinata.system.mapper.SysDictTypeMapper;
 import com.sinata.system.service.ISysDictTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.PostConstruct;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 字典 业务层处理
@@ -24,7 +26,7 @@
  * @author ruoyi
  */
 @Service
-public class SysDictTypeServiceImpl implements ISysDictTypeService
+public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements ISysDictTypeService
 {
     @Autowired
     private SysDictTypeMapper dictTypeMapper;
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysMenuServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysMenuServiceImpl.java
index cc54694..1d70c5c 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysMenuServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysMenuServiceImpl.java
@@ -1,15 +1,5 @@
 package com.sinata.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import com.sinata.common.constant.Constants;
 import com.sinata.common.constant.UserConstants;
 import com.sinata.common.core.domain.TreeSelect;
@@ -24,6 +14,17 @@
 import com.sinata.system.mapper.SysRoleMapper;
 import com.sinata.system.mapper.SysRoleMenuMapper;
 import com.sinata.system.service.ISysMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 菜单 业务层处理
@@ -540,4 +541,9 @@
         return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":" },
                 new String[] { "", "", "", "/", "/" });
     }
+
+    @Override
+    public List<SysMenu> selectListByRoleId(Long roleId) {
+        return menuMapper.selectListByRoleId(roleId);
+    }
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysRoleServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysRoleServiceImpl.java
index df77217..998d382 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysRoleServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysRoleServiceImpl.java
@@ -1,29 +1,42 @@
 package com.sinata.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sinata.common.annotation.DataScope;
 import com.sinata.common.constant.UserConstants;
+import com.sinata.common.core.domain.entity.SysMenu;
 import com.sinata.common.core.domain.entity.SysRole;
 import com.sinata.common.core.domain.entity.SysUser;
+import com.sinata.common.entity.PageDTO;
 import com.sinata.common.exception.ServiceException;
+import com.sinata.common.utils.BeanUtils;
+import com.sinata.common.utils.CollUtils;
 import com.sinata.common.utils.SecurityUtils;
 import com.sinata.common.utils.StringUtils;
 import com.sinata.common.utils.spring.SpringUtils;
 import com.sinata.system.domain.SysRoleDept;
 import com.sinata.system.domain.SysRoleMenu;
 import com.sinata.system.domain.SysUserRole;
+import com.sinata.system.domain.dto.SysRoleDTO;
+import com.sinata.system.domain.query.KeyWordQuery;
+import com.sinata.system.domain.vo.SysRoleVO;
 import com.sinata.system.mapper.SysRoleDeptMapper;
 import com.sinata.system.mapper.SysRoleMapper;
 import com.sinata.system.mapper.SysRoleMenuMapper;
 import com.sinata.system.mapper.SysUserRoleMapper;
+import com.sinata.system.service.ISysMenuService;
 import com.sinata.system.service.ISysRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 角色 业务层处理
@@ -31,7 +44,7 @@
  * @author ruoyi
  */
 @Service
-public class SysRoleServiceImpl implements ISysRoleService
+public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService
 {
     @Autowired
     private SysRoleMapper roleMapper;
@@ -44,6 +57,8 @@
 
     @Autowired
     private SysRoleDeptMapper roleDeptMapper;
+    @Autowired
+    private ISysMenuService menuService;
 
     /**
      * 根据条件分页查询角色数据
@@ -424,4 +439,50 @@
         }
         return userRoleMapper.batchUserRole(list);
     }
+
+    /**
+     * 角色分页列表
+     *
+     * @param query
+     * @return
+     */
+    @Override
+    public PageDTO<SysRoleVO> pageList(KeyWordQuery query) {
+        Page<SysRoleVO> page = baseMapper.pageList(new Page<SysRoleVO>(query.getPageCurr(), query.getPageSize()), query.getKeyword());
+        return PageDTO.of(page);
+    }
+
+    /**
+     * 保存角色信息
+     *
+     * @param dto
+     * @return
+     */
+    @Override
+    public void saveRole(SysRoleDTO dto) {
+        SysRole sysRole = BeanUtils.copyBean(dto, SysRole.class);
+        if (Objects.nonNull(sysRole.getRoleId())) {
+            baseMapper.insert(sysRole);
+        } else {
+            baseMapper.updateById(sysRole);
+        }
+    }
+
+    /**
+     * 获取角色详情
+     *
+     * @param roleId
+     * @return
+     */
+    @Override
+    public SysRoleVO getDetailInfo(Long roleId) {
+        SysRole sysRole = baseMapper.selectRoleById(roleId);
+        SysRoleVO sysRoleVO = BeanUtils.copyBean(sysRole, SysRoleVO.class);
+        //查询用户菜单id列表
+        List<SysMenu> sysMenus = menuService.selectListByRoleId(roleId);
+        if (CollUtils.isNotEmpty(sysMenus)) {
+            sysRoleVO.setMenuIds(sysMenus.stream().map(SysMenu::getMenuId).collect(Collectors.toList()));
+        }
+        return sysRoleVO;
+    }
 }
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserDepartmentServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserDepartmentServiceImpl.java
new file mode 100644
index 0000000..43b04fb
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserDepartmentServiceImpl.java
@@ -0,0 +1,20 @@
+package com.sinata.system.service.impl;
+
+import com.sinata.system.domain.SysUserDepartment;
+import com.sinata.system.mapper.SysUserDepartmentMapper;
+import com.sinata.system.service.SysUserDepartmentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户区域关系 服务实现类
+ * </p>
+ *
+ * @author mitao
+ * @since 2024-12-02
+ */
+@Service
+public class SysUserDepartmentServiceImpl extends ServiceImpl<SysUserDepartmentMapper, SysUserDepartment> implements SysUserDepartmentService {
+
+}
diff --git a/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentInfoMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentInfoMapper.xml
new file mode 100644
index 0000000..2423296
--- /dev/null
+++ b/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentInfoMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sinata.system.mapper.SysDepartmentInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.sinata.system.domain.SysDepartmentInfo">
+        <id column="ID" property="id" />
+        <result column="DEPARTMENT_ID" property="departmentId" />
+        <result column="INSTITUTION_LEVEL" property="institutionLevel" />
+        <result column="INSTITUTION_TYPE" property="institutionType" />
+        <result column="DAILY_MIN_WASTE_QUANTITY" property="dailyMinWasteQuantity" />
+        <result column="DAILY_MAX_WASTE_QUANTITY" property="dailyMaxWasteQuantity" />
+        <result column="MONTHLY_MIN_WASTE_QUANTITY" property="monthlyMinWasteQuantity" />
+        <result column="MONTHLY_MAX_WASTE_QUANTITY" property="monthlyMaxWasteQuantity" />
+        <result column="DISPOSAL_LICENSE_NUMBER" property="disposalLicenseNumber" />
+        <result column="DISPOSAL_LICENSE_IMAGE" property="disposalLicenseImage" />
+        <result column="DAILY_DISPOSAL_QUANTITY" property="dailyDisposalQuantity" />
+        <result column="YEARLY_DISPOSAL_QUANTITY" property="yearlyDisposalQuantity" />
+        <result column="MAIN_TECHNOLOGY" property="mainTechnology" />
+        <result column="MAXIMUM_STORAGE_CAPACITY" property="maximumStorageCapacity" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        ID, DEPARTMENT_ID, INSTITUTION_LEVEL, INSTITUTION_TYPE, DAILY_MIN_WASTE_QUANTITY, DAILY_MAX_WASTE_QUANTITY, MONTHLY_MIN_WASTE_QUANTITY, MONTHLY_MAX_WASTE_QUANTITY, DISPOSAL_LICENSE_NUMBER, DISPOSAL_LICENSE_IMAGE, DAILY_DISPOSAL_QUANTITY, YEARLY_DISPOSAL_QUANTITY, MAIN_TECHNOLOGY, MAXIMUM_STORAGE_CAPACITY
+    </sql>
+
+</mapper>
diff --git a/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml
new file mode 100644
index 0000000..769663e
--- /dev/null
+++ b/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sinata.system.mapper.SysDepartmentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.sinata.system.domain.SysDepartment">
+        <id column="ID" property="id" />
+        <result column="DEL_FLAG" property="delFlag" />
+        <result column="CREATE_BY" property="createBy" />
+        <result column="CREATE_TIME" property="createTime" />
+        <result column="UPDATE_BY" property="updateBy" />
+        <result column="UPDATE_TIME" property="updateTime" />
+        <result column="DEPARTMENT_NAME" property="departmentName" />
+        <result column="PARENT_ID" property="parentId" />
+        <result column="TREE_CODE" property="treeCode" />
+        <result column="ORG_TYPE" property="orgType" />
+        <result column="ORG_CODE" property="orgCode" />
+        <result column="ADDRESS" property="address" />
+        <result column="LONGITUDE" property="longitude" />
+        <result column="LATITUDE" property="latitude" />
+        <result column="CONTACT_PERSON" property="contactPerson" />
+        <result column="CONTACT_PHONE" property="contactPhone" />
+        <result column="REMARK" property="remark" />
+        <result column="LEGAL_PERSON" property="legalPerson" />
+        <result column="UNIFIED_SOCIAL_CREDIT_CODE" property="unifiedSocialCreditCode" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        DEL_FLAG,
+        CREATE_BY,
+        CREATE_TIME,
+        UPDATE_BY,
+        UPDATE_TIME,
+        ID, DEPARTMENT_NAME, PARENT_ID, TREE_CODE, ORG_TYPE, ORG_CODE, ADDRESS, LONGITUDE, LATITUDE, CONTACT_PERSON, CONTACT_PHONE, REMARK, LEGAL_PERSON, UNIFIED_SOCIAL_CREDIT_CODE
+    </sql>
+    <select id="getDepartmentListByType" resultType="com.sinata.system.domain.SysDepartment">
+        SELECT t2.* FROM SYS_USER_DEPARTMENT t1 LEFT JOIN SYS_DEPARTMENT t2 ON t1.DEPARTMENT_ID = t2.ID
+        <where>
+            t1.USER_ID = #{userId} AND t2.ORG_TYPE = #{type}
+        </where>
+    </select>
+
+</mapper>
diff --git a/medicalWaste-system/src/main/resources/mapper/system/SysMenuMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/SysMenuMapper.xml
index 119906b..22c54dd 100644
--- a/medicalWaste-system/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/medicalWaste-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -132,7 +132,7 @@
 		<include refid="selectMenuVo"/>
 		where menu_name=#{menuName} and parent_id = #{parentId} limit 1
 	</select>
-	
+
 	<update id="updateMenu" parameterType="SysMenu">
 		update sys_menu
 		<set>
@@ -198,9 +198,29 @@
 		sysdate()
 		)
 	</insert>
-	
+
 	<delete id="deleteMenuById" parameterType="Long">
 	    delete from sys_menu where menu_id = #{menuId}
 	</delete>
+	<select id="selectListByRoleId" resultType="com.sinata.common.core.domain.entity.SysMenu">
+		select sm.menu_id           AS menuId,
+			   sm.menu_name         AS menuName,
+			   sm.parent_id         AS parentId,
+			   sm.order_num         AS orderNum,
+			   sm."path"            AS path,
+			   sm.component         AS component,
+			   sm."query"           AS query,
+			   sm.is_frame          AS isFrame,
+			   sm.is_cache          AS isCache,
+			   sm.menu_type         AS menuType,
+			   sm.visible           AS visible,
+			   sm.status            AS status,
+			   ifnull(sm.perms, '') as perms,
+			   sm.icon              AS icon,
+			   sm.create_time       AS createTime
+		from sys_role_menu srm
+				 left join sys_menu sm on srm.menu_id = sm.menu_id
+		WHERE srm.role_id = #{roleId}
+	</select>
 
-</mapper> 
\ No newline at end of file
+</mapper>
diff --git a/medicalWaste-system/src/main/resources/mapper/system/SysRoleMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/SysRoleMapper.xml
index cc9b958..86ba368 100644
--- a/medicalWaste-system/src/main/resources/mapper/system/SysRoleMapper.xml
+++ b/medicalWaste-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -92,8 +92,40 @@
 		<include refid="selectRoleVo"/>
 		 where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
 	</select>
-	
- 	<insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
+	<select id="pageList" resultType="com.sinata.system.domain.vo.SysRoleVO">
+		SELECT
+		r.ROLE_ID,
+		r.ROLE_NAME,
+		r.ROLE_KEY,
+		r.ROLE_SORT,
+		r.STATUS,
+		r.DEL_FLAG,
+		r.CREATE_BY,
+		r.CREATE_TIME,
+		r.UPDATE_BY,
+		r.UPDATE_TIME,
+		r.REMARK,
+		r.MANAGE_ROLE_ID_STR,
+		-- 使用 LISTAGG 拼接可管理角色的角色ID,使用 ';' 分隔
+		LISTAGG(r2.ROLE_NAME, ';') WITHIN GROUP (ORDER BY r2.ROLE_ID) AS manageRoleStr,
+		u.NICK_NAME
+		FROM
+		SYS_ROLE r
+		LEFT JOIN
+		SYS_ROLE r2 ON INSTR(r.MANAGE_ROLE_ID_STR, TO_CHAR(r2.ROLE_ID)) > 0
+		LEFT JOIN SYS_USER u ON r.CREATE_BY = u.USER_ID
+		<where>
+			<if test="keyword != null and keyword != ''">
+				AND r.ROLE_NAME LIKE CONCAT('%', #{keyword}, '%')
+			</if>
+		</where>
+		GROUP BY
+		r.ROLE_ID, r.ROLE_NAME, r.ROLE_KEY, r.ROLE_SORT, r.STATUS, r.DEL_FLAG, r.CREATE_BY, r.CREATE_TIME, r.UPDATE_BY,
+		r.UPDATE_TIME, r.REMARK, r.MANAGE_ROLE_ID_STR;
+
+	</select>
+
+	<insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
  		insert into sys_role(
  			<if test="roleId != null and roleId != 0">role_id,</if>
  			<if test="roleName != null and roleName != ''">role_name,</if>
diff --git a/medicalWaste-system/src/main/resources/mapper/system/SysUserDepartmentMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/SysUserDepartmentMapper.xml
new file mode 100644
index 0000000..f9a89e4
--- /dev/null
+++ b/medicalWaste-system/src/main/resources/mapper/system/SysUserDepartmentMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sinata.system.mapper.SysUserDepartmentMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.sinata.system.domain.SysUserDepartment">
+        <id column="ID" property="id" />
+        <result column="USER_ID" property="userId" />
+        <result column="DEPARTMENT_ID" property="departmentId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        ID, USER_ID, DEPARTMENT_ID
+    </sql>
+
+</mapper>

--
Gitblit v1.7.1