mirror of
https://codeup.aliyun.com/64f7d6b8ce01efaafef1e678/coal/coal.git
synced 2026-01-25 15:55:18 +08:00
设备工单过滤数据权限
This commit is contained in:
@@ -3,6 +3,7 @@ package cn.lihongjie.coal.deviceWorkOrder.service;
|
||||
import cn.lihongjie.coal.base.dto.CommonQuery;
|
||||
import cn.lihongjie.coal.base.dto.IdRequest;
|
||||
import cn.lihongjie.coal.base.service.BaseService;
|
||||
import cn.lihongjie.coal.common.Ctx;
|
||||
import cn.lihongjie.coal.deviceWorkOrder.dto.CreateDeviceWorkOrderDto;
|
||||
import cn.lihongjie.coal.deviceWorkOrder.dto.DeviceWorkOrderDto;
|
||||
import cn.lihongjie.coal.deviceWorkOrder.dto.UpdateDeviceWorkOrderDto;
|
||||
@@ -11,14 +12,19 @@ import cn.lihongjie.coal.deviceWorkOrder.mapper.DeviceWorkOrderMapper;
|
||||
import cn.lihongjie.coal.deviceWorkOrder.repository.DeviceWorkOrderRepository;
|
||||
import cn.lihongjie.coal.exception.BizException;
|
||||
|
||||
import jakarta.persistence.criteria.Join;
|
||||
import jakarta.persistence.criteria.JoinType;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -78,14 +84,39 @@ public class DeviceWorkOrderService
|
||||
}
|
||||
|
||||
public Page<DeviceWorkOrderDto> list(CommonQuery query) {
|
||||
Specification specification = query.specification(conversionService);
|
||||
|
||||
|
||||
if (!BooleanUtils.isTrue(Ctx.currentUser().getOrgAdmin())) {
|
||||
|
||||
//
|
||||
specification =
|
||||
specification.and(
|
||||
(root, query1, cb) -> {
|
||||
query1.distinct(true);
|
||||
Join device = root.join("device", JoinType.LEFT);
|
||||
Join category = device.join("category", JoinType.LEFT);
|
||||
Join caUsers = category.join("users", JoinType.LEFT);
|
||||
return cb.or(
|
||||
// 没有绑定类目的设备
|
||||
cb.isNull(category.get("id")),
|
||||
// 类目没有配置管理员的设备
|
||||
cb.isNull(caUsers.get("id")),
|
||||
// 当前用户是类目管理员的设备
|
||||
cb.equal(caUsers.get("id"), Ctx.currentUser().getId()));
|
||||
});
|
||||
}
|
||||
|
||||
Page<DeviceWorkOrderEntity> page =
|
||||
repository.findAll(
|
||||
query.specification(conversionService),
|
||||
specification,
|
||||
PageRequest.of(
|
||||
query.getPageNo(),
|
||||
query.getPageSize(),
|
||||
Sort.by(query.getOrders())));
|
||||
|
||||
|
||||
|
||||
return page.map(this.mapper::toDto);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user