Browse Source

新增挂锁在作业票中的使用逻辑

车车 11 tháng trước cách đây
mục cha
commit
2e6df66890

+ 25 - 17
ktg-admin/src/main/java/com/ktg/web/controller/system/SysRoleController.java

@@ -1,18 +1,7 @@
 package com.ktg.web.controller.system;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ktg.common.annotation.Log;
 import com.ktg.common.constant.UserConstants;
 import com.ktg.common.core.controller.BaseController;
@@ -29,10 +18,17 @@ import com.ktg.framework.web.service.TokenService;
 import com.ktg.system.domain.SysUserRole;
 import com.ktg.system.service.ISysRoleService;
 import com.ktg.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * 角色信息
- * 
+ *
  * @author ruoyi
  */
 @RestController
@@ -44,10 +40,10 @@ public class SysRoleController extends BaseController
 
     @Autowired
     private TokenService tokenService;
-    
+
     @Autowired
     private SysPermissionService permissionService;
-    
+
     @Autowired
     private ISysUserService userService;
 
@@ -121,7 +117,7 @@ public class SysRoleController extends BaseController
             return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
         }
         role.setUpdateBy(getUsername());
-        
+
         if (roleService.updateRole(role) > 0)
         {
             // 更新缓存用户权限
@@ -197,6 +193,18 @@ public class SysRoleController extends BaseController
         return getDataTable(list);
     }
 
+    @PreAuthorize("@ss.hasPermi('system:role:list')")
+    @GetMapping("/authUser/allocatedListByRoleKey")
+    public TableDataInfo allocatedListByRoleKey(SysUser user)
+    {
+        Assert.notBlank(user.getRoleKey(), "字符权限不可为空!");
+        SysRole sysRole = roleService.getOne(Wrappers.<SysRole>lambdaQuery().eq(SysRole::getRoleKey, user.getRoleKey()));
+        user.setRoleId(sysRole.getRoleId());
+        startPage();
+        List<SysUser> list = userService.selectAllocatedList(user);
+        return getDataTable(list);
+    }
+
     /**
      * 查询未分配用户角色列表
      */

+ 11 - 6
ktg-common/src/main/java/com/ktg/common/core/domain/entity/SysRole.java

@@ -1,16 +1,18 @@
 package com.ktg.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.TableField;
 import com.ktg.common.annotation.Excel;
 import com.ktg.common.annotation.Excel.ColumnType;
 import com.ktg.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_role
- * 
+ *
  * @author ruoyi
  */
 public class SysRole extends BaseEntity
@@ -51,12 +53,15 @@ public class SysRole extends BaseEntity
     private String delFlag;
 
     /** 用户是否存在此角色标识 默认不存在 */
+    @TableField(exist = false)
     private boolean flag = false;
 
     /** 菜单组 */
+    @TableField(exist = false)
     private Long[] menuIds;
 
     /** 部门组(数据权限) */
+    @TableField(exist = false)
     private Long[] deptIds;
 
     public SysRole()
@@ -203,7 +208,7 @@ public class SysRole extends BaseEntity
     {
         this.deptIds = deptIds;
     }
-    
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 21 - 9
ktg-common/src/main/java/com/ktg/common/core/domain/entity/SysUser.java

@@ -1,13 +1,5 @@
 package com.ktg.common.core.domain.entity;
 
-import java.util.Date;
-import java.util.List;
-import javax.validation.constraints.*;
-
-import com.ktg.common.core.domain.entity.SysDept;
-import com.ktg.common.core.domain.entity.SysRole;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ktg.common.annotation.Excel;
@@ -16,10 +8,18 @@ import com.ktg.common.annotation.Excel.Type;
 import com.ktg.common.annotation.Excels;
 import com.ktg.common.core.domain.BaseEntity;
 import com.ktg.common.xss.Xss;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 用户对象 sys_user
- * 
+ *
  * @author ktg
  */
 public class SysUser extends BaseEntity
@@ -97,6 +97,8 @@ public class SysUser extends BaseEntity
     /** 角色ID */
     private Long roleId;
 
+    private String roleKey;
+
     public SysUser()
     {
 
@@ -317,6 +319,16 @@ public class SysUser extends BaseEntity
         this.roleId = roleId;
     }
 
