Browse Source

feat: cms数据权限过滤3

lixuesong 1 year ago
parent
commit
88d650c890

+ 30 - 6
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmDaAgentServiceImpl.java

@@ -25,6 +25,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptCsm;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDeptRelation;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.entity.*;
 import com.qunzhixinxi.hnqz.admin.entity.*;
@@ -46,12 +47,11 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Set;
 import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -64,7 +64,6 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 @AllArgsConstructor
 public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent> implements WmDaAgentService {
 public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent> implements WmDaAgentService {
 	private final SysDeptService sysDeptService;
 	private final SysDeptService sysDeptService;
-	private final SysUserService sysUserService;
 	private final SysUserMapper sysUserMapper;
 	private final SysUserMapper sysUserMapper;
 	private final WmDaAgentMapper wmDaAgentMapper;
 	private final WmDaAgentMapper wmDaAgentMapper;
 	private final WmDaDrugEntMapper wmDaDrugEntMapper;
 	private final WmDaDrugEntMapper wmDaDrugEntMapper;
@@ -79,6 +78,8 @@ public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent
 	private final SysDeptSubMapper sysDeptSubMapper;
 	private final SysDeptSubMapper sysDeptSubMapper;
 	private final WmTaskSubmissionRuleService taskSubmissionRuleService;
 	private final WmTaskSubmissionRuleService taskSubmissionRuleService;
 	private final WmTaskSubmissionPercentRuleService taskSubmissionPercentRuleService;
 	private final WmTaskSubmissionPercentRuleService taskSubmissionPercentRuleService;
+	private final SysCsmUserRelationService sysCsmUserRelationService;
+	private final SysDeptCsmMapper sysDeptCsmMapper;
 	private final RedisTemplate redisTemplate;
 	private final RedisTemplate redisTemplate;
 
 
 	public String getDeptBuildName(String deptId) {
 	public String getDeptBuildName(String deptId) {
@@ -755,9 +756,32 @@ public class WmDaAgentServiceImpl extends ServiceImpl<WmDaAgentMapper, WmDaAgent
 			}
 			}
 			return wmDeptList;
 			return wmDeptList;
 		} else {
 		} else {
-			SysDeptRelation sysDeptRelation = new SysDeptRelation();
-			sysDeptRelation.setAncestor(SecurityUtils.getUser().getDeptId());
-			List<SysDeptRelation> sysDeptRelationList = sysDeptRelationMapper.selectDeptRelationsList(sysDeptRelation);
+
+			final List<SysDeptRelation> sysDeptRelationList = new ArrayList<>();
+			if (SecurityUtils.getRoles().contains(19)) {
+				// CSM只能查看自己维护的企业下的数据, 以及下属维护的企业下的数据
+				Integer userId = SecurityUtils.getUser().getId();
+				// 递归查询下属关联的userId
+				Set<Integer> allUserIds = sysCsmUserRelationService.recurseCsmLowerUserId(Collections.singleton(userId), new AtomicInteger(10));
+				// 查询企业id
+				List<SysDeptCsm> deptCsms = sysDeptCsmMapper.selectList(Wrappers.<SysDeptCsm>lambdaQuery()
+						.in(SysDeptCsm::getUserId, allUserIds));
+				if (CollUtil.isEmpty(deptCsms)) {
+					return Collections.emptyList();
+				}
+
+				deptCsms.forEach(deptCsm -> {
+					SysDeptRelation sysDeptRelation = new SysDeptRelation();
+					sysDeptRelation.setAncestor(deptCsm.getDeptId());
+					List<SysDeptRelation> relations = sysDeptRelationMapper.selectDeptRelationsList(sysDeptRelation);
+					sysDeptRelationList.addAll(relations);
+				});
+			} else {
+				SysDeptRelation sysDeptRelation = new SysDeptRelation();
+				sysDeptRelation.setAncestor(SecurityUtils.getUser().getDeptId());
+				sysDeptRelationList.addAll(sysDeptRelationMapper.selectDeptRelationsList(sysDeptRelation));
+			}
+
 			List<WmDaAgent> wmDaAgentList = new ArrayList<>();
 			List<WmDaAgent> wmDaAgentList = new ArrayList<>();
 			List<WmDaDrugEnt> wmDaDrugEntList = new ArrayList<>();
 			List<WmDaDrugEnt> wmDaDrugEntList = new ArrayList<>();
 			List<SysDept> sysDeptList = new ArrayList<>();
 			List<SysDept> sysDeptList = new ArrayList<>();