Bläddra i källkod

数据权限调整

lipenghui 4 månader sedan
förälder
incheckning
b6355f806a
21 ändrade filer med 76 tillägg och 18 borttagningar
  1. 32 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/config/PmsDataPermissionConfiguration.java
  2. 2 3
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java
  3. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDevicePageReqVO.java
  4. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDeviceRespVO.java
  5. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDeviceSaveReqVO.java
  6. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifyListReqVO.java
  7. 1 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifyPageReqVO.java
  8. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifyRespVO.java
  9. 1 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifySaveReqVO.java
  10. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifySimpleRespVO.java
  11. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoPageReqVO.java
  12. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoRespVO.java
  13. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoSaveReqVO.java
  14. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/IotDeviceDO.java
  15. 1 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/IotInfoClassifyDO.java
  16. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/IotInfoDO.java
  17. 7 3
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotDeviceMapper.java
  18. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotInfoMapper.java
  19. 14 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceServiceImpl.java
  20. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/util/IotDeviceConvert.java
  21. 2 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java

+ 32 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/config/PmsDataPermissionConfiguration.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.pms.config;
+
+import cn.iocoder.yudao.framework.datapermission.core.rule.dept.DeptDataPermissionRuleCustomizer;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.SupplierDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * system 模块的数据权限 Configuration
+ *
+ * @author 芋道源码
+ */
+@Configuration(proxyBeanMethods = false)
+public class PmsDataPermissionConfiguration {
+
+    @Bean(name = "pmsDeptDataPermissionRuleCustomizer")
+    public DeptDataPermissionRuleCustomizer sysDeptDataPermissionRuleCustomizer() {
+        return rule -> {
+            // dept
+            rule.addDeptColumn(SupplierDO.class);
+            rule.addDeptColumn(DeptDO.class, "id");
+            rule.addDeptColumn(SupplierDO.class, "dept_id");
+            // user
+            rule.addUserColumn(SupplierDO.class);
+            rule.addUserColumn(AdminUserDO.class, "id");
+            rule.addUserColumn(SupplierDO.class, "creator");
+        };
+    }
+
+}

+ 2 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java

@@ -100,7 +100,7 @@ public class IotDeviceController {
         iotDeviceRespVO.setSupplierName(Objects.nonNull(supplierDO)?supplierDO.getName():"");
         SupplierDO supplierDO1 = supplierService.get(iotDevice.getManufacturerId());
         iotDeviceRespVO.setZzName(Objects.nonNull(supplierDO1)?supplierDO1.getName():"");
-        DeptDO dept = deptService.getDept(iotDeviceRespVO.getOrgId());
+        DeptDO dept = deptService.getDept(iotDeviceRespVO.getDeptId());
         iotDeviceRespVO.setDeptName(Objects.nonNull(dept)?dept.getName():"");
         IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(iotDevice.getAssetClass());
         iotDeviceRespVO.setAssetClassName(Objects.nonNull(iotProductClassify)?iotProductClassify.getName():"");
@@ -118,10 +118,9 @@ public class IotDeviceController {
             return success(new PageResult<>(pageResult.getTotal()));
         }
         Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceDO::getOrgId));
+                convertList(pageResult.getList(), IotDeviceDO::getDeptId));
         return success(new PageResult<>(IotDeviceConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
                 pageResult.getTotal()));
-        //return success(BeanUtils.toBean(pageResult, IotDeviceRespVO.class));
     }
 
     @GetMapping("/export-excel")

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDevicePageReqVO.java