+    public String getRoleKey()
+    {
+        return roleKey;
+    }
+
+    public void setRoleKey(String roleKey)
+    {
+        this.roleKey = roleKey;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 32 - 1
ktg-iscs/src/main/java/com/ktg/iscs/controller/HardwareApiController.java

@@ -4,7 +4,7 @@ import com.ktg.common.annotation.Log;
 import com.ktg.common.core.controller.BaseController;
 import com.ktg.common.enums.BusinessType;
 import com.ktg.common.pojo.CommonResult;
-import com.ktg.iscs.domain.dto.hardwareApi.UpdateKeyStatusDTO;
+import com.ktg.iscs.domain.dto.hardwareApi.*;
 import com.ktg.iscs.service.HardwareApiService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -15,6 +15,8 @@ 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;
+
 /**
  * 硬件调用接口
  *
@@ -37,8 +39,37 @@ public class HardwareApiController extends BaseController
         return CommonResult.success(hardwareApiService.updateTicketKetStatus(dto));
     }
 
+    @ApiOperation("取出挂锁时更新数据")
+    @Log(title = "取出挂锁时更新数据", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateTicketLockTake")
+    public CommonResult<Boolean> updateTicketLockTake(@RequestBody @Parameter(name = "list", description = "修改数据类,放到body") List<TakeTicketLockDTO> list)
+    {
+        return CommonResult.success(hardwareApiService.updateTicketLockTake(list));
+    }
+
+    @ApiOperation("归还挂锁时更新数据")
+    @Log(title = "归还挂锁时更新数据", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateTicketLockReturn")
+    public CommonResult<Boolean> updateTicketLockReturn(@RequestBody @Parameter(name = "list", description = "修改数据类,放到body") ReturnTicketLockDTO dto)
+    {
+        return CommonResult.success(hardwareApiService.updateTicketLockReturn(dto));
+    }
 
+    @ApiOperation("挂锁上锁时更新数据,更新挂锁和哪个隔离点进行了绑定")
+    @Log(title = "挂锁上锁时更新数据,更新挂锁和哪个隔离点进行了绑定", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateTicketLockPoint")
+    public CommonResult<Boolean> updateTicketLockPoint(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") LockPointDTO dto)
+    {
+        return CommonResult.success(hardwareApiService.updateTicketLockPoint(dto));
+    }
 
+    @ApiOperation("更新作业票的挂锁状态(解锁的时候)")
+    @Log(title = "更新作业票的挂锁状态", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateTicketLockStatus")
+    public CommonResult<Boolean> updateTicketLockStatus(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") UpdateTicketStatusDTO dto)
+    {
+        return CommonResult.success(hardwareApiService.updateTicketLockStatus(dto));
+    }
 
 
 }

+ 24 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/hardwareApi/LockPointDTO.java

@@ -0,0 +1,24 @@
+package com.ktg.iscs.domain.dto.hardwareApi;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * UpdateTicketLockDTO
+ *
+ * @author cgj
+ * @date 2024-10-16
+ */
+@Data
+public class LockPointDTO {
+
+    @ApiModelProperty(value = "作业票ID")
+    private Long ticketId;
+
+    @ApiModelProperty(value = "挂锁NFC")
+    private String lockNfc;
+
+    @ApiModelProperty(value = "隔离点nfc")
+    private String pointNfc;
+
+}

+ 24 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/hardwareApi/ReturnTicketLockDTO.java

@@ -0,0 +1,24 @@
+package com.ktg.iscs.domain.dto.hardwareApi;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * UpdateTicketLockDTO
+ *
+ * @author cgj
+ * @date 2024-10-16
+ */
+@Data
+public class ReturnTicketLockDTO {
+
+    @ApiModelProperty(value = "作业票ID")
+    private Long ticketId;
+
+    @ApiModelProperty(value = "挂锁NFC")
+    private String lockNfc;
+
+    @ApiModelProperty(value = "归还硬件ID")
+    private Long toHardwareId;
+
+}

+ 27 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/hardwareApi/TakeTicketLockDTO.java

@@ -0,0 +1,27 @@
+package com.ktg.iscs.domain.dto.hardwareApi;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * UpdateTicketLockDTO
+ *
+ * @author cgj
+ * @date 2024-10-16
+ */
+@Data
+public class TakeTicketLockDTO {
+
+    @ApiModelProperty(value = "作业票ID")
+    private Long ticketId;
+
+    @ApiModelProperty(value = "挂锁NFC")
+    private String lockNfc;
+
+    @ApiModelProperty(value = "取出硬件ID")
+    private Long fromHardwareId;
+
+    @ApiModelProperty(value = "对接时不需要传入,给了NFC就行")
+    private Long lockId;
+
+}

+ 24 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/hardwareApi/UpdateTicketStatusDTO.java

@@ -0,0 +1,24 @@
+package com.ktg.iscs.domain.dto.hardwareApi;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * UpdateTicketLockDTO
+ *
+ * @author cgj
+ * @date 2024-10-16
+ */
+@Data
+public class UpdateTicketStatusDTO {
+
+    @ApiModelProperty(value = "作业票ID")
+    private Long ticketId;
+
+    @ApiModelProperty(value = "挂锁NFC")
+    private String lockNfc;
+
+    @ApiModelProperty(value = "锁具状态(0-待取出 1-未上锁 2-已上锁 3-已解锁 4-已归还)")
+    private String lockStatus;
+
+}

+ 36 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/HardwareApiService.java

@@ -1,6 +1,8 @@
 package com.ktg.iscs.service;
 
-import com.ktg.iscs.domain.dto.hardwareApi.UpdateKeyStatusDTO;
+import com.ktg.iscs.domain.dto.hardwareApi.*;
+
+import java.util.List;
 
 /**
  * 硬件调用接口
@@ -10,6 +12,39 @@ import com.ktg.iscs.domain.dto.hardwareApi.UpdateKeyStatusDTO;
  */
 public interface HardwareApiService {
 
+    /**
+     * 修改钥匙状态(上锁时取出和归还 / 解锁时取出和归还)
+     * @param dto
+     * @return
+     */
     Boolean updateTicketKetStatus(UpdateKeyStatusDTO dto);
 
+    /**
+     * 取出挂锁时更新数据
+     * @param list
+     * @return
+     */
+    Boolean updateTicketLockTake(List<TakeTicketLockDTO> list);
+
+    /**
+     * 归还挂锁时更新数据
+     * @param dto
+     * @return
+     */
+    Boolean updateTicketLockReturn(ReturnTicketLockDTO dto);
+
+    /**
+     * 挂锁上锁时更新数据,更新挂锁和哪个隔离点进行了绑定
+     * @param dto
+     * @return
+     */
+    Boolean updateTicketLockPoint(LockPointDTO dto);
+
+    /**
+     * 更新作业票的挂锁状态
+     * @param dto
+     * @return
+     */
+    Boolean updateTicketLockStatus(UpdateTicketStatusDTO dto);
+
 }

+ 102 - 8
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/HardwareApiServiceImpl.java

@@ -2,18 +2,15 @@ package com.ktg.iscs.service.impl;
 
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.ktg.iscs.domain.IsJobTicket;
-import com.ktg.iscs.domain.IsJobTicketKey;
-import com.ktg.iscs.domain.IsKey;
-import com.ktg.iscs.domain.dto.hardwareApi.UpdateKeyStatusDTO;
-import com.ktg.iscs.service.HardwareApiService;
-import com.ktg.iscs.service.IIsJobTicketKeyService;
-import com.ktg.iscs.service.IIsJobTicketService;
-import com.ktg.iscs.service.IIsKeyService;
+import com.ktg.iscs.domain.*;
+import com.ktg.iscs.domain.dto.hardwareApi.*;
+import com.ktg.iscs.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 硬件Service业务层处理
@@ -29,6 +26,12 @@ public class HardwareApiServiceImpl implements HardwareApiService {
     private IIsKeyService isKeyService;
     @Autowired
     private IIsJobTicketKeyService iIsJobTicketKeyService;
+    @Autowired
+    private IIsLockService iIsLockService;
+    @Autowired
+    private IIsJobTicketLockService iIsJobTicketLockService;
+    @Autowired
+    private IIsIsolationPointService iIsIsolationPointService;
 
     @Override
     public Boolean updateTicketKetStatus(UpdateKeyStatusDTO dto) {
@@ -78,4 +81,95 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         }
         return true;
     }
+
+    @Override
+    public Boolean updateTicketLockTake(List<TakeTicketLockDTO> list) {
+        Assert.notNull(list.get(0).getTicketId(), "请告诉我关于哪个作业票!");
+        Assert.isFalse(list.isEmpty(), "请取出至少一把挂锁!");
+        int size = list.size();
+        List<String> nfcList = list.stream().map(TakeTicketLockDTO::getLockNfc).collect(Collectors.toList());
+        Assert.isFalse(nfcList.isEmpty() || size != nfcList.size(), "钥匙NFC不可为空!");
+        // 1.查询挂锁信息
+        List<IsLock> lockList = iIsLockService.list(Wrappers.<IsLock>lambdaQuery()
+                .in(IsLock::getLockNfc, nfcList));
+        Assert.isFalse(lockList.isEmpty(), "通过nfc查询不到相关挂锁信息!");
+        // 2.获取本次作业票产生的和挂锁关联的数据,因为取挂锁可能分批,多以按顺序更新关联数据的前几个
+        List<IsJobTicketLock> jobTicketLockList = iIsJobTicketLockService.list(Wrappers.<IsJobTicketLock>lambdaQuery()
+                .eq(IsJobTicketLock::getTicketId, list.get(0).getTicketId())
+                .isNull(IsJobTicketLock::getLockId)
+                .orderByAsc(IsJobTicketLock::getRecordId)
+                .last("limit" + size));
+        // 3.把查出来的锁id放到对应的dto中,组装查出来的IsJobTicketLock数据
+        for (int i = 0; i < list.size(); i++) {
+            for (IsLock isLock : lockList) {
+                if (list.get(i).getLockNfc().equals(isLock.getLockNfc())) {
+                    list.get(i).setLockId(isLock.getLockId());
+                }
+            }
+            // 3.1组装更新的数据
+            IsJobTicketLock isJobTicketLock = jobTicketLockList.get(i);
+            isJobTicketLock.setLockId(list.get(i).getLockId());
+            isJobTicketLock.setFromHardwareId(list.get(i).getFromHardwareId());
+            isJobTicketLock.setLockStatus("1");
+        }
+        // 4.开始批量更新
+        return iIsJobTicketLockService.updateBatchById(jobTicketLockList);
+    }
+
+    @Override
+    public Boolean updateTicketLockReturn(ReturnTicketLockDTO dto) {
+        Assert.notNull(dto.getTicketId(), "请告诉我关于哪个作业票!");
+        Assert.notBlank(dto.getLockNfc(), "挂锁nfc缺失!");
+        Assert.notNull(dto.getToHardwareId(), "请告知归还到哪一个柜子!");
+        // 1.通过nfc查询挂锁信息
+        IsLock lock = iIsLockService.getOne(Wrappers.<IsLock>lambdaQuery()
+                .eq(IsLock::getLockNfc, dto.getLockNfc()));
+        Assert.notNull(lock, "该nfc无对应的挂锁信息");
+        // 2.开始更新归还信息
+        iIsJobTicketLockService.update(Wrappers.<IsJobTicketLock>lambdaUpdate()
+                .eq(IsJobTicketLock::getTicketId, dto.getTicketId())
+                .eq(IsJobTicketLock::getLockId, lock.getLockId())
+                .set(IsJobTicketLock::getToHardwareId, dto.getToHardwareId())
+                .set(IsJobTicketLock::getLockStatus, "4"));
+        return true;
+    }
+
+    @Override
+    public Boolean updateTicketLockPoint(LockPointDTO dto) {
+        Assert.notNull(dto.getTicketId(), "请告诉我关于哪个作业票!");
+        Assert.notBlank(dto.getLockNfc(), "挂锁nfc缺失!");
+        Assert.notNull(dto.getPointNfc(), "请告知隔离点信息!");
+        // 1.通过nfc查询挂锁信息
+        IsLock lock = iIsLockService.getOne(Wrappers.<IsLock>lambdaQuery()
+                .eq(IsLock::getLockNfc, dto.getLockNfc()));
+        Assert.notNull(lock, "该nfc无对应的挂锁信息");
+        // 2.通过nfc查询隔离点信息
+        IsIsolationPoint point = iIsIsolationPointService.getOne(Wrappers.<IsIsolationPoint>lambdaQuery()
+                .eq(IsIsolationPoint::getPointNfc, dto.getPointNfc()));
+        Assert.notNull(point, "该nfc无对应的隔离点信息");
+        // 3.开始更新绑定关系
+        iIsJobTicketLockService.update(Wrappers.<IsJobTicketLock>lambdaUpdate()
+                .eq(IsJobTicketLock::getTicketId, dto.getTicketId())
+                .eq(IsJobTicketLock::getLockId, lock.getLockId())
+                .set(IsJobTicketLock::getIsolationPointId, point.getPointId())
+                .set(IsJobTicketLock::getLockStatus, "2"));
+        return true;
+    }
+
+    @Override
+    public Boolean updateTicketLockStatus(UpdateTicketStatusDTO dto) {
+        Assert.notNull(dto.getTicketId(), "请告诉我关于哪个作业票!");
+        Assert.notBlank(dto.getLockNfc(), "挂锁nfc缺失!");
+        Assert.notBlank(dto.getLockStatus(), "锁具状态缺失!");
+        // 1.通过nfc查询挂锁信息
+        IsLock lock = iIsLockService.getOne(Wrappers.<IsLock>lambdaQuery()
+                .eq(IsLock::getLockNfc, dto.getLockNfc()));
+        Assert.notNull(lock, "该nfc无对应的挂锁信息");
+        // 3.开始更新绑定关系
+        iIsJobTicketLockService.update(Wrappers.<IsJobTicketLock>lambdaUpdate()
+                .eq(IsJobTicketLock::getTicketId, dto.getTicketId())
+                .eq(IsJobTicketLock::getLockId, lock.getLockId())
+                .set(IsJobTicketLock::getLockStatus, dto.getLockStatus()));
+        return true;
+    }
 }

