Bläddra i källkod

Merge remote-tracking branch 'origin/test' into test

# Conflicts:
#	src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java
wks 2 år sedan
förälder
incheckning
3368087b50

+ 18 - 13
src/main/java/com/ydtech/modules/admin/controller/websocket/SysGeographyPositionController.java

@@ -4,14 +4,12 @@ package com.ydtech.modules.admin.controller.websocket;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
+import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
 import com.ydtech.modules.admin.service.SysGeographyPositionService;
 import com.ydtech.modules.admin.service.SysGeographyPositionService;
+import com.ydtech.modules.order.entity.BasePageResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.List;
@@ -24,16 +22,23 @@ public class SysGeographyPositionController {
     @Resource
     @Resource
     private SysGeographyPositionService sysGeographyPositionService;
     private SysGeographyPositionService sysGeographyPositionService;
 
 
-    @GetMapping("/queryPosition/{userId}")
-    @ApiOperation(value = "查询用户的最新位置")
-    public HttpResult<SysGeographyPosition> queryPosition(@PathVariable("userId") @ApiParam("用户id") String userId) {
-        return HttpResult.ok("success", this.sysGeographyPositionService.queryPosition(userId));
+    @GetMapping("/queryPosition")
+    @ApiOperation(value = "查询所有用户的位置列表")
+    public HttpResult<List<SysGeographyPosition>> queryPosition() {
+
+        return HttpResult.ok("success", this.sysGeographyPositionService.queryPosition());
     }
     }
 
 
-    @GetMapping("/queryPositionList/{userId}")
-    @ApiOperation(value = "查询用户的所有位置")
-    public HttpResult<List<SysGeographyPositionRecord>> queryPositionList(@PathVariable("userId") @ApiParam("用户id") String userId) {
-        return HttpResult.ok("success", this.sysGeographyPositionService.queryPositionList(userId));
+    @PostMapping("/queryPositionList")
+    @ApiOperation(value = "查询单个用户的所有位置")
+    public HttpResult<BasePageResult<SysGeographyPositionRecord>> queryPositionList(@RequestBody SysGeographyPositionPageDto sysGeographyPositionPageDto) {
+        if (sysGeographyPositionPageDto.getPageNum() == 0) {
+            sysGeographyPositionPageDto.setPageNum(1);
+        }
+        if (sysGeographyPositionPageDto.getPageSize() == 0) {
+            sysGeographyPositionPageDto.setPageSize(10);
+        }
+        return HttpResult.ok("success", this.sysGeographyPositionService.queryPositionList(sysGeographyPositionPageDto));
     }
     }
 
 
 
 

+ 8 - 1
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -440,7 +440,14 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      *
      *
      * @return 电销人员工号列表
      * @return 电销人员工号列表
      */
      */
-    List<String> getTelemarketingPersonnelUserId();
+    List<String> getTelemarketingPersonnelUserId(@Param("userId") String userId);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/29 17:52
+     *  @Description: 按照省市区查询数据
+     */
+    List<QxFrontlineAgentDto> queryQxFrontlineAgentList(@Param("vo") QxFrontlineAgentVo qxFrontlineAgentVo);
 }
 }
 
 
 
 

+ 11 - 1
src/main/java/com/ydtech/modules/admin/model/SysGeographyPosition.java

