Procházet zdrojové kódy

菜单点击记录最新记录 机构树

helixiao před 1 rokem
rodič
revize
47a95a0f4f

+ 6 - 0
src/main/java/com/ydtech/modules/admin/controller/SysPcAddressController.java

@@ -7,6 +7,7 @@ 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.KztUserDeptTreeDto;
 import com.ydtech.modules.admin.model.vo.PcAddressHistoryInfoVo;
 import com.ydtech.modules.admin.model.vo.RegionInfoVo;
 import com.ydtech.modules.admin.service.SysPcAddressHistoryService;
@@ -165,6 +166,11 @@ public class SysPcAddressController extends BaseController{
         return HttpResult.ok("success", this.sysPcAddressService.getOnlinePeople());
     }
 
+    @ApiOperation(value = "pc用户数机构数")
+    @PostMapping(value = "/getUserDeptTree")
+    public HttpResult<KztUserDeptTreeDto> getUserDeptTree() {
+        return HttpResult.ok(sysPcAddressService.getUserDeptTree());
+    }
 
 
 

+ 2 - 0
src/main/java/com/ydtech/modules/admin/dao/SysDeptMapper.java

@@ -61,6 +61,8 @@ public interface SysDeptMapper extends BaseMapper<SysDept> {
      * @return  获取五级所有机构  除总部
      */
     List<SysDept> getFiveLevelDept(@Param("vo") SysDeptVo sysDeptVo);
+
+    List<SysDept> queryFiveLevelDept(@Param("vo") SysDeptVo sysDeptVo);
 }
 
 

+ 2 - 0
src/main/java/com/ydtech/modules/admin/dao/SysMenuRecordMapper.java

@@ -12,4 +12,6 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface SysMenuRecordMapper extends BaseMapper<SysMenuRecord> {
     IPage<SysMenuRecordVo> queryByPage(Page page,@Param("dto") SysMenuRecordDto sysMenuRecordDto);
+
+    SysMenuRecord queryByTime(Integer menuType, Integer type);
 }

+ 7 - 0
src/main/java/com/ydtech/modules/admin/model/dto/PcAddressInfoDto.java

@@ -40,4 +40,11 @@ public class PcAddressInfoDto {
     @DateTimeFormat(pattern="yyyy-MM-dd")
     private String endTime;
 
+    @ApiModelProperty("用户id")
+    private String queryId;
+
+    @ApiModelProperty("类型:1。机构 2.用户")
+    private Integer type;
+
+
 }

+ 8 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysPcAddressDto.java

@@ -24,4 +24,12 @@ public class SysPcAddressDto {
 
     @ApiModelProperty(value = "在线状态(0:离线; 1:在线)")
     private Integer status;
+
+    @ApiModelProperty("用户id")
+    private String queryId;
+
+    @ApiModelProperty("类型:1。机构 2.用户")
+    private Integer type;
+
+
 }

+ 38 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysMenuRecordVo.java

@@ -58,4 +58,42 @@ public class SysMenuRecordVo {
     private Long posterNumber;
 
 
+
+
+    @ApiModelProperty(value = "车险录单最新时间")
+    private String CarNumberTime;
+
+    /**
+     * 点击车险录单数量
+     */
+    @ApiModelProperty(value = "订单查询时间")
+    private String OrderNumberTime;
+
+    /**
+     * 点击车险录单数量
+     */
+    @ApiModelProperty(value = "钱包时间")
+    private String walletNumberTime;
+
+    /**
+     * 点击会员分享数量
+     */
+    @ApiModelProperty(value = "会员分享时间")
+    private String memberNumberTime;
+
+    /**
+     * 点击会员管理数量
+     */
+    @ApiModelProperty(value = "会员管理时间")
+    private String managementNumberTime;
+
+    /**
+     * 点击海报管理数量
+     */
+    @ApiModelProperty(value = "海报管理时间")
+    private String posterNumberTime;
+
+
+
+
 }

+ 4 - 0
src/main/java/com/ydtech/modules/admin/service/SysPcAddressService.java

@@ -5,6 +5,7 @@ import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.po.SysPcAddress;
 import com.ydtech.modules.admin.model.po.SysPcAddressHistory;
+import com.ydtech.modules.admin.model.vo.KztUserDeptTreeDto;
 import com.ydtech.modules.admin.model.vo.PcAddressHistoryInfoVo;
 import com.ydtech.modules.admin.model.vo.RegionInfoVo;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -46,4 +47,7 @@ public interface SysPcAddressService extends IService<SysPcAddress> {
     List<SysPcAddress> getOnlinePeople();
 
     BasePageResult<SysPcAddressHistory> queryPcAddressHistoryInfo(PcAddressInfoDto addressInfoDto);
+
+    KztUserDeptTreeDto getUserDeptTree();
+
 }

