|
@@ -23,20 +23,23 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.dto.DeptTree;
|
|
|
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.vo.SysEnterpriseRelationVO;
|
|
|
import com.qunzhixinxi.hnqz.admin.api.vo.TreeUtil;
|
|
|
import com.qunzhixinxi.hnqz.admin.entity.base.HnqzPage;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.DeptLevelEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.mapper.SysDeptCsmMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysDeptMapper;
|
|
|
import com.qunzhixinxi.hnqz.admin.mapper.SysDeptRelationMapper;
|
|
|
-import com.qunzhixinxi.hnqz.admin.mapper.WmRelationMapper;
|
|
|
+import com.qunzhixinxi.hnqz.admin.service.SysCsmUserRelationService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDeptRelationService;
|
|
|
import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
|
|
|
import com.qunzhixinxi.hnqz.common.data.datascope.DataScope;
|
|
@@ -48,6 +51,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -65,12 +69,14 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
|
|
|
|
|
private final SysDeptRelationService sysDeptRelationService;
|
|
|
|
|
|
- private final WmRelationMapper wmRelationMapper;
|
|
|
-
|
|
|
private final SysDeptRelationMapper sysDeptRelationMapper;
|
|
|
|
|
|
private final SysDeptMapper deptMapper;
|
|
|
|
|
|
+ private final SysCsmUserRelationService sysCsmUserRelationService;
|
|
|
+
|
|
|
+ private final SysDeptCsmMapper sysDeptCsmMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public List convertToName() {
|
|
|
return deptMapper.getDeptConvertToName();
|
|
@@ -163,7 +169,25 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
|
|
|
|
|
@Override
|
|
|
public List<SysDept> listScope(SysDept sysDept) {
|
|
|
- return deptMapper.selectListByScope(Wrappers.query(sysDept), new DataScope());
|
|
|
+ QueryWrapper<SysDept> queryWrapper = Wrappers.query(sysDept);
|
|
|
+
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<Integer> deptIds = deptCsms.stream().map(SysDeptCsm::getDeptId).collect(Collectors.toSet());
|
|
|
+ queryWrapper.in("dept_id", deptIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ return deptMapper.selectListByScope(queryWrapper, new DataScope());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -470,13 +494,39 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
|
|
*/
|
|
|
@Override
|
|
|
public Map<String, Object> listEntAndAgent(Page page, String deptName) {
|
|
|
- // 药企
|
|
|
+ // 药企wrapper
|
|
|
LambdaQueryWrapper<SysDept> entWrapper = Wrappers.lambdaQuery();
|
|
|
entWrapper.eq(SysDept::getDelFlag, DelEnum.NOT_DEL.val());
|
|
|
entWrapper.eq(SysDept::getLevel, DeptLevelEnum.ENT.getVal());
|
|
|
if (StringUtils.isNotBlank(deptName)) {
|
|
|
entWrapper.like(SysDept::getName, deptName);
|
|
|
}
|
|
|
+
|
|
|
+ // CSO wrapper
|
|
|
+ LambdaQueryWrapper<SysDept> csoWrapper = Wrappers.lambdaQuery();
|
|
|
+ csoWrapper.eq(SysDept::getDelFlag, DelEnum.NOT_DEL.val());
|
|
|
+ csoWrapper.in(SysDept::getLevel, DeptLevelEnum.CSO_L1.getVal(), DeptLevelEnum.CSO_L2.getVal());
|
|
|
+ if (StringUtils.isNotBlank(deptName)) {
|
|
|
+ csoWrapper.like(SysDept::getName, deptName);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 new HashMap<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<Integer> deptIds = deptCsms.stream().map(SysDeptCsm::getDeptId).collect(Collectors.toSet());
|
|
|
+ entWrapper.in(SysDept::getDeptId, deptIds);
|
|
|
+ csoWrapper.in(SysDept::getDeptId, deptIds);
|
|
|
+ }
|
|
|
+
|
|
|
Page<SysDept> entPage = this.page(page, entWrapper);
|
|
|
List<Map<String, Object>> entMapList = entPage.getRecords().stream().map(sysDept -> {
|
|
|
Map<String, Object> deptMap = MapUtil.newHashMap(2);
|
|
@@ -488,12 +538,6 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
|
|
entHnqzPage.setRecords(entMapList);
|
|
|
|
|
|
// CSO
|
|
|
- LambdaQueryWrapper<SysDept> csoWrapper = Wrappers.lambdaQuery();
|
|
|
- csoWrapper.eq(SysDept::getDelFlag, DelEnum.NOT_DEL.val());
|
|
|
- csoWrapper.in(SysDept::getLevel, DeptLevelEnum.CSO_L1.getVal(), DeptLevelEnum.CSO_L2.getVal());
|
|
|
- if (StringUtils.isNotBlank(deptName)) {
|
|
|
- csoWrapper.like(SysDept::getName, deptName);
|
|
|
- }
|
|
|
Page<SysDept> csoPage = this.page(page, csoWrapper);
|
|
|
List<Map<String, Object>> csoMapList = csoPage.getRecords().stream().map(sysDept -> {
|
|
|
Map<String, Object> deptMap = MapUtil.newHashMap(2);
|