@@ -2,6 +2,8 @@ package com.ydtech.modules.admin.model;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
@@ -19,30 +21,38 @@ public class SysGeographyPosition implements Serializable {
     /**
     /**
      * 员工编号
      * 员工编号
      */
      */
+    @ApiModelProperty(value = "员工编号")
     private String id;
     private String id;
     /**
     /**
      * 员工姓名
      * 员工姓名
      */
      */
+    @ApiModelProperty(value = "员工姓名")
     private String userName;
     private String userName;
     /**
     /**
      * 经度
      * 经度
      */
      */
+    @ApiModelProperty(value = "经度")
     private String longitude;
     private String longitude;
     /**
     /**
      * 纬度
      * 纬度
      */
      */
+    @ApiModelProperty(value = "纬度")
     private String latitude;
     private String latitude;
     /**
     /**
      * 地址
      * 地址
      */
      */
+    @ApiModelProperty(value = "地址")
     private String address;
     private String address;
     /**
     /**
-     * 地址
+     * 在线状态
      */
      */
+    @ApiModelProperty(value = "在线状态")
     private Integer status;
     private Integer status;
     /**
     /**
      * 创建时间
      * 创建时间
      */
      */
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date createTime;
     private Date createTime;
     /**
     /**
      * 创建人
      * 创建人

+ 11 - 1
src/main/java/com/ydtech/modules/admin/model/SysGeographyPositionRecord.java

@@ -2,6 +2,8 @@ package com.ydtech.modules.admin.model;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
@@ -19,31 +21,39 @@ public class SysGeographyPositionRecord implements Serializable {
     /**
     /**
      * 自增id
      * 自增id
      */
      */
+    @ApiModelProperty(value = "自增id")
     @TableId(value = "id", type= IdType.AUTO)
     @TableId(value = "id", type= IdType.AUTO)
-    private String id;
+    private Integer id;
     /**
     /**
      * 员工编号
      * 员工编号
      */
      */
+    @ApiModelProperty(value = "员工编号")
     private String userId;
     private String userId;
     /**
     /**
      * 员工姓名
      * 员工姓名
      */
      */
+    @ApiModelProperty(value = "员工姓名")
     private String userName;
     private String userName;
     /**
     /**
      * 经度
      * 经度
      */
      */
+    @ApiModelProperty(value = "经度")
     private String longitude;
     private String longitude;
     /**
     /**
      * 纬度
      * 纬度
      */
      */
+    @ApiModelProperty(value = "纬度")
     private String latitude;
     private String latitude;
     /**
     /**
      * 地址
      * 地址
      */
      */
+    @ApiModelProperty(value = "地址")
     private String address;
     private String address;
     /**
     /**
      * 创建时间
      * 创建时间
      */
      */
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private Date createTime;
     private Date createTime;
     /**
     /**
      * 创建人
      * 创建人

+ 5 - 0
src/main/java/com/ydtech/modules/admin/model/dto/QxFrontlineAgentDto.java

@@ -102,5 +102,10 @@ public class QxFrontlineAgentDto implements Serializable {
     @ApiModelProperty(value = "时间筛选结束")
     @ApiModelProperty(value = "时间筛选结束")
     private String endDate;
     private String endDate;
 
 
+
+    private Integer totalManpowerNum;
+
+    private Double totalPremiumNum;
+
 }
 }
 
 

+ 17 - 0
src/main/java/com/ydtech/modules/admin/model/dto/SysGeographyPositionPageDto.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SysGeographyPositionPageDto {
+    @ApiModelProperty(value = "页数")
+    private int pageNum;
+
+    @ApiModelProperty(value = "每页条数")
+    private int pageSize;
+
+    @ApiModelProperty(value = "工号")
+    private String id;
+
+}

+ 4 - 2
src/main/java/com/ydtech/modules/admin/service/SysGeographyPositionService.java

@@ -3,12 +3,14 @@ package com.ydtech.modules.admin.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
+import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
+import com.ydtech.modules.order.entity.BasePageResult;
 
 
 import java.util.List;
 import java.util.List;
 
 
 public interface SysGeographyPositionService extends IService<SysGeographyPosition> {
 public interface SysGeographyPositionService extends IService<SysGeographyPosition> {
 
 
-    SysGeographyPosition queryPosition(String userId);
+    List<SysGeographyPosition> queryPosition();
 
 
-    List<SysGeographyPositionRecord> queryPositionList(String userId);
+    BasePageResult<SysGeographyPositionRecord> queryPositionList(SysGeographyPositionPageDto sysGeographyPositionPageDto);
 }
 }

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

@@ -1,21 +1,20 @@
 package com.ydtech.modules.admin.service.impl;
 package com.ydtech.modules.admin.service.impl;
 
 
-import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.ydtech.modules.admin.dao.SysGeographyPositionMapper;
 import com.ydtech.modules.admin.dao.SysGeographyPositionMapper;
 import com.ydtech.modules.admin.dao.SysGeographyPositionRecordMapper;
 import com.ydtech.modules.admin.dao.SysGeographyPositionRecordMapper;
-import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPosition;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
 import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
-import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
+import com.ydtech.modules.admin.service.SysGeographyPositionRecordService;
 import com.ydtech.modules.admin.service.SysGeographyPositionService;
 import com.ydtech.modules.admin.service.SysGeographyPositionService;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.utils.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 @Service("SysGeographyPositionService")
 @Service("SysGeographyPositionService")
@@ -26,18 +25,29 @@ public class SysGeographyPositionServiceImpl extends ServiceImpl<SysGeographyPos
     @Resource
     @Resource
     private SysGeographyPositionRecordMapper sysGeographyPositionRecordMapper;
     private SysGeographyPositionRecordMapper sysGeographyPositionRecordMapper;
 
 
+    @Resource
+    private SysGeographyPositionRecordService sysGeographyPositionRecordService;
+
 
 
 
 
     @Override
     @Override
-    public SysGeographyPosition queryPosition(String userId) {
-        return  sysGeographyPositionMapper.selectOne(new LambdaQueryWrapper<SysGeographyPosition>()
-                .eq(SysGeographyPosition::getId,userId));
+    public List<SysGeographyPosition> queryPosition() {
+        return  list();
     }
     }
 
 
     @Override
     @Override
-    public List<SysGeographyPositionRecord> queryPositionList(String userId) {
-        return sysGeographyPositionRecordMapper.selectList(new LambdaQueryWrapper<SysGeographyPositionRecord>()
-                .eq(SysGeographyPositionRecord::getUserId, userId).orderByDesc(SysGeographyPositionRecord::getCreateTime));
+    public BasePageResult<SysGeographyPositionRecord> queryPositionList(SysGeographyPositionPageDto sysGeographyPositionPageDto) {
+        Page<SysGeographyPositionRecord> page = new Page<>(sysGeographyPositionPageDto.getPageNum(), sysGeographyPositionPageDto.getPageSize());
+
+        LambdaQueryWrapper<SysGeographyPositionRecord> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(StringUtils.isNotEmpty(sysGeographyPositionPageDto.getId()),SysGeographyPositionRecord::getUserId, sysGeographyPositionPageDto.getId());
+        wrapper.orderByDesc(SysGeographyPositionRecord::getCreateTime);
+
+        Page<SysGeographyPositionRecord> insOrdersPage = sysGeographyPositionRecordService.page(page, wrapper);
+
+        return new BasePageResult<>(sysGeographyPositionPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
+                insOrdersPage.getRecords());
+
     }
     }
 
 
 
 

+ 118 - 115
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -160,7 +160,7 @@ public class UserReportServiceImpl implements UserReportService {
                 SysUser level2=null;
                 SysUser level2=null;
                 SysUser level3=null;
                 SysUser level3=null;
                 if(level1!=null){
                 if(level1!=null){
-                   level2 = getBottomByUserId(sysUser.getId());
+                    level2 = getBottomByUserId(sysUser.getId());
                 }
                 }
                 if(level2!=null){
                 if(level2!=null){
                     level3 = getBottomByUserId(sysUser.getId());
                     level3 = getBottomByUserId(sysUser.getId());
@@ -250,40 +250,33 @@ public class UserReportServiceImpl implements UserReportService {
     }
     }
 
 
     private void agentPerson(List<QxFrontlineAgentDto> sysUserList,QxFrontlineAgentVo qxFrontlineAgentVo) {
     private void agentPerson(List<QxFrontlineAgentDto> sysUserList,QxFrontlineAgentVo qxFrontlineAgentVo) {
-        HashMap<String, Integer> humanResources = new HashMap<>();
-        HashMap<String, List<String>> humanResourcesIdList = new HashMap<>();
-//              关系表
-        List<EsmUserReferrerDTO> employeeIncreaseReportDtos = esmUserReferrerMapper.getbyUserNextLevel(null);
-        Map<String, EsmUserReferrerDTO> collect = employeeIncreaseReportDtos.stream().collect(Collectors.toMap(EsmUserReferrerDTO::getId, Function.identity()));
-        Set<String> visited = new HashSet<>();
-        for (EsmUserReferrerDTO item : employeeIncreaseReportDtos) {
-            Integer count = this.nextLevelUser(item.getId(), collect, visited);
-            humanResources.put(item.getId(), count);
-            List<String> ids = new ArrayList<>();
-            humanResourcesIdList.put(item.getId(), this.nextLevelUserList(item.getId(), collect, visited, ids));
-        }
         for (QxFrontlineAgentDto userItem : sysUserList) {
         for (QxFrontlineAgentDto userItem : sysUserList) {
             String userId = userItem.getUserId();
             String userId = userItem.getUserId();
-//                  总人力
-            if (humanResources.containsKey(userId)) {
-                if (ObjectUtils.isNotEmpty(humanResources.get(userId))) {
-                    userItem.setTotalManpower(humanResources.get(userId).toString());
-                }
-            }
-            List<String> ids = new ArrayList<>();
-            //出单人力 +  总保费  +单均保费
-            if (humanResourcesIdList.containsKey(userId)) {
-                //出单人力
-                ids = humanResourcesIdList.get(userId);
+            List<SysUserTeamDto> users = esmUserReferrerMapper.getUserIdsByUserId(userId);
+            //总人力
+            long authenticationStatusCount=0;
+            long authenticationStatusNoCount=0;
+            List<String> userIds =new ArrayList<String>();
+            //已认证  1
+            //未认证  2
+            if(users!=null && users.size()>0){
+                userIds = users.stream().map(SysUserTeamDto::getId).collect(Collectors.toList());
+                // authenticationStatusCount = users.stream().filter(user -> user.getStatus() ==1).count();
+                // authenticationStatusNoCount  = users.stream().filter(user -> user.getStatus() ==2).count();
             }
             }
-            ids.add(userId);
+            userIds.add(userId);
+            userItem.setIds(userIds);
+            //出单人力
             QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
             QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
-            qxFrontlineAgentDto.setIds(ids);
+            qxFrontlineAgentDto.setIds(userIds);
             qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
             qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
             qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
             qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
             QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpowerNew(qxFrontlineAgentDto);
             QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpowerNew(qxFrontlineAgentDto);
+            //出单人力
             userItem.setOrderManpower(orderManpower.getOrderManpower());
             userItem.setOrderManpower(orderManpower.getOrderManpower());
+            //总保费
             userItem.setTotalPremium(orderManpower.getTotalPremium());
             userItem.setTotalPremium(orderManpower.getTotalPremium());
+            //单均保费
             userItem.setAveragePremium(orderManpower.getAveragePremium());
             userItem.setAveragePremium(orderManpower.getAveragePremium());
         }
         }
     }
     }
@@ -327,7 +320,7 @@ public class UserReportServiceImpl implements UserReportService {
     @Override
     @Override
     public List<QxFrontlineAgentDto> queryQxFrontlineAgentRanking(QxFrontlineAgentVo qxFrontlineAgentVo) {
     public List<QxFrontlineAgentDto> queryQxFrontlineAgentRanking(QxFrontlineAgentVo qxFrontlineAgentVo) {
         if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getProvinceId())){
         if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getProvinceId())){
-         String provinceId =   this.removeTrailingZeros(qxFrontlineAgentVo.getProvinceId());
+            String provinceId =   this.removeTrailingZeros(qxFrontlineAgentVo.getProvinceId());
             qxFrontlineAgentVo.setProvinceId(provinceId);
             qxFrontlineAgentVo.setProvinceId(provinceId);
 
 
         }
         }
@@ -339,63 +332,73 @@ public class UserReportServiceImpl implements UserReportService {
             String countyId =   this.removeTrailingZeros(qxFrontlineAgentVo.getCountyId());
             String countyId =   this.removeTrailingZeros(qxFrontlineAgentVo.getCountyId());
             qxFrontlineAgentVo.setCountyId(countyId);
             qxFrontlineAgentVo.setCountyId(countyId);
         }
         }
+        //按照条件重新查询数据
+        List<QxFrontlineAgentDto> list = sysUserMapper.queryQxFrontlineAgentList(qxFrontlineAgentVo);
+        List<QxFrontlineAgentDto> listNew =new ArrayList<>();
+        String orderSort = qxFrontlineAgentVo.getOrderSort();
+        int limit =10;
+        //暂时先取数据的前10条数据
+        if(list!=null && list.size()>0){
+            if("1".equals(orderSort)){
+                List<QxFrontlineAgentDto> listNews =new ArrayList<>();
+                for(QxFrontlineAgentDto  dto : list){
+                    //查询总人力
+                    List<SysUserTeamDto> users = esmUserReferrerMapper.getUserIdsByUserId(dto.getUserId());
+                    List<String> userIds =new ArrayList<String>();
+                    if(users!=null && users.size()>0){
+                        userIds = users.stream().map(SysUserTeamDto::getId).collect(Collectors.toList());
+                    }
+                    userIds.add(dto.getUserId());
+                    dto.setIds(userIds);
+                    dto.setTotalManpower(userIds.size()+"");
+                    dto.setTotalManpowerNum(userIds.size());
+                    listNews.add(dto);
+                }
 
 
-        if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getHouseId())){
-            String houseId =   this.removeTrailingZeros(qxFrontlineAgentVo.getHouseId());
-            qxFrontlineAgentVo.setHouseId(houseId);
-        }
-
-        PageVo<SettlementDocumentaryFeesSumEntity> pageVo = new PageVo<>();
-        Page page = new Page(1, 50);
-
-        pageVo.setPageNum(1);
-        pageVo.setPageSize(50);
-
-        IPage<QxFrontlineAgentDto> sysUserListPage = sysUserMapper.queryQxFrontlineAgent(page, qxFrontlineAgentVo);
-        List<QxFrontlineAgentDto> sysUserList = sysUserListPage.getRecords();
-
-        HashMap<String, Integer> humanResources = new HashMap<>();
-        HashMap<String, List<String>> humanResourcesIdList = new HashMap<>();
-
-//         关系表
-        List<EsmUserReferrerDTO> employeeIncreaseReportDtos = esmUserReferrerMapper.getbyUserNextLevel(null);
-        Map<String, EsmUserReferrerDTO> collect = employeeIncreaseReportDtos.stream().collect(Collectors.toMap(EsmUserReferrerDTO::getId, Function.identity()));
-        Set<String> visited = new HashSet<>();
-        for (EsmUserReferrerDTO item : employeeIncreaseReportDtos) {
-            Integer count = this.nextLevelUser(item.getId(), collect, visited);
-            humanResources.put(item.getId(), count);
-            List<String> ids = new ArrayList<>();
-            humanResourcesIdList.put(item.getId(), this.nextLevelUserList(item.getId(), collect, visited, ids));
-
-        }
-        for (QxFrontlineAgentDto userItem : sysUserList) {
-            String userId = userItem.getUserId();
-//            总人力
-            if (humanResources.containsKey(userId)) {
-                if (ObjectUtils.isNotEmpty(humanResources.get(userId))) {
-                    userItem.setTotalManpower(humanResources.get(userId).toString());
+                if(listNews.size()<limit){
+                    limit = listNews.size();
                 }
                 }
-            }
-            //出单人力 +  总保费  +单均保费
-            if (humanResourcesIdList.containsKey(userId)) {
-                if (!CollectionUtils.isEmpty(humanResourcesIdList.get(userId))) {
-                    //出单人力
-                    List<String> ids = humanResourcesIdList.get(userId);
-                    QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpower(ids);
-                    userItem.setOrderManpower(orderManpower.getOrderManpower());
-                    userItem.setTotalPremium(orderManpower.getTotalPremium());
-                    userItem.setAveragePremium(orderManpower.getAveragePremium());
+                List<QxFrontlineAgentDto> limitList = listNews.stream()
+                        .sorted(Comparator.comparing(QxFrontlineAgentDto::getTotalManpowerNum).reversed())
+                        .limit(limit)
+                        .collect(Collectors.toList());
+                if(limitList!=null &&  limitList.size()>0){
+                    for(QxFrontlineAgentDto  dto : limitList){
+                        //查询出单人力
+                        Double  sumAmount  = insAreaCompanyService.getOrderPremiumByUserIds(dto.getIds());
+                        dto.setTotalPremium(sumAmount.toString());
+                        listNew.add(dto);
+                    }
+                }
+            }else{
+                List<QxFrontlineAgentDto> listNews =new ArrayList<>();
+                for(QxFrontlineAgentDto  dto : list){
+                    //查询出单人力
+                    List<SysUserTeamDto> users = esmUserReferrerMapper.getUserIdsByUserId(dto.getUserId());
+                    List<String> userIds =new ArrayList<String>();
+                    if(users!=null && users.size()>0){
+                        userIds = users.stream().map(SysUserTeamDto::getId).collect(Collectors.toList());
+                    }
+                    userIds.add(dto.getUserId());
+                    dto.setIds(userIds);
+                    dto.setTotalManpower(userIds.size()+"");
+                    Double  sumAmount  = insAreaCompanyService.getOrderPremiumByUserIds(dto.getIds());
+                    dto.setTotalPremium(sumAmount.toString());
+                    dto.setTotalPremiumNum(sumAmount);
+                    listNews.add(dto);
+                }
+                if(listNews.size()<limit){
+                    limit = listNews.size();
                 }
                 }
+                listNew = listNews.stream()
+                        .sorted(Comparator.comparing(QxFrontlineAgentDto::getTotalPremiumNum).reversed())
+                        .limit(limit)
+                        .collect(Collectors.toList());
             }
             }
-        }
-        //排序
-        if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getOrderSort())){
-//            人员
-                this.sortBy(qxFrontlineAgentVo.getOrderSort(),sysUserList);
 
 
         }
         }
 
 
-        return sysUserList;
+        return listNew;
     }
     }
     private String removeTrailingZeros(String value) {
     private String removeTrailingZeros(String value) {
         int len = value.length();
         int len = value.length();
@@ -417,48 +420,48 @@ public class UserReportServiceImpl implements UserReportService {
 
 
 
 
     private void sortBy(String orderSort,List<QxFrontlineAgentDto> sysUserList) {
     private void sortBy(String orderSort,List<QxFrontlineAgentDto> sysUserList) {
-            Collections.sort(sysUserList, new Comparator<QxFrontlineAgentDto>() {
-                @Override
-                public int compare(QxFrontlineAgentDto o1, QxFrontlineAgentDto o2) {
-                    // 假设name是String类型,直接使用String的compareTo方法
-
-                    if("1".equals(orderSort)) { // 人员
-                        String manpower1 = o1.getTotalManpower();
-                        String manpower2 = o2.getTotalManpower();
-
-                        // 如果两个值都为null,则认为它们相等
-                        if (manpower1 == null && manpower2 == null) {
-                            return 0;
-                        }
-                        // 如果第一个值为null,则排在第二个值之后
-                        if (manpower1 == null) {
-                            return 1;
-                        }
-                        // 如果第二个值为null,则排在第一个值之前
-                        if (manpower2 == null) {
-                            return -1;
-                        }
+        Collections.sort(sysUserList, new Comparator<QxFrontlineAgentDto>() {
+            @Override
+            public int compare(QxFrontlineAgentDto o1, QxFrontlineAgentDto o2) {
+                // 假设name是String类型,直接使用String的compareTo方法
+
+                if("1".equals(orderSort)) { // 人员
+                    String manpower1 = o1.getTotalManpower();
+                    String manpower2 = o2.getTotalManpower();
+
+                    // 如果两个值都为null,则认为它们相等
+                    if (manpower1 == null && manpower2 == null) {
+                        return 0;
+                    }
+                    // 如果第一个值为null,则排在第二个值之后
+                    if (manpower1 == null) {
+                        return 1;
+                    }
+                    // 如果第二个值为null,则排在第一个值之前
+                    if (manpower2 == null) {
+                        return -1;
+                    }
 
 
-                        return o1.getTotalManpower().compareTo(o2.getTotalManpower());
-                    }else {
+                    return o1.getTotalManpower().compareTo(o2.getTotalManpower());
+                }else {
 
 
-                        String premium1 = o1.getTotalPremium();
-                        String premium2 = o2.getTotalPremium();
+                    String premium1 = o1.getTotalPremium();
+                    String premium2 = o2.getTotalPremium();
 
 
-                        // 同样的逻辑来处理null值
-                        if (premium1 == null && premium2 == null) {
-                            return 0;
-                        }
-                        if (premium1 == null) {
-                            return 1;
-                        }
-                        if (premium2 == null) {
-                            return -1;
-                        }
-                        return o1.getTotalPremium().compareTo(o2.getTotalPremium());
+                    // 同样的逻辑来处理null值
+                    if (premium1 == null && premium2 == null) {
+                        return 0;
                     }
                     }
+                    if (premium1 == null) {
+                        return 1;
+                    }
+                    if (premium2 == null) {
+                        return -1;
+                    }
+                    return o1.getTotalPremium().compareTo(o2.getTotalPremium());
                 }
                 }
-            });
+            }
+        });
     }
     }
 
 
     /**
     /**
@@ -687,7 +690,7 @@ public class UserReportServiceImpl implements UserReportService {
             }
             }
             if(!CollectionUtils.isEmpty(strings)){
             if(!CollectionUtils.isEmpty(strings)){
                 qxFrontlineAgentVo.setIds(strings);
                 qxFrontlineAgentVo.setIds(strings);
-                 userResultPage = sysUserMapper.getByIdsList(page, qxFrontlineAgentVo);
+                userResultPage = sysUserMapper.getByIdsList(page, qxFrontlineAgentVo);
                 List<QxFrontlineAgentDto> records = userResultPage.getRecords();
                 List<QxFrontlineAgentDto> records = userResultPage.getRecords();
                 for (QxFrontlineAgentDto userItem : records) {
                 for (QxFrontlineAgentDto userItem : records) {
                     TaskStatisticsDto taskStatisticsDto = insAreaCompanyMapper.NumberQuotations(userItem.getUserId());
                     TaskStatisticsDto taskStatisticsDto = insAreaCompanyMapper.NumberQuotations(userItem.getUserId());

+ 9 - 0
src/main/java/com/ydtech/modules/esm/dao/EsmUserReferrerMapper.java

@@ -238,4 +238,13 @@ public interface EsmUserReferrerMapper extends BaseMapper<EsmUserReferrer> {
     List<EsmUserReferrerDTO> getUserLevel(@Param("vo") QxFrontlineAgentVo qxFrontlineAgentVo);
     List<EsmUserReferrerDTO> getUserLevel(@Param("vo") QxFrontlineAgentVo qxFrontlineAgentVo);
 
 
     EsmTeamPolicyVO queryOrderCountHzNew(List<String> userList, String startDate, String endDate);
     EsmTeamPolicyVO queryOrderCountHzNew(List<String> userList, String startDate, String endDate);
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/29 19:22
+     *  @Description: 通过代理人查询下级的所有代理人信息
+     */
+    List<SysUserTeamDto>  getUserIdsByUserId(@Param("userId") String userId);
+
 }
 }