@@ -31,7 +31,7 @@ public class IotDevicePageReqVO extends PageParam {
     private Long model;
 
     @Schema(description = "所在部门", example = "8581")
-    private Long orgId;
+    private Long deptId;
 
     @Schema(description = "设备状态", example = "2")
     private String deviceStatus;

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDeviceRespVO.java

@@ -35,7 +35,7 @@ public class IotDeviceRespVO {
 
     @Schema(description = "所在部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "8581")
     @ExcelProperty("所在部门")
-    private Long orgId;
+    private Long deptId;
 
     @Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @ExcelProperty("设备状态")

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDeviceSaveReqVO.java

@@ -32,7 +32,7 @@ public class IotDeviceSaveReqVO {
 
     @Schema(description = "所在部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "8581")
     @NotNull(message = "所在部门不能为空")
-    private Long orgId;
+    private Long deptId;
 
     @Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @NotEmpty(message = "设备状态不能为空")

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifyListReqVO.java

@@ -15,4 +15,6 @@ public class IotInfoClassifyListReqVO {
 
     @Schema(description = "设备id")
     private Long deviceId;
+
+    private Long deptId;
 }

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifyPageReqVO.java

@@ -37,4 +37,5 @@ public class IotInfoClassifyPageReqVO extends PageParam {
     private LocalDateTime[] createTime;
     private String remark;
     private Long deviceId;
+    private Long deptId;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifyRespVO.java

@@ -41,4 +41,6 @@ public class IotInfoClassifyRespVO {
     private LocalDateTime createTime;
     private String remark;
     private Long deviceId;
+
+    private Long deptId;
 }

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifySaveReqVO.java

@@ -32,4 +32,5 @@ public class IotInfoClassifySaveReqVO {
 
     private String remark;
     private Long deviceId;
+    private Long deptId;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoClassifySimpleRespVO.java

@@ -22,4 +22,6 @@ public class IotInfoClassifySimpleRespVO {
 
     @Schema(description = "排序")
     private Integer sort;
+
+    private Long deptId;
 }

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoPageReqVO.java

@@ -22,7 +22,7 @@ public class IotInfoPageReqVO extends PageParam {
     private Long classId;
 
     @Schema(description = "部门id", example = "2503")
-    private Long orgId;
+    private Long deptId;
 
     @Schema(description = "文件名称", example = "王五")
     private String filename;

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoRespVO.java

@@ -26,7 +26,7 @@ public class IotInfoRespVO {
 
     @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2503")
     @ExcelProperty("部门id")
-    private Long orgId;
+    private Long deptId;
 
     @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
     @ExcelProperty("文件名称")

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotInfoSaveReqVO.java

@@ -22,7 +22,7 @@ public class IotInfoSaveReqVO {
 
     @Schema(description = "部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2503")
 //    @NotNull(message = "部门id不能为空")
-    private Long orgId;
+    private Long deptId;
 
     @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
     //@NotEmpty(message = "文件名称不能为空")

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/IotDeviceDO.java

@@ -48,7 +48,7 @@ public class IotDeviceDO extends BaseDO {
     /**
      * 所在部门
      */
-    private Long orgId;
+    private Long deptId;
     /**
      * 设备状态
      */

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/IotInfoClassifyDO.java

@@ -47,4 +47,5 @@ public class IotInfoClassifyDO extends BaseDO {
     private String remark;
 
     private Long deviceId;
+    private Long deptId;
 }

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/IotInfoDO.java

@@ -38,7 +38,7 @@ public class IotInfoDO extends BaseDO {
     /**
      * 部门id
      */
-    private Long orgId;
+    private Long deptId;
     /**
      * 文件名称
      */

+ 7 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotDeviceMapper.java

@@ -5,8 +5,12 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
+import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.Collection;
+
 /**
  * 设备台账 Mapper
  *
@@ -14,14 +18,14 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
-
-    default PageResult<IotDeviceDO> selectPage(IotDevicePageReqVO reqVO) {
+    default PageResult<IotDeviceDO> selectPage(IotDevicePageReqVO reqVO, Collection<Long> deptIds) {
         return selectPage(reqVO, new LambdaQueryWrapperX<IotDeviceDO>()
                 .eqIfPresent(IotDeviceDO::getDeviceCode, reqVO.getDeviceCode())
                 .likeIfPresent(IotDeviceDO::getDeviceName, reqVO.getDeviceName())
                 .eqIfPresent(IotDeviceDO::getBrand, reqVO.getBrand())
                 .eqIfPresent(IotDeviceDO::getModel, reqVO.getModel())
-                .eqIfPresent(IotDeviceDO::getOrgId, reqVO.getOrgId())
+                //.eqIfPresent(IotDeviceDO::getOrgId, reqVO.getOrgId())
+                .inIfPresent(IotDeviceDO::getDeptId, deptIds)
                 .eqIfPresent(IotDeviceDO::getDeviceStatus, reqVO.getDeviceStatus())
                 .eqIfPresent(IotDeviceDO::getAssetProperty, reqVO.getAssetProperty())
                 .eqIfPresent(IotDeviceDO::getPicUrl, reqVO.getPicUrl())

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotInfoMapper.java

@@ -21,7 +21,7 @@ public interface IotInfoMapper extends BaseMapperX<IotInfoDO> {
     default PageResult<IotInfoDO> selectPage(IotInfoPageReqVO reqVO, Collection<Long> classIds ) {
         return selectPage(reqVO, new LambdaQueryWrapperX<IotInfoDO>()
                 .eqIfPresent(IotInfoDO::getDeviceId, reqVO.getDeviceId())
-                .eqIfPresent(IotInfoDO::getOrgId, reqVO.getOrgId())
+                .eqIfPresent(IotInfoDO::getDeptId, reqVO.getDeptId())
                 .likeIfPresent(IotInfoDO::getFilename, reqVO.getFilename())
                 .eqIfPresent(IotInfoDO::getFileType, reqVO.getFileType())
                 .eqIfPresent(IotInfoDO::getFilePath, reqVO.getFilePath())

+ 14 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceServiceImpl.java

@@ -13,15 +13,19 @@ import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoClassifyMapper;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotTreeMapper;
 import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
+import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import com.google.common.collect.ImmutableMap;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_DEVICE_NOT_EXISTS;
@@ -41,6 +45,8 @@ public class IotDeviceServiceImpl implements IotDeviceService {
     private IotInfoClassifyMapper iotInfoClassifyMapper;
     @Resource
     private IotTreeMapper iotTreeMapper;
+    @Resource
+    private DeptService deptService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -61,7 +67,7 @@ public class IotDeviceServiceImpl implements IotDeviceService {
         iotTreeDO.setType("device");
         iotTreeDO.setOriginId(iotDevice.getId());
         iotTreeDO.setName(iotDevice.getDeviceName());
-        List<IotTreeDO> iotTreeDOS = iotTreeMapper.selectListByOriginId(iotDevice.getOrgId(),"dept");
+        List<IotTreeDO> iotTreeDOS = iotTreeMapper.selectListByOriginId(iotDevice.getDeptId(),"dept");
         if (CollUtil.isNotEmpty(iotTreeDOS)) {
             iotTreeDO.setParentId(Objects.nonNull(iotTreeDOS.get(0)) ? iotTreeDOS.get(0).getId() : 0);
             iotTreeMapper.insert(iotTreeDO);
@@ -110,7 +116,13 @@ public class IotDeviceServiceImpl implements IotDeviceService {
 
     @Override
     public PageResult<IotDeviceDO> getIotDevicePage(IotDevicePageReqVO pageReqVO) {
-        return iotDeviceMapper.selectPage(pageReqVO);
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(pageReqVO.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
+            ids.add(pageReqVO.getDeptId());
+        }
+
+        return iotDeviceMapper.selectPage(pageReqVO,ids);
     }
 
 }

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/util/IotDeviceConvert.java

@@ -28,7 +28,7 @@ public interface IotDeviceConvert {
     IotDeviceConvert INSTANCE = Mappers.getMapper(IotDeviceConvert.class);
 
     default List<IotDeviceRespVO> convertList(List<IotDeviceDO> list, Map<Long, DeptDO> deptMap) {
-        return CollectionUtils.convertList(list, de -> convert(de, deptMap.get(de.getOrgId())));
+        return CollectionUtils.convertList(list, de -> convert(de, deptMap.get(de.getDeptId())));
     }
 
     default IotDeviceRespVO convert(IotDeviceDO user, DeptDO dept) {

+ 2 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java

@@ -17,6 +17,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.annotation.security.PermitAll;
 import javax.validation.Valid;
 import java.util.List;
 
@@ -66,6 +67,7 @@ public class DeptController {
 
     @GetMapping(value = {"/list-all-simple", "/simple-list"})
     @Operation(summary = "获取部门精简信息列表", description = "只包含被开启的部门,主要用于前端的下拉选项")
+    @PermitAll
     public CommonResult<List<DeptSimpleRespVO>> getSimpleDeptList() {
         List<DeptDO> list = deptService.getDeptList(
                 new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));