yzc 1 год назад
Родитель
Сommit
271454da24

+ 20 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -92,6 +92,7 @@ import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.PageUtils;
@@ -101,6 +102,7 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.framework.config.ThreadPoolConfig;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.utils.UserUtil;
 import org.apache.commons.collections4.MapUtils;
@@ -225,6 +227,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     private SaleService saleService;
     @Autowired
     private CodingRuleService codingRuleService;
+    @Autowired
+    private ISysRoleService roleService;
 
     /**
      * 合同和样品单 下拉分页
@@ -325,6 +329,22 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         wrapper.in("t1", Contract::getOfCompanyId, SecurityUtils.getCompanyIds());
         wrapper.eq("t1", Contract::getOfCompanyId, dto.getOfCompanyId());
 
+        //特殊权限过滤
+        Long userId = SecurityUtils.getUserId();
+        List<Long> uidList = new ArrayList<>();
+        List<SysRole> userRoles = UserUtil.getUserRoles(userId);
+        // 1、如果登陆账号的上级角色包括【顶级】,则:看自己公司所有数据 (不进入if)
+        if (userRoles.stream().filter(item -> ObjectUtil.equals(0L, item.getParentId())).count() == 0) {
+            // 2、如果登录账号不存在下级角色:只看自己的数据
+            uidList.add(userId);
+            // 3、如果登录账号存在下级角色:看看自己公司 & 创建人包含所有子集角色用户 的数据
+            List<SysRole> userRoleAndChildRole = UserUtil.getUserRoleAndChildRole(userId);
+            List<String> roleKeys = userRoleAndChildRole.stream().map(SysRole::getRoleKey).distinct().collect(Collectors.toList());
+            uidList.addAll(UserUtil.getUserIdsByRoleKeys(roleKeys, SecurityUtils.getCompanyId()));
+
+            wrapper.in("t1", Contract::getCreateUser, uidList);
+        }
+
 
         //生产公司过滤
         wrapper.eq("t1", Contract::getCompanyId, dto.getCompanyId());