+ 8 - 0
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java

@@ -241,6 +241,14 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
 
 
     QxFrontlineAgentDto getChannelOrderManpowerNew(@Param("vo") QxFrontlineAgentDto qxFrontlineAgentDto);
     QxFrontlineAgentDto getChannelOrderManpowerNew(@Param("vo") QxFrontlineAgentDto qxFrontlineAgentDto);
 
 
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/30 10:22
+     *  @Description:  通过用户id查询金额数据
+     */
+    Double  getOrderPremiumByUserIds(@Param("ids") List<String>  ids);
+
 }
 }
 
 
 
 

+ 7 - 1
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java

@@ -183,5 +183,11 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
     QxFrontlineAgentDto getOrderManpowerByUserId(String id);
     QxFrontlineAgentDto getOrderManpowerByUserId(String id);
 
 
     QxFrontlineAgentDto getOrderManpowerNew(@Param("vo") QxFrontlineAgentDto qxFrontlineAgentDto);
     QxFrontlineAgentDto getOrderManpowerNew(@Param("vo") QxFrontlineAgentDto qxFrontlineAgentDto);
-
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/30 10:23
+     *  @Description:  通过用户id查询到导出的数据
+     */
+    Double getOrderPremiumByUserIds(List<String> ids);
 }
 }

