|
|
@@ -1,31 +1,26 @@
|
|
|
package com.ydtech.modules.admin.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.ydtech.modules.admin.dao.SysDeptMapper;
|
|
|
-import com.ydtech.modules.admin.dao.SysPcAddressHistoryMapper;
|
|
|
-import com.ydtech.modules.admin.dao.SysPcAddressMapper;
|
|
|
+import com.ydtech.modules.admin.dao.*;
|
|
|
import com.ydtech.modules.admin.model.SysDept;
|
|
|
-import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
|
|
|
import com.ydtech.modules.admin.model.SysUser;
|
|
|
import com.ydtech.modules.admin.model.dto.*;
|
|
|
import com.ydtech.modules.admin.model.po.SysPcAddressHistory;
|
|
|
import com.ydtech.modules.admin.model.po.SysPcAddress;
|
|
|
-import com.ydtech.modules.admin.model.vo.PcAddressHistoryInfoVo;
|
|
|
-import com.ydtech.modules.admin.model.vo.PcAddressHistoryTimeVo;
|
|
|
-import com.ydtech.modules.admin.model.vo.RegionInfoVo;
|
|
|
-import com.ydtech.modules.admin.service.GeoService;
|
|
|
-import com.ydtech.modules.admin.service.SysPcAddressHistoryService;
|
|
|
-import com.ydtech.modules.admin.service.SysPcAddressService;
|
|
|
-import com.ydtech.modules.admin.service.SysUserService;
|
|
|
+import com.ydtech.modules.admin.model.vo.*;
|
|
|
+import com.ydtech.modules.admin.service.*;
|
|
|
+import com.ydtech.modules.base.controller.BaseController;
|
|
|
import com.ydtech.modules.order.entity.BasePageResult;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -57,6 +52,13 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
|
|
|
|
|
|
@Resource
|
|
|
private SysDeptMapper sysDeptMapper;
|
|
|
+ @Resource
|
|
|
+ private SysDeptService sysDeptService;
|
|
|
+ @Resource
|
|
|
+ private SysUserMapper sysUserMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserDeptRelationshipMapper sysUserDeptRelationshipMapper;
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@@ -91,15 +93,51 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
|
|
|
|
|
|
@Override
|
|
|
public List<SysPcAddress> getEveryone(SysPcAddressDto sysPcAddressDto) {
|
|
|
+ List<SysPcAddress> sysPcAddresses = null;
|
|
|
+ // 类型:1。机构 2.用户
|
|
|
+ if (sysPcAddressDto.getType() == 1) {
|
|
|
+
|
|
|
+ sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>()
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getProvince()), SysPcAddress::getProvince, sysPcAddressDto.getProvince())
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getCity()), SysPcAddress::getCity, sysPcAddressDto.getCity())
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getDistrict()), SysPcAddress::getDistrict, sysPcAddressDto.getDistrict())
|
|
|
+ .in(SysPcAddress::getSource, Arrays.asList("1", "2"))
|
|
|
+ .likeRight(StringUtils.isNotEmpty(sysPcAddressDto.getQueryId()), SysPcAddress::getUserId, sysPcAddressDto.getQueryId())
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getSource()), SysPcAddress::getSource, sysPcAddressDto.getSource())
|
|
|
+ .eq(sysPcAddressDto.getStatus() != null, SysPcAddress::getStatus, sysPcAddressDto.getStatus())
|
|
|
+ .orderByDesc(SysPcAddress::getOperationTime));
|
|
|
+
|
|
|
+ } else if (sysPcAddressDto.getType() == 2) {
|
|
|
+ List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
|
|
|
+ .eq(SysUser::getLeaderId, sysPcAddressDto.getQueryId()).ne(SysUser::getStatus, 0));
|
|
|
+ List<String> collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
+ List<String> ids = new ArrayList<>();
|
|
|
+ List<String> idList = queryList(collect, ids);
|
|
|
+ collect.addAll(idList);
|
|
|
+ if (collect.size() == 0) {
|
|
|
+ return sysPcAddresses;
|
|
|
+ }
|
|
|
+ sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>()
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getProvince()), SysPcAddress::getProvince, sysPcAddressDto.getProvince())
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getCity()), SysPcAddress::getCity, sysPcAddressDto.getCity())
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getDistrict()), SysPcAddress::getDistrict, sysPcAddressDto.getDistrict())
|
|
|
+ .in(SysPcAddress::getSource, Arrays.asList("1", "2"))
|
|
|
+ .in(CollectionUtil.isNotEmpty(collect), SysPcAddress::getUserId, collect)
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getSource()), SysPcAddress::getSource, sysPcAddressDto.getSource())
|
|
|
+ .eq(sysPcAddressDto.getStatus() != null, SysPcAddress::getStatus, sysPcAddressDto.getStatus())
|
|
|
+ .orderByDesc(SysPcAddress::getOperationTime));
|
|
|
+
|
|
|
+ } else {
|
|
|
+ sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>()
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getProvince()), SysPcAddress::getProvince, sysPcAddressDto.getProvince())
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getCity()), SysPcAddress::getCity, sysPcAddressDto.getCity())
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getDistrict()), SysPcAddress::getDistrict, sysPcAddressDto.getDistrict())
|
|
|
+ .in(SysPcAddress::getSource, Arrays.asList("1", "2"))
|
|
|
+ .eq(StringUtils.isNotEmpty(sysPcAddressDto.getSource()), SysPcAddress::getSource, sysPcAddressDto.getSource())
|
|
|
+ .eq(sysPcAddressDto.getStatus() != null, SysPcAddress::getStatus, sysPcAddressDto.getStatus())
|
|
|
+ .orderByDesc(SysPcAddress::getOperationTime));
|
|
|
+ }
|
|
|
|
|
|
- List<SysPcAddress> sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>()
|
|
|
- .eq(StringUtils.isNotEmpty(sysPcAddressDto.getProvince()), SysPcAddress::getProvince, sysPcAddressDto.getProvince())
|
|
|
- .eq(StringUtils.isNotEmpty(sysPcAddressDto.getCity()), SysPcAddress::getCity, sysPcAddressDto.getCity())
|
|
|
- .eq(StringUtils.isNotEmpty(sysPcAddressDto.getDistrict()), SysPcAddress::getDistrict, sysPcAddressDto.getDistrict())
|
|
|
- .in(SysPcAddress::getSource, Arrays.asList("1", "2"))
|
|
|
- .eq(StringUtils.isNotEmpty(sysPcAddressDto.getSource()), SysPcAddress::getSource, sysPcAddressDto.getSource())
|
|
|
- .eq(sysPcAddressDto.getStatus() != null, SysPcAddress::getStatus, sysPcAddressDto.getStatus())
|
|
|
- .orderByDesc(SysPcAddress::getOperationTime));
|
|
|
for (SysPcAddress sysPcAddress : sysPcAddresses) {
|
|
|
SysUser sysUser = sysUserService.getById(sysPcAddress.getUserId());
|
|
|
if (sysUser == null) continue;
|
|
|
@@ -109,6 +147,24 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
|
|
|
return sysPcAddresses;
|
|
|
}
|
|
|
|
|
|
+ private List<String> queryList(List<String> collect, List<String> ids) {
|
|
|
+ if (collect.size() > 0) {
|
|
|
+ for (String id : collect) {
|
|
|
+ List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
|
|
|
+ .eq(SysUser::getLeaderId, id).ne(SysUser::getStatus, 0));
|
|
|
+ if (sysUsers.size() > 0) {
|
|
|
+ List<String> list = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
+ ids.addAll(list);
|
|
|
+ queryList(list, ids);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return ids;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public List<SysPcAddress> findLocationsWithinRadius(AdressRangeDto adressRangeDto) {
|
|
|
@@ -201,16 +257,53 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
|
|
|
@Override
|
|
|
public BasePageResult<SysPcAddress> queryPcAddressInfo(PcAddressInfoDto addressInfoDto) {
|
|
|
Page<SysPcAddress> page = new Page<>(addressInfoDto.getPageNum(), addressInfoDto.getPageSize());
|
|
|
+ Page<SysPcAddress> insOrdersPage = null;
|
|
|
+ // 类型:1。机构 2.用户
|
|
|
+ if (addressInfoDto.getType() == 1) {
|
|
|
+ LambdaQueryWrapper<SysPcAddress> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getLng()), SysPcAddress::getLongitude, addressInfoDto.getLng());
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getLat()), SysPcAddress::getLatitude, addressInfoDto.getLat());
|
|
|
+ wrapper.in(SysPcAddress::getSource, Arrays.asList("1", "2"));
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getSource()), SysPcAddress::getSource, addressInfoDto.getSource());
|
|
|
+ wrapper.likeRight(StringUtils.isNotEmpty(addressInfoDto.getQueryId()), SysPcAddress::getUserId, addressInfoDto.getQueryId());
|
|
|
+ wrapper.eq(addressInfoDto.getStatus() != null, SysPcAddress::getStatus, addressInfoDto.getStatus());
|
|
|
+ wrapper.orderByDesc(SysPcAddress::getOperationTime);
|
|
|
+
|
|
|
+ insOrdersPage = page(page, wrapper);
|
|
|
+
|
|
|
+ } else if (addressInfoDto.getType() == 2) {
|
|
|
+ List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
|
|
|
+ .eq(SysUser::getLeaderId, addressInfoDto.getQueryId()).ne(SysUser::getStatus, 0));
|
|
|
+ List<String> collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
+ List<String> ids = new ArrayList<>();
|
|
|
+ List<String> idList = queryList(collect, ids);
|
|
|
+ collect.addAll(idList);
|
|
|
+ if (collect.size() == 0) {
|
|
|
+ return new BasePageResult<>(addressInfoDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
|
|
|
+ insOrdersPage.getRecords());
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<SysPcAddress> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getLng()), SysPcAddress::getLongitude, addressInfoDto.getLng());
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getLat()), SysPcAddress::getLatitude, addressInfoDto.getLat());
|
|
|
+ wrapper.in(SysPcAddress::getSource, Arrays.asList("1", "2"));
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getSource()), SysPcAddress::getSource, addressInfoDto.getSource());
|
|
|
+ wrapper.eq(addressInfoDto.getStatus() != null, SysPcAddress::getStatus, addressInfoDto.getStatus());
|
|
|
+ wrapper.orderByDesc(SysPcAddress::getOperationTime);
|
|
|
|
|
|
- LambdaQueryWrapper<SysPcAddress> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getLng()), SysPcAddress::getLongitude, addressInfoDto.getLng());
|
|
|
- wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getLat()), SysPcAddress::getLatitude, addressInfoDto.getLat());
|
|
|
- wrapper.in(SysPcAddress::getSource, Arrays.asList("1", "2"));
|
|
|
- wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getSource()), SysPcAddress::getSource, addressInfoDto.getSource());
|
|
|
- wrapper.eq(addressInfoDto.getStatus() != null, SysPcAddress::getStatus, addressInfoDto.getStatus());
|
|
|
- wrapper.orderByDesc(SysPcAddress::getOperationTime);
|
|
|
+ insOrdersPage = page(page, wrapper);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ LambdaQueryWrapper<SysPcAddress> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getLng()), SysPcAddress::getLongitude, addressInfoDto.getLng());
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getLat()), SysPcAddress::getLatitude, addressInfoDto.getLat());
|
|
|
+ wrapper.in(SysPcAddress::getSource, Arrays.asList("1", "2"));
|
|
|
+ wrapper.eq(StringUtils.isNotEmpty(addressInfoDto.getSource()), SysPcAddress::getSource, addressInfoDto.getSource());
|
|
|
+ wrapper.eq(addressInfoDto.getStatus() != null, SysPcAddress::getStatus, addressInfoDto.getStatus());
|
|
|
+ wrapper.orderByDesc(SysPcAddress::getOperationTime);
|
|
|
|
|
|
- Page<SysPcAddress> insOrdersPage = page(page, wrapper);
|
|
|
+ insOrdersPage = page(page, wrapper);
|
|
|
+ }
|
|
|
|
|
|
return new BasePageResult<>(addressInfoDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
|
|
|
insOrdersPage.getRecords());
|
|
|
@@ -230,15 +323,15 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
|
|
|
queryWrapper.select("COUNT(DISTINCT user_id) AS total")
|
|
|
.likeRight(StringUtils.isNotEmpty(startTime), "operation_time", startTime)
|
|
|
.in("source", Arrays.asList(1, 2))
|
|
|
- .eq(StringUtils.isNotEmpty(source),"source",source);
|
|
|
+ .eq(StringUtils.isNotEmpty(source), "source", source);
|
|
|
Map<String, Object> result = sysPcAddressHistoryService.getMap(queryWrapper);
|
|
|
Long total = (Long) result.get("total");
|
|
|
pcAddressHistoryInfoVo.setOnlineNum(total);
|
|
|
|
|
|
- List<PcAddressHistoryTimeVo> pcAddress = sysPcAddressHistoryMapper.getPcAddress(startTime,source);
|
|
|
+ List<PcAddressHistoryTimeVo> pcAddress = sysPcAddressHistoryMapper.getPcAddress(startTime, source);
|
|
|
pcAddressHistoryInfoVo.setList(pcAddress);
|
|
|
|
|
|
- List<SysPcAddressHistory> sysPcAddressHistories = sysPcAddressHistoryMapper.getPcAddressInfo(startTime,source);
|
|
|
+ List<SysPcAddressHistory> sysPcAddressHistories = sysPcAddressHistoryMapper.getPcAddressInfo(startTime, source);
|
|
|
extracted(sysPcAddressHistories);
|
|
|
System.out.println("********************" + sysPcAddressHistories.size());
|
|
|
pcAddressHistoryInfoVo.setPcAddressList(sysPcAddressHistories);
|
|
|
@@ -260,16 +353,16 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
|
|
|
QueryWrapper<SysPcAddressHistory> queryWrapper = new QueryWrapper<>();
|
|
|
// 指定 COUNT(DISTINCT user_id) 查询
|
|
|
queryWrapper.select("COUNT(DISTINCT user_id) AS total").between("operation_time", startTime, endTime)
|
|
|
- .in("source", Arrays.asList(1, 2)).eq(StringUtils.isNotEmpty(source),"source",source);
|
|
|
+ .in("source", Arrays.asList(1, 2)).eq(StringUtils.isNotEmpty(source), "source", source);
|
|
|
Map<String, Object> result = sysPcAddressHistoryService.getMap(queryWrapper);
|
|
|
Long total = (Long) result.get("total");
|
|
|
pcAddressHistoryInfoVo.setOnlineNum(total);
|
|
|
|
|
|
- List<PcAddressHistoryTimeVo> pcAddress = sysPcAddressHistoryMapper.getPcAddressSection(startTime, endTime,source);
|
|
|
+ List<PcAddressHistoryTimeVo> pcAddress = sysPcAddressHistoryMapper.getPcAddressSection(startTime, endTime, source);
|
|
|
|
|
|
pcAddressHistoryInfoVo.setList(pcAddress);
|
|
|
|
|
|
- List<SysPcAddressHistory> sysPcAddressHistories = sysPcAddressHistoryMapper.getPcAddressHistory(startTime, endTime,source);
|
|
|
+ List<SysPcAddressHistory> sysPcAddressHistories = sysPcAddressHistoryMapper.getPcAddressHistory(startTime, endTime, source);
|
|
|
extracted(sysPcAddressHistories);
|
|
|
System.out.println("********************" + sysPcAddressHistories.size());
|
|
|
pcAddressHistoryInfoVo.setPcAddressList(sysPcAddressHistories);
|
|
|
@@ -301,12 +394,169 @@ public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, Sys
|
|
|
public BasePageResult<SysPcAddressHistory> queryPcAddressHistoryInfo(PcAddressInfoDto addressInfoDto) {
|
|
|
Page page = new Page(addressInfoDto.getPageNum(), addressInfoDto.getPageSize());
|
|
|
|
|
|
- IPage<SysPcAddressHistory> sysPcAddressHistoryIPage=sysPcAddressHistoryMapper.queryAddressHistory(page,addressInfoDto);
|
|
|
+ IPage<SysPcAddressHistory> sysPcAddressHistoryIPage = sysPcAddressHistoryMapper.queryAddressHistory(page, addressInfoDto);
|
|
|
|
|
|
return new BasePageResult<>(addressInfoDto.getPageNum(), addressInfoDto.getPageSize(), sysPcAddressHistoryIPage.getTotal(), sysPcAddressHistoryIPage.getPages(),
|
|
|
sysPcAddressHistoryIPage.getRecords());
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 前线只要机构 后线人员(按照领导人) 机构
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public KztUserDeptTreeDto getUserDeptTree() {
|
|
|
+ KztUserDeptTreeDto kztUserDeptTreeDto = new KztUserDeptTreeDto();
|
|
|
+ String userId = BaseController.getUserId();
|
|
|
+ List<SysDept> sysDeptList1 = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getLeaderId, userId));
|
|
|
+ if (sysDeptList1.size() > 0) {
|
|
|
+ //展示机构
|
|
|
+ kztUserDeptTreeDto.setType("1");
|
|
|
+ } else {
|
|
|
+ //展示机构 人员
|
|
|
+ kztUserDeptTreeDto.setType("2"); //代理
|
|
|
+ }
|
|
|
+ SysUser byUserId = sysUserMapper.getByUserId(userId);
|
|
|
+ List<SysDeptTreeVo> resultDeptList = this.getFiveLevelDeptKzt(byUserId);
|
|
|
+ kztUserDeptTreeDto.setDeptList(resultDeptList);
|
|
|
+ if (!userId.contains("M")) {
|
|
|
+ if (sysDeptList1.size()==0) {
|
|
|
+ List<SysUser> resultList = this.getUserTreeHx(byUserId);
|
|
|
+ kztUserDeptTreeDto.setUserList(resultList);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return kztUserDeptTreeDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<SysDeptTreeVo> getFiveLevelDeptKzt(SysUser byUserId) {
|
|
|
+ SysDept sysDept = sysDeptService.getById("9");
|
|
|
+ SysDept dept = sysDeptMapper.selectById(BaseController.getDeptId());
|
|
|
+ SysDept sysDept1 = new SysDept();
|
|
|
+
|
|
|
+ SysDeptVo sysDeptVo = new SysDeptVo();
|
|
|
+ String id = byUserId.getId();
|
|
|
+ List<String> deptIds = new ArrayList<>();
|
|
|
+ if ("admin".equals(byUserId.getId())) {
|
|
|
+ List<SysDept> sysDeptList = sysDeptMapper.queryFiveLevelDept(sysDeptVo);
|
|
|
+ deptIds.addAll(sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList()));
|
|
|
+ } else {
|
|
|
+
|
|
|
+ List<SysDept> sysDeptList1 = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getLeaderId, id));
|
|
|
+ if (sysDeptList1.size() > 0) {
|
|
|
+ if (sysDeptList1.size() == 1) {
|
|
|
+ SysDept sysDept2 = sysDeptList1.get(0);
|
|
|
+ BeanUtil.copyProperties(sysDept2, sysDept1);
|
|
|
+ deptIds = getDeptIds(sysDept2.getId(), deptIds, deptIds);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ Optional<SysDept> max = sysDeptList1.stream().min((o1, o2) -> o1.getComlevel().compareTo(o2.getComlevel()));
|
|
|
+ SysDept sysDept2 = max.get();
|
|
|
+ BeanUtil.copyProperties(sysDept2, sysDept1);
|
|
|
+ deptIds = getDeptIds(sysDept2.getId(), deptIds, deptIds);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ List<SysDept> sysDeptList = sysDeptMapper.queryFiveLevelDept(sysDeptVo);
|
|
|
+ deptIds.addAll(sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sysDeptVo.setDeptIds(deptIds);
|
|
|
+ List<SysDept> sysDeptList = sysDeptMapper.queryFiveLevelDept(sysDeptVo);
|
|
|
+ if ("admin".equals(byUserId.getId())) {
|
|
|
+ sysDept.setComlevel("1");
|
|
|
+ sysDeptList.add(sysDept);
|
|
|
+ }
|
|
|
+ List<SysDeptTreeVo> sysDeptTreeVos = BeanUtil.copyToList(sysDeptList, SysDeptTreeVo.class);
|
|
|
+ Map<String, List<SysDeptTreeVo>> map = sysDeptTreeVos.stream().sorted(Comparator.comparing(SysDeptTreeVo::getId))
|
|
|
+ .collect(Collectors.groupingBy(SysDeptTreeVo::getParentId));
|
|
|
+ sysDeptTreeVos.forEach(i -> {
|
|
|
+ if (Integer.parseInt(i.getComlevel()) <= 5) {
|
|
|
+ i.setChildren(map.getOrDefault(i.getId(), new ArrayList<>()));
|
|
|
+ i.setDeptCount(i.getChildren().size());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if ("admin".equals(byUserId.getId())) {
|
|
|
+ return map.get(BaseController.getDeptId());
|
|
|
+ }
|
|
|
+ List<SysDept> sysDeptList1 = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getLeaderId, id));
|
|
|
+ if (sysDeptList1.size() == 0) {
|
|
|
+ return map.get(sysDept.getId());
|
|
|
+ }
|
|
|
+ String parentId = sysDept1.getParentId();
|
|
|
+ if (parentId.equals("0")) {
|
|
|
+ sysDept1.setParentId(sysDept1.getId());
|
|
|
+ }
|
|
|
+ return map.get(sysDept1.getParentId());
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<String> getDeptIds(String deptId, List<String> ids, List<String> deptIds) {
|
|
|
+ if (ids.size() > 0) {
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
+ for (String id : ids) {
|
|
|
+ List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getParentId, id).isNotNull(SysDept::getComlevel));
|
|
|
+ if (sysDeptList.size() > 0) {
|
|
|
+ List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
|
|
|
+ deptIds.addAll(sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList()));
|
|
|
+ list.addAll(collect);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (list.size() == 0) {
|
|
|
+ return deptIds;
|
|
|
+ } else {
|
|
|
+ getDeptIds(deptId, list, deptIds);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>().eq(SysDept::getParentId, deptId).isNotNull(SysDept::getComlevel));
|
|
|
+ if (sysDeptList.size() > 0) {
|
|
|
+ List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
|
|
|
+ deptIds.add(deptId);
|
|
|
+ deptIds.addAll(collect);
|
|
|
+ getDeptIds(deptId, collect, deptIds);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return deptIds;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private List<SysUser> getUserTreeHx(SysUser sysUser) {
|
|
|
+ //获取领导字段不为空的人的ID
|
|
|
+ QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.isNotNull("leader_id");
|
|
|
+
|
|
|
+ List<SysUser> users = sysUserMapper.selectList(queryWrapper);
|
|
|
+ if (users == null || users.size() == 0) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ List<SysUser> topUsers = new ArrayList<>(); //存放1级用户,即没有直接上级的用户
|
|
|
+ // 根据组织结构展示级别,筛选顶层节点并构建组织结构树
|
|
|
+ //topUsers.add(sysUserMapper.selectById("99D1501"));
|
|
|
+ if ("admin".equals(sysUser.getName())) {
|
|
|
+ topUsers.add(sysUserMapper.selectById("99D1501"));
|
|
|
+ } else {
|
|
|
+ topUsers.add(sysUser);
|
|
|
+ }
|
|
|
+ // 递归构建用户树结构
|
|
|
+ buildUserTree(topUsers, users);
|
|
|
+ return topUsers;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void buildUserTree(List<SysUser> topUsers, List<SysUser> users) {
|
|
|
+ for (SysUser user : topUsers) {
|
|
|
+ List<SysUser> children = new ArrayList<>();
|
|
|
+ for (SysUser childUser : users) {
|
|
|
+ if (user.getId().equals(childUser.getLeaderId())) {
|
|
|
+ children.add(childUser);
|
|
|
+ // 递归查找下一级
|
|
|
+ buildUserTree(children, users);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ user.setChildren(children);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
}
|