+ 12 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysGeographyPositionServiceImpl.java

@@ -74,6 +74,7 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
             SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
                     .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
             if (sysDept == null) continue;
+            String deptName = getDeptName(sysUser.getDeptId());
             sysGeographyPositionInfoVo.setDeptName(sysDept.getName());
 
         }
@@ -85,6 +86,17 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
         return sysGeographyPositionVo;
     }
 
+    private String getDeptName(String deptId) {
+        SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
+                .eq(SysDept::getId, deptId).eq(SysDept::getDelFlag, 0));
+//        if (sysDept.getComlevel()==) {
+//
+//        }
+
+
+        return null;
+    }
+
     @Override
     public BasePageResult<SysGeographyPositionRecord> queryPositionList(SysGeographyPositionPageDto sysGeographyPositionPageDto) {
         Page<SysGeographyPositionRecord> page = new Page<>(sysGeographyPositionPageDto.getPageNum(), sysGeographyPositionPageDto.getPageSize());

+ 36 - 2
src/main/java/com/ydtech/modules/admin/service/impl/SysMenuRecordServiceImpl.java

@@ -68,7 +68,7 @@ public class SysMenuRecordServiceImpl  extends ServiceImpl<SysMenuRecordMapper,
 
     @Override
     public SysMenuRecordVo getClickMenu(SysMenuRecordDto sysMenuRecordDto) {
-        SysMenuRecordVo sysMenuRecordVo = new SysMenuRecordVo(null,null,0l,0l,0l,0l,0l,0l);
+        SysMenuRecordVo sysMenuRecordVo = new SysMenuRecordVo(null,null,0l,0l,0l,0l,0l,0l,null,null,null,null,null,null);
         List<SysMenuRecord> sysMenuRecords = baseMapper.selectList(new LambdaQueryWrapper<SysMenuRecord>().eq(!StringUtils.isNotEmpty(sysMenuRecordDto.getUserId()), SysMenuRecord::getUserId, sysMenuRecordDto.getUserId())
                 .eq(sysMenuRecordDto.getType() != null, SysMenuRecord::getType, sysMenuRecordDto.getType())
                 .eq( SysMenuRecord::getUserId, sysMenuRecordDto.getUserId())
@@ -79,6 +79,7 @@ public class SysMenuRecordServiceImpl  extends ServiceImpl<SysMenuRecordMapper,
         sysMenuRecordVo.setUserId(sysUser.getId());
         sysMenuRecordVo.setUserName(sysUser.getName());
         if (sysMenuRecords.size()==0) return sysMenuRecordVo;
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         //客户端:1:APP;2:PC
         if (sysMenuRecordDto.getType()==1) {
             //'菜单类型(1:车险录单;2:订单查询;3:钱包, 4:会员分享 5:会员管理 6 海报管理)',
@@ -86,23 +87,47 @@ public class SysMenuRecordServiceImpl  extends ServiceImpl<SysMenuRecordMapper,
                     .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 3)
                     .collect(Collectors.toList());
             long sum = collect.stream().mapToInt(SysMenuRecord::getMenuType).count();
-            sysMenuRecordVo.setCarNumber(sum);
+            sysMenuRecordVo.setWalletNumber(sum);
+
+            SysMenuRecord sysMenuRecord=baseMapper.queryByTime(3,sysMenuRecordDto.getType());
+            sysMenuRecordVo.setWalletNumberTime(format.format(sysMenuRecord.getCreateTime()));
+
+            List<SysMenuRecord> collect1 = sysMenuRecords.stream()
+                    .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 1)
+                    .collect(Collectors.toList());
+            long sum1 = collect1.stream().mapToInt(SysMenuRecord::getMenuType).count();
+            sysMenuRecordVo.setCarNumber(sum1);
+
+            SysMenuRecord sysMenuRecord1=baseMapper.queryByTime(1,sysMenuRecordDto.getType());
+            sysMenuRecordVo.setCarNumberTime(format.format(sysMenuRecord1.getCreateTime()));
+
             List<SysMenuRecord> collect4 = sysMenuRecords.stream()
                     .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 4)
                     .collect(Collectors.toList());
             long sum4 = collect4.stream().mapToInt(SysMenuRecord::getMenuType).count();
             sysMenuRecordVo.setMemberNumber(sum4);
+
+            SysMenuRecord sysMenuRecord4=baseMapper.queryByTime(4,sysMenuRecordDto.getType());
+            sysMenuRecordVo.setMemberNumberTime(format.format(sysMenuRecord4.getCreateTime()));
+
             List<SysMenuRecord> collect5 = sysMenuRecords.stream()
                     .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 5)
                     .collect(Collectors.toList());
             long sum5 = collect5.stream().mapToInt(SysMenuRecord::getMenuType).count();
             sysMenuRecordVo.setManagementNumber(sum5);