+ 10 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -981,6 +981,16 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         return baseMapper.getOrderManpowerNew(qxFrontlineAgentDto);
         return baseMapper.getOrderManpowerNew(qxFrontlineAgentDto);
 
 
     }
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/8/30 10:27
+     *  @Description:  通过用户id查询总保费
+     */
+    @Override
+    public Double getOrderPremiumByUserIds(List<String> ids) {
+        return baseMapper.getOrderPremiumByUserIds(ids);
+    }
 
 
 }
 }
 
 

+ 22 - 3
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -1366,9 +1366,6 @@
             <if test="vo.phoneNumber != null and vo.phoneNumber != ''">
             <if test="vo.phoneNumber != null and vo.phoneNumber != ''">
                 and su.mobile   =#{vo.phoneNumber}
                 and su.mobile   =#{vo.phoneNumber}
             </if>
             </if>
-            <if test="vo.createTimeStart != null and vo.createTimeEnd != null">
-                and su.create_time BETWEEN #{vo.createTimeStart} AND #{vo.createTimeEnd}
-            </if>
         </where>
         </where>
     </select>
     </select>
 
 
@@ -1417,4 +1414,26 @@
         d.management_source = '3'
         d.management_source = '3'
     </select>
     </select>
 
 
+    <select id="queryQxFrontlineAgentList" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
+        SELECT
+        su.name as "name",
+        su.id  as "userId"
+        FROM
+        sys_user su
+        LEFT JOIN sys_dept sd ON sd.id = su.dept_id
+        <where>
+            su.id  LIKE '%M%'
+            and su.status = '1'
+            AND sd.management_source =2
+            <if test="vo.provinceId != null and vo.provinceId != ''">
+                and sd.id like  concat('%',#{vo.provinceId},'%')
+            </if>
+            <if test="vo.cityId != null and vo.cityId != ''">
+                and sd.id like concat('%',#{vo.cityId},'%')
+            </if>
+            <if test="vo.countyId != null and vo.countyId != ''">
+                and sd.id like concat('%',#{vo.countyId},'%')
+            </if>
+        </where>
+    </select>
 </mapper>
 </mapper>

+ 16 - 0
src/main/resources/mapper/modules/esm/EsmUserReferrerMapper.xml

@@ -376,4 +376,20 @@
             </if>
             </if>
         </where>
         </where>
     </select>
     </select>
+
+    <select id="getUserIdsByUserId" resultType="com.ydtech.modules.admin.model.dto.SysUserTeamDto">
+        with recursive t1 as (select *
+        from esm_user_referrer
+        WHERE referrer_id =#{userId}
+        and id !=#{userId}
+        union all
+        select r1.*
+        from esm_user_referrer r1
+        INNER JOIN t1 on t1.id = r1.referrer_id
+        )
+        select u.id as id , u.name as name , u.mobile as mobile, u.status as status
+        from t1
+        LEFT JOIN sys_user u on t1.id = u.id
+        WHERE  u.id is not  null
+    </select>
 </mapper>
 </mapper>

+ 19 - 4
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -1268,15 +1268,13 @@
     <select id="getOrderManpowerNew" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
     <select id="getOrderManpowerNew" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
         SELECT
         SELECT
         count( a.numberUserId ) as "orderManpower",
         count( a.numberUserId ) as "orderManpower",
-        sum( a.orderAmount ) as "totalPremium",
+        IFNULL(sum( a.orderAmount ),0) as "totalPremium",
         TRIM(TRAILING '0' FROM sum( a.orderAmount )/ count( a.numberUserId )) AS "averagePremium"
         TRIM(TRAILING '0' FROM sum( a.orderAmount )/ count( a.numberUserId )) AS "averagePremium"
         FROM
         FROM
         (
         (
         SELECT
         SELECT
         count( io.userid ) AS "numberUserId",
         count( io.userid ) AS "numberUserId",
-        SUM(IFNULL(iac.jqpremium, 0)) +
-        SUM(IFNULL(iac.sypremium, 0)) +
-        SUM(IFNULL(iac.jypremium, 0)) AS "orderAmount"
+        SUM(IFNULL(iac.sumpremium, 0))  AS "orderAmount"
         FROM
         FROM
         `ins_area_company` iac
         `ins_area_company` iac
         LEFT JOIN ins_orders io ON io.orderno = iac.orderno
         LEFT JOIN ins_orders io ON io.orderno = iac.orderno
@@ -1544,4 +1542,21 @@
         agree.partner_companies_id,
         agree.partner_companies_id,
         ins.namesimple
         ins.namesimple
     </select>
     </select>
+
+    <select id="getOrderPremiumByUserIds" resultType="Double">
+        SELECT
+        IFNULL(sum( IFNULL( iac.sumpremium, 0 ) ),0) AS "totalPremium"
+        FROM
+        `ins_area_company` iac
+        LEFT JOIN ins_orders io ON io.orderno = iac.orderno
+        <where>
+            iac.orderstatus = '3'
+            <if test="ids  != null  and  ids.size()>0 ">
+                AND io.userid IN
+                <foreach item="item"  collection="ids" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>
 </mapper>