Quellcode durchsuchen

Merge branch 'test' of http://www.baoxianzhanggui.com:8090/sxzgd/java-insagent-pc into test-cyr

caiyaru vor 2 Jahren
Ursprung
Commit
c81f6c4e4f

+ 33 - 2
src/main/java/com/ydtech/modules/admin/controller/personnelStatistics/PersonnelStatisticsController.java

@@ -1,9 +1,13 @@
 package com.ydtech.modules.admin.controller.personnelStatistics;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
+import com.ydtech.modules.admin.model.vo.QxFrontlineAgentVo;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.UserReportService;
+import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesSumEntity;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.HashMap;
+import java.util.List;
 
 /**
  *    人员统计
@@ -39,7 +44,6 @@ public class PersonnelStatisticsController {
     @PostMapping("queryHXReportData")
     @ApiOperation(value = "查询后线人员统计数据")
     public HttpResult<HashMap<String,Object>> queryHXReportDataNew(@RequestBody HouLinePersonnelReportVo houLinePersonnelReportVo) {
-
         try{
             HashMap<String,Object> houLinePersonnelReportDto = userReportService.queryHXReportDataNew(houLinePersonnelReportVo);
             return HttpResult.ok("查询数据成功", houLinePersonnelReportDto);
@@ -48,9 +52,36 @@ public class PersonnelStatisticsController {
         }
     }
 
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/8/07
+     * @Description: 人员统计-前线人员-代理人统计
+     */
+    @PostMapping("queryQxFrontlineAgent")
+    @ApiOperation(value = "人员统计-前线人员-代理人统计")
+    public HttpResult<IPage<QxFrontlineAgentDto>> queryQxFrontlineAgent(@RequestBody QxFrontlineAgentVo qxFrontlineAgentVo) {
 
+        HttpResult<IPage<QxFrontlineAgentDto>> result = userReportService.queryQxFrontlineAgent(qxFrontlineAgentVo);
+        return result;
+    }
 
