mitao
2024-12-03 0832f454bc53eafee9c6b7eedb32481a021257c3
系统管理:数据字典、角色管理接口
13 文件已重命名
23个文件已修改
28个文件已添加
1690 ■■■■ 已修改文件
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentInfoController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysUserDepartmentController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysConfigController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDeptController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictDataController.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictTypeController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysIndexController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysLoginController.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysNoticeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysPostController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysProfileController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRegisterController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRoleController.java 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/test/java/DepartmentTest.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/test/java/MybatisPlusGeneraotr.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-common/src/main/java/com/sinata/common/core/domain/BaseEntity.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictData.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysDictType.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-common/src/main/java/com/sinata/common/core/domain/entity/SysRole.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-common/src/main/java/com/sinata/common/core/text/Convert.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-common/src/main/java/com/sinata/common/entity/BaseModel.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-common/src/main/java/com/sinata/common/entity/BasePage.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-framework/src/main/java/com/sinata/framework/config/SecurityConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-framework/src/main/java/com/sinata/framework/config/handler/MyMetaObjectHandler.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/SysUserDepartment.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysDictDataDTO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysRoleDTO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/query/KeyWordQuery.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDepartmentVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysRoleVO.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/enums/DepartmentEnum.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentInfoMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictDataMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDictTypeMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysMenuMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysRoleMapper.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysUserDepartmentMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictDataService.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/ISysDictTypeService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/ISysMenuService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/ISysRoleService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentInfoService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/SysUserDepartmentService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentInfoServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictTypeServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysMenuServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysRoleServiceImpl.java 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserDepartmentServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/SysDepartmentInfoMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/SysMenuMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/SysRoleMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/SysUserDepartmentMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentController.java
New file
@@ -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()));
    }
}
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysDepartmentInfoController.java
New file
@@ -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 {
}
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/SysUserDepartmentController.java
New file
@@ -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 {
}
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysConfigController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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;
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDeptController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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;
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictDataController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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)
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysDictTypeController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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")
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysIndexController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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;
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysLoginController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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();
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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)
    {
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysNoticeController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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;
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysPostController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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;
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysProfileController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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;
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRegisterController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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;
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysRoleController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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)
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysUserController.java
File was renamed from medicalWaste-admin/src/main/java/com/sinata/web/controller/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;
medicalWaste-admin/src/main/resources/application.yml
@@ -195,7 +195,7 @@
  # 是否开启swagger
  enabled: true
  # 请求前缀
  pathMapping: /dev-api
  pathMapping: /
# 防止XSS攻击
xss:
medicalWaste-admin/src/test/java/DepartmentTest.java
New file
@@ -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());
    }
}
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);
                        }
                )
                // 模板配置
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()
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;
    /** 字典排序 */
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停用) */
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()
    {
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;
/**
 * 类型转换器
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;
    }
}
medicalWaste-common/src/main/java/com/sinata/common/entity/BasePage.java
New file
@@ -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 +
                '}';
    }
}
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()
medicalWaste-framework/src/main/java/com/sinata/framework/config/handler/MyMetaObjectHandler.java
New file
@@ -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);
            }
        }
    }
}
medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartment.java
New file
@@ -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;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/SysDepartmentInfo.java
New file
@@ -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;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/SysUserDepartment.java
New file
@@ -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;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysDictDataDTO.java
New file
@@ -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;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/dto/SysRoleDTO.java
New file
@@ -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;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/query/KeyWordQuery.java
New file
@@ -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;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDepartmentVO.java
New file
@@ -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<>();
}
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java
New file
@@ -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;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysRoleVO.java
New file
@@ -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;
}
medicalWaste-system/src/main/java/com/sinata/system/enums/DepartmentEnum.java
New file
@@ -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;
    }
}
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentInfoMapper.java
New file
@@ -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> {
}
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java
New file
@@ -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);
}
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>
{
    /**
     * 根据条件分页查询字典数据
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>
{
    /**
     * 根据条件分页查询字典类型
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);
}
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);
}
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysUserDepartmentMapper.java
New file
@@ -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> {
}
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);
}
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>
{
    /**
     * 根据条件分页查询字典类型
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);
}
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);
}
medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentInfoService.java
New file
@@ -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> {
}
medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java
New file
@@ -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);
}
medicalWaste-system/src/main/java/com/sinata/system/service/SysUserDepartmentService.java
New file
@@ -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> {
}
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentInfoServiceImpl.java
New file
@@ -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 {
}
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java
New file
@@ -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;
    }
}
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);
        }
    }
}
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;
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);
    }
}
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;
    }
}
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserDepartmentServiceImpl.java
New file
@@ -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 {
}
medicalWaste-system/src/main/resources/mapper/system/SysDepartmentInfoMapper.xml
New file
@@ -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>
medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml
New file
@@ -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>
medicalWaste-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -202,5 +202,25 @@
    <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> 
medicalWaste-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -92,6 +92,38 @@
        <include refid="selectRoleVo"/>
         where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
    </select>
    <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(
medicalWaste-system/src/main/resources/mapper/system/SysUserDepartmentMapper.xml
New file
@@ -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>