+ 1 - 1
ktg-iscs/src/main/resources/mapper/IsMaterialsReminderMapper.xml

@@ -108,7 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>
             r.reminder_type = #{dto.reminderType}
             <if test="dto.readFlag != null">
-                and r.read_lag = #{dto.readFlag}
+                and r.read_flag = #{dto.readFlag}
             </if>
             <if test="dto.materialsCode != null and dto.materialsCode.trim != ''">
                 and m.materials_code like concat('%',#{dto.materialsCode},'%')

+ 4 - 2
ktg-system/src/main/java/com/ktg/system/mapper/SysRoleMapper.java

@@ -1,14 +1,16 @@
 package com.ktg.system.mapper;
 
-import java.util.List;
 import com.ktg.common.core.domain.entity.SysRole;
+import com.ktg.common.mapper.BaseMapperX;
+
+import java.util.List;
 
 /**
  * 角色表 数据层
  *
  * @author guoruan
  */
-public interface SysRoleMapper
+public interface SysRoleMapper extends BaseMapperX<SysRole>
 {
     /**
      * 根据条件分页查询角色数据

+ 5 - 3
ktg-system/src/main/java/com/ktg/system/service/ISysRoleService.java

@@ -1,16 +1,18 @@
 package com.ktg.system.service;
 
-import java.util.List;
-import java.util.Set;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ktg.common.core.domain.entity.SysRole;
 import com.ktg.system.domain.SysUserRole;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * 角色业务层
  *
  * @author guoruan
  */
-public interface ISysRoleService
+public interface ISysRoleService extends IService<SysRole>
 {
     /**
      * 根据条件分页查询角色数据

+ 7 - 9
ktg-system/src/main/java/com/ktg/system/service/impl/SysRoleServiceImpl.java

@@ -1,13 +1,6 @@
 package com.ktg.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.service.impl.ServiceImpl;
 import com.ktg.common.annotation.DataScope;
 import com.ktg.common.constant.UserConstants;
 import com.ktg.common.core.domain.entity.SysRole;
@@ -24,6 +17,11 @@ import com.ktg.system.mapper.SysRoleMapper;
 import com.ktg.system.mapper.SysRoleMenuMapper;
 import com.ktg.system.mapper.SysUserRoleMapper;
 import com.ktg.system.service.ISysRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
 
 /**
  * 角色 业务层处理
@@ -31,7 +29,7 @@ import com.ktg.system.service.ISysRoleService;
  * @author guoruan
  */
 @Service
-public class SysRoleServiceImpl implements ISysRoleService
+public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService
 {
     @Autowired
     private SysRoleMapper roleMapper;