-
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/8/07
+     * @Description: 人员统计-前线人员-代理人统计
+     */
+    @PostMapping("queryQxFrontlineAgentRanking")
+    @ApiOperation(value = "人员统计-前线人员-代理人统计-团队排名")
+    public HttpResult<List<QxFrontlineAgentDto>> queryQxFrontlineAgentRanking(@RequestBody QxFrontlineAgentVo qxFrontlineAgentVo) {
+        try{
+            List<QxFrontlineAgentDto> result = userReportService.queryQxFrontlineAgentRanking(qxFrontlineAgentVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
 
 
 }

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

@@ -6,16 +6,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.QuTeamNum;
 import com.ydtech.modules.admin.model.QuUserNum;
 import com.ydtech.modules.admin.model.SysUser;
-import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
-import com.ydtech.modules.admin.model.dto.QuUserNumDto;
-import com.ydtech.modules.admin.model.dto.ReportDto;
-import com.ydtech.modules.admin.model.dto.SysUserDto;
+import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.report.user.HouLinePersonnelReportDto;
 import com.ydtech.modules.admin.model.report.user.QianLineQDPersonnelReportDto;
-import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
-import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
-import com.ydtech.modules.admin.model.vo.SysUserVO;
-import com.ydtech.modules.admin.model.vo.SysUserVOExt;
+import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.base.model.dto.PageDto;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
@@ -399,6 +393,9 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     List<String> getUserIds();
 
     HashMap<String,Object> queryHXReportDataNew(HouLinePersonnelReportVo houLinePersonnelReportVo);
+
+     IPage<QxFrontlineAgentDto> queryQxFrontlineAgent(@Param("page") Page page,@Param("vo") QxFrontlineAgentVo qxFrontlineAgentVo);
+
 }
 
 

+ 29 - 0
src/main/java/com/ydtech/modules/admin/model/dto/EsmUserReferrerDTO.java

@@ -0,0 +1,29 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("用户推荐人表")
+public class EsmUserReferrerDTO implements Serializable {
+
+    @ApiModelProperty(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "推荐人代码")
+    private String referrerId;
+
+    @ApiModelProperty(value = "推荐人姓名")
+    private String referrerName;
+
+    @ApiModelProperty(value = "推荐人级别")
+    private String level;
+
+    @ApiModelProperty(value = "推荐人归属ID")
+    private String affiliation;
+
+}

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

@@ -0,0 +1,48 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@Data
+@ApiModel("人员统计-前线人员-代理人统计实体")
+public class QxFrontlineAgentDto implements Serializable {
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    @ApiModelProperty(value = "归属机构")
+    private String deptName;
+
+    @ApiModelProperty(value = "总人力")
+    private String totalManpower;
+
+    @ApiModelProperty(value = "出单人力")
+    private String orderManpower;
+
+    @ApiModelProperty(value = "总保费")
+    private String totalPremium;
+
+    @ApiModelProperty(value = "单均保费")
+    private String averagePremium;
+
+    @ApiModelProperty(value = "员工id")
+    private String userId;
+
+    @ApiModelProperty(value = "部门id")
+    private String deptId;
+
+    @ApiModelProperty(value = "头像路径")
+    private String filePath;
+
+}
+

+ 55 - 0
src/main/java/com/ydtech/modules/admin/model/vo/QxFrontlineAgentVo.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.Min;
+import java.io.Serializable;
+
+@Data
+@ApiModel("人员统计-前线人员-代理人统计查询实体")
+@NoArgsConstructor
+public class QxFrontlineAgentVo implements Serializable {
+//  员工工号带M是前线
+    @ApiModelProperty(value = "省机构id")
+    private String provinceId;
+
+    @ApiModelProperty(value = "市机构id")
+    private String cityId;
+
+    @ApiModelProperty(value = "县机构id")
+    private String countyId;
+
+    @ApiModelProperty(value = "门店机构id")
+    private String houseId;
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    @ApiModelProperty(value = "工号")
+    private String userCode;
+
+    @ApiModelProperty(value = "电话号")
+    private String phoneNumber;
+
+    @ApiModelProperty(value = "机构来源(1-渠道、2-个代)")
+    private String managementSource;
+
+    @ApiModelProperty(value = "每页页数")
+    private int pageSize;
+
+    @ApiModelProperty(value = "页数")
+    @Min(value = 1, message = "页数最小为1")
+    private int pageNum;
+
+    @ApiModelProperty(value = "排序  人员 保费")
+    private String orderSort;
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/admin/service/UserReportService.java

@@ -1,11 +1,15 @@
 package com.ydtech.modules.admin.service;
 
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.report.user.HouLinePersonnelReportDto;
 import com.ydtech.modules.admin.model.report.user.QianLineDDPersonnelReportDto;
 import com.ydtech.modules.admin.model.report.user.QianLineDLPersonnelReportDto;
 import com.ydtech.modules.admin.model.report.user.QianLineQDPersonnelReportDto;
 import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
+import com.ydtech.modules.admin.model.vo.QxFrontlineAgentVo;
 
 import java.util.HashMap;
 import java.util.List;
@@ -52,6 +56,20 @@ public interface UserReportService {
      *  @Description:  通过后线人员机构查询统计数据
      */
     HashMap<String,Object> queryHXReportDataNew(HouLinePersonnelReportVo houLinePersonnelReportVo);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/07
+     *  @Description:  人员统计-前线人员-代理人统计
+     */
+    HttpResult<IPage<QxFrontlineAgentDto>> queryQxFrontlineAgent(QxFrontlineAgentVo qxFrontlineAgentVo);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/07
+     *  @Description:  人员统计-前线人员-代理人统计-团队排名
+     */
+    List<QxFrontlineAgentDto> queryQxFrontlineAgentRanking(QxFrontlineAgentVo qxFrontlineAgentVo);
 
 }
 

+ 219 - 3
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -1,20 +1,38 @@
 package com.ydtech.modules.admin.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.constants.enums.dict.DictionaryManagement;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.dao.SysDeptMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.EmployeeIncreaseReportDto;
+import com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO;
+import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.dto.ReportDto;
 import com.ydtech.modules.admin.model.report.user.*;
 import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
+import com.ydtech.modules.admin.model.vo.QxFrontlineAgentVo;
 import com.ydtech.modules.admin.service.UserReportService;
+import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
+import com.ydtech.modules.esm.model.EsmUserReferrer;
+import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesSumEntity;
+import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.utils.StringUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  *  @version
@@ -31,6 +49,12 @@ public class UserReportServiceImpl implements UserReportService {
     @Autowired
     private SysUserMapper sysUserMapper;
 
+    @Autowired
+    private EsmUserReferrerMapper esmUserReferrerMapper;
+
+    @Autowired
+    private InsAreaCompanyService insAreaCompanyService;
+
     /**
      *  @version
      *  @author: hxl
@@ -147,6 +171,198 @@ public class UserReportServiceImpl implements UserReportService {
         SysUser user =sysUserMapper.selectOne(lqw);
         return user;
     }
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/07
+     *  @Description:  人员统计-前线人员-代理人统计
+     */
+    @Override
+    public HttpResult<IPage<QxFrontlineAgentDto>> queryQxFrontlineAgent(QxFrontlineAgentVo qxFrontlineAgentVo) {
+        try {
+            PageVo<SettlementDocumentaryFeesSumEntity> pageVo = new PageVo<>();
+            Page page = new Page(qxFrontlineAgentVo.getPageNum(), qxFrontlineAgentVo.getPageSize());
+
+            pageVo.setPageNum(qxFrontlineAgentVo.getPageNum());
+            pageVo.setPageSize(qxFrontlineAgentVo.getPageSize());
+
+
+            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 (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());
+                    }
+                }
+            }
+            return HttpResult.ok(sysUserListPage);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResult.error("查询异常");
+        }
+    }
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/07
+     *  @Description:  人员统计-前线人员-代理人统计-团队排名
+     */
+    @Override
+    public List<QxFrontlineAgentDto> queryQxFrontlineAgentRanking(QxFrontlineAgentVo qxFrontlineAgentVo) {
+
+        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 (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());
+                }
+            }
+        }
+        //排序
+        if(StringUtils.isNotEmpty(qxFrontlineAgentVo.getOrderSort())){
+//            人员
+                this.sortBy(qxFrontlineAgentVo.getOrderSort(),sysUserList);
+
+        }
+
+        return 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)) { // 人员
+                        return o1.getTotalManpower().compareTo(o2.getTotalManpower());
+
+                    }else {
+                        return o1.getTotalPremium().compareTo(o2.getTotalPremium());
+
+                    }
+                }
+            });
+    }
+
+    /**
+     *
+     * @param id
+     * @param collect
+     * @param visited
+     * @return  获取所有用户人力的统计
+     */
+    private Integer nextLevelUser(String id, Map<String, EsmUserReferrerDTO> collect, Set<String> visited) {
+        if (visited.contains(id)) {
+            return 0; // 如果已经访问过,返回0
+        }
+        visited.add(id); // 标记为已访问
+
+        EsmUserReferrerDTO esmUserReferrerDTO = collect.get(id);
+        if(esmUserReferrerDTO == null ){
+            return 0;
+        }
+        Integer  count=0;
+
+        for (EsmUserReferrerDTO potentialSubordinate : collect.values()) {
+            if (potentialSubordinate.getReferrerId().equals(id)) {
+                count++; // 直接下级加1
+                count += nextLevelUser(potentialSubordinate.getId(),collect,visited); // 递归计算下级的下级
+            }
+        }
+        return count;
+    }
+
+    /**
+     *
+     * @param id
+     * @param collect
+     * @param visited
+     * @param ids  存储用户下级ids
+     * @return  获取用户下级用户idList
+     */
+    private List<String> nextLevelUserList(String id, Map<String, EsmUserReferrerDTO> collect, Set<String> visited, List<String> ids) {
+        if (visited.contains(id)) {
+            return ids; // 如果已经访问过,返回0
+        }
+        visited.add(id); // 标记为已访问
+
+        EsmUserReferrerDTO esmUserReferrerDTO = collect.get(id);
+        if(esmUserReferrerDTO == null ){
+            return ids;
+        }
+        for (EsmUserReferrerDTO potentialSubordinate : collect.values()) {
+            if (potentialSubordinate.getReferrerId().equals(id)) {
+                ids.add(potentialSubordinate.getId());
+                this.nextLevelUserList(potentialSubordinate.getId(),collect,visited,ids); // 递归计算下级的下级
+            }
+        }
+        return ids;
+    }
 
 }
 

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.EmployeeIncreaseReportDto;
+import com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.dto.SysUserTeamDto;
 import com.ydtech.modules.admin.model.vo.AppCustomerManagementQueryVo;