+
+            SysMenuRecord sysMenuRecord5=baseMapper.queryByTime(5,sysMenuRecordDto.getType());
+            sysMenuRecordVo.setManagementNumberTime(format.format(sysMenuRecord5.getCreateTime()));
+
             List<SysMenuRecord> collect6 = sysMenuRecords.stream()
                     .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 6)
                     .collect(Collectors.toList());
             long sum6 = collect6.stream().mapToInt(SysMenuRecord::getMenuType).count();
             sysMenuRecordVo.setPosterNumber(sum6);
 
+            SysMenuRecord sysMenuRecord6=baseMapper.queryByTime(6,sysMenuRecordDto.getType());
+            sysMenuRecordVo.setPosterNumberTime(format.format(sysMenuRecord6.getCreateTime()));
+
         }else {
             //'菜单类型(1:车险录单;2:订单查询;3:钱包)',
             List<SysMenuRecord> collect = sysMenuRecords.stream()
@@ -111,17 +136,26 @@ public class SysMenuRecordServiceImpl  extends ServiceImpl<SysMenuRecordMapper,
             long sum = collect.stream().mapToInt(SysMenuRecord::getMenuType).count();
             sysMenuRecordVo.setCarNumber(sum);
 
+            SysMenuRecord sysMenuRecord1=baseMapper.queryByTime(1,sysMenuRecordDto.getType());
+            sysMenuRecordVo.setCarNumberTime(format.format(sysMenuRecord1.getCreateTime()));
+
             List<SysMenuRecord> collect2 = sysMenuRecords.stream()
                     .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 2)
                     .collect(Collectors.toList());
             long sum2 = collect2.stream().mapToInt(SysMenuRecord::getMenuType).count();
             sysMenuRecordVo.setOrderNumber(sum2);
 
+            SysMenuRecord sysMenuRecord2=baseMapper.queryByTime(2,sysMenuRecordDto.getType());
+            sysMenuRecordVo.setOrderNumberTime(format.format(sysMenuRecord2.getCreateTime()));
+
             List<SysMenuRecord> collect3 = sysMenuRecords.stream()
                     .filter(SysMenuRecord -> SysMenuRecord.getMenuType() == 3)
                     .collect(Collectors.toList());
             long sum3 = collect3.stream().mapToInt(SysMenuRecord::getMenuType).count();
             sysMenuRecordVo.setWalletNumber(sum3);
+
+            SysMenuRecord sysMenuRecord3=baseMapper.queryByTime(3,sysMenuRecordDto.getType());
+            sysMenuRecordVo.setWalletNumberTime(format.format(sysMenuRecord3.getCreateTime()));
         }
 
         return sysMenuRecordVo;

+ 284 - 34
src/main/java/com/ydtech/modules/admin/service/impl/SysPcAddressServiceImpl.java

@@ -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);
+        }
+    }
 
 
 }

+ 16 - 0
src/main/resources/mapper/modules/admin/SysDeptMapper.xml

@@ -149,4 +149,20 @@
         </where>
     </select>
 
+    <select id="queryFiveLevelDept" resultType="com.ydtech.modules.admin.model.SysDept">
+        select * from
+        sys_dept sd
+        <where>
+            sd.del_flag ='0'
+            AND sd.id LIKE concat('%','9','%')
+            AND sd.comlevel is not null
+            <if test="vo.deptIds !=null and  vo.deptIds!=''  and  vo.deptIds.size()>0">
+                AND sd.id  in
+                <foreach collection="vo.deptIds" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 15 - 0
src/main/resources/mapper/modules/admin/SysMenuRecordMapper.xml

@@ -32,6 +32,21 @@
             </if>
         </where>
     </select>
+    <select id="queryByTime" resultType="com.ydtech.modules.admin.model.SysMenuRecord">
+        select
+        *
+        from sys_menu_record
+        <where>
+            <if test="menuType != null">
+                and menu_type = #{menuType}
+            </if>
+            <if test="type != null">
+                and type = #{type}
+            </if>
+        </where>
+        order by create_time desc
+        limit 1
+    </select>
 
 
 </mapper>