@@ -225,4 +226,7 @@ public interface EsmUserReferrerMapper extends BaseMapper<EsmUserReferrer> {
 
 
     List<EsmUserPolicyForUserVO> queryOrderCountForUser(String userId,String startDate, String endDate);
+
+    List<EsmUserReferrerDTO> getbyUserNextLevel(String userId);
+
 }

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.dto.AllpremiumDto;
 import com.ydtech.modules.admin.model.dto.PremiumReportDto;
+import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
 import com.ydtech.modules.admin.model.report.company.CompanyPremiumDataDto;
 import com.ydtech.modules.admin.model.report.company.CompanyPremiumDataQueryDto;
@@ -24,6 +25,7 @@ import com.ydtech.modules.order.entity.vo.OrderQueryVo;
 import com.ydtech.modules.order.entity.vo.RejectPageQueryVo;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.List;
 
@@ -204,6 +206,13 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      * @date: 2024/7/29
      **/
     IPage<TaskStatisticsDto> costCenter(@Param("page") Page page, @Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/08
+     *  @Description:  控制台出单人力
+     */
+    QxFrontlineAgentDto getOrderManpower(List<String> ids);
 
 }
 

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

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsAreaCompanyAccidentalDriving;
@@ -11,6 +12,7 @@ import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -168,4 +170,12 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      *  @Description:  获取暂存订单数据
      */
     Page<InsAreaCompany> getStageOrder(Page page, String userId,RejectPageQueryVo rejectPageQueryVo);
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/08
+     *  @Description:  控制台出单人力
+     */
+    QxFrontlineAgentDto getOrderManpower(List<String> ids);
 }

+ 11 - 1
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -9,6 +9,7 @@ import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
 import com.ydtech.modules.fnc.entity.InsFeeAudit;
@@ -948,7 +949,16 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
     public Page<InsAreaCompany> getStageOrder(Page page, String userId,RejectPageQueryVo rejectPageQueryVo) {
         return baseMapper.getStageOrder(page, userId,rejectPageQueryVo);
     }
-
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/08
+     *  @Description:  控制台出单人力
+     */
+    @Override
+    public QxFrontlineAgentDto getOrderManpower(List<String> ids) {
+        return baseMapper.getOrderManpower(ids);
+    }
 
 }
 

+ 52 - 0
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -1298,6 +1298,58 @@
             info.id is not  null
             and su.id  LIKE '%M%'
             and su.status = '1'
+            <if test="vo.provinceId != null and vo.provinceId != ''">
+                and sd.deptid like "$vo.provinceId}%"
+            </if>
+            <if test="vo.cityId != null and vo.cityId != ''">
+                and sd.deptid like "${vo.cityId}%"
+            </if>
+            <if test="vo.countyId != null and vo.countyId != ''">
+                and sd.deptid like "${vo.countyId}%"
+            </if>
+            <if test="vo.houseId != null and vo.houseId != ''">
+                and sd.deptid like "${vo.houseId}%"
+            </if>
+        </where>
+    </select>
+    <select id="queryQxFrontlineAgent" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
+        SELECT
+            sd.name as "name",
+            su.name as "deptName",
+            su.id  as "userId",
+            su.dept_id  as "deptId",
+            inf.file_path  as "filePath"
+        FROM
+            sys_user su
+                LEFT JOIN sys_dept sd ON sd.id = su.dept_id
+                LEFT JOIN  ins_upload_files   inf on  su.head_sculpture  =inf.id
+        <where>
+            su.id  LIKE '%M%'
+            and su.status = '1'
+            <if test="vo.managementSource != null  and  vo.managementSource!='' ">
+                AND sd.management_source =#{vo.managementSource}
+            </if>
+            <if test="vo.provinceId != null and vo.provinceId != ''">
+                and sd.deptid like "$vo.provinceId}%"
+            </if>
+            <if test="vo.cityId != null and vo.cityId != ''">
+                and sd.deptid like "${vo.cityId}%"
+            </if>
+            <if test="vo.countyId != null and vo.countyId != ''">
+                and sd.deptid like "${vo.countyId}%"
+            </if>
+            <if test="vo.houseId != null and vo.houseId != ''">
+                and sd.deptid like "${vo.houseId}%"
+            </if>
+            <if test="vo.name != null and vo.name != ''">
+                and su.name   =#{vo.name}
+            </if>
+            <if test="vo.userCode != null and vo.userCode != ''">
+                and su.id   =#{vo.userCode}
+            </if>
+            <if test="vo.phoneNumber != null and vo.phoneNumber != ''">
+                and su.mobile   =#{vo.phoneNumber}
+            </if>
         </where>
     </select>
 

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

@@ -290,4 +290,20 @@
              )c on a.companyId = c.companyId
         where a.companyId is not null
     </select>
+    <select id="getbyUserNextLevel" resultType="com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO">
+        SELECT
+        eur.id as "id",
+        eur.referrer_id as "referrerId"
+        FROM
+            esm_user_referrer eur
+                LEFT JOIN sys_user su ON su.id = eur.id
+        <where>
+            su.id != 'admin'
+            AND su.STATUS = 1
+            AND referrer_id IS NOT NULL
+            <if test="userId !=null and  userId  !=''">
+              AND  eur.referrer_id =#{userId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 29 - 0
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -1131,4 +1131,33 @@
             iac.company_id,
             iac.inscompany
     </select>
+
+
+    <select id="getOrderManpower" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
+        SELECT
+        count( a.numberUserId ) as "orderManpower",
+        sum( a.orderAmount ) as "totalPremium",
+        sum( a.orderAmount )/  count( a.numberUserId ) as "averagePremium"
+        FROM
+        (
+        SELECT
+        count( io.userid ) AS "numberUserId",
+        sum( iac.sumpremium ) AS "orderAmount"
+        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>
+        GROUP BY
+        io.userid
+        ) a
+    </select>
+
 </mapper>