Procházet zdrojové kódy

1.总报价统计
2.代理人详情优化

wuhp před 2 roky
rodič
revize
9ad0af7e6d

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

@@ -2,12 +2,14 @@ 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.EsmUserReferrerDTO;
 import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.dto.TeamManagementDto;
 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.esm.model.vo.EsmUserCountVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -88,8 +90,8 @@ public class PersonnelStatisticsController {
      */
     @PostMapping("queryQxFrontlineDetails")
     @ApiOperation(value = "人员统计-前线人员-代理人统计-团队管理")
-    public HttpResult<List<TeamManagementDto>> queryQxFrontlineDetails(@RequestBody QxFrontlineAgentVo qxFrontlineAgentVo) {
-        HttpResult<List<TeamManagementDto>> result = userReportService.queryQxFrontlineDetails(qxFrontlineAgentVo);
+    public HttpResult<EsmUserCountVO> queryQxFrontlineDetails(@RequestBody QxFrontlineAgentVo qxFrontlineAgentVo) {
+        HttpResult<EsmUserCountVO> result = userReportService.queryQxFrontlineDetails(qxFrontlineAgentVo);
         return result;
     }
 
@@ -123,4 +125,18 @@ public class PersonnelStatisticsController {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+
+    @PostMapping("agentTreeStructure")
+    @ApiOperation(value = "代理人树形")
+    public HttpResult<List<EsmUserReferrerDTO>> agentTreeStructure(@RequestBody QxFrontlineAgentVo qxFrontlineAgentVo) {
+        try{
+            List<EsmUserReferrerDTO> result=  userReportService.agentTreeStructure(qxFrontlineAgentVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+
+
 }

+ 15 - 0
src/main/java/com/ydtech/modules/admin/controller/taskStatistics/TaskStatisticsController.java

@@ -94,6 +94,21 @@ public class TaskStatisticsController {
         }
     }
 
+    /**
+     * @description:   保险公司统计总报价
+     * @author: whp
+     * @date: 2024/8/12
+     **/
+    @PostMapping("totalQuotation")
+    @ApiOperation(value = "控制台-保险公司统计查询")
+    public HttpResult<IPage<TaskStatisticsDto>> totalQuotation(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try{
+            IPage<TaskStatisticsDto> result = taskStatisticsService.totalQuotation(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
 
 
 }

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

@@ -392,7 +392,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     @Select("select id   from  sys_user  where   status ='1' ")
     List<String> getUserIds();
 
-    HashMap<String,Object> queryHXReportDataNew(HouLinePersonnelReportVo houLinePersonnelReportVo);
+    HashMap<String,Object> queryHXReportDataNew( @Param("vo")  HouLinePersonnelReportVo houLinePersonnelReportVo);
 
      IPage<QxFrontlineAgentDto> queryQxFrontlineAgent(@Param("page") Page page,@Param("vo") QxFrontlineAgentVo qxFrontlineAgentVo);
 

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

@@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 @Data
 @ApiModel("用户推荐人表")
@@ -29,4 +31,10 @@ public class EsmUserReferrerDTO implements Serializable {
     @ApiModelProperty(value = "用户状态")
     private String status;
 
+    @ApiModelProperty(value = "用户名称")
+    private String userName;
+
+
+    private List<EsmUserReferrerDTO> children = new ArrayList<>();
+
 }

+ 3 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsDto.java

@@ -31,6 +31,9 @@ public class TaskStatisticsDto {
     @ApiModelProperty(value = "缴费率")
     private BigDecimal contributionRate;
 
+    @ApiModelProperty(value = "已核保待缴费")
+    private BigDecimal underwritingCountRate;
+
     @ApiModelProperty(value = "报价率")
     private BigDecimal quotationRate;
 

+ 6 - 1
src/main/java/com/ydtech/modules/admin/service/TaskStatisticsService.java

@@ -30,5 +30,10 @@ public interface TaskStatisticsService {
      * @date: 2024/7/29
      **/
     IPage<TaskStatisticsDto> costCenter(TaskStatisticsVo taskStatisticsVo);
-
+    /**
+     * @description:   保险公司统计总报价
+     * @author: whp
+     * @date: 2024/8/12
+     **/
+    IPage<TaskStatisticsDto> totalQuotation(TaskStatisticsVo taskStatisticsVo);
 }

+ 5 - 1
src/main/java/com/ydtech/modules/admin/service/UserReportService.java

@@ -3,6 +3,7 @@ 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.EsmUserReferrerDTO;
 import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.dto.TeamManagementDto;
 import com.ydtech.modules.admin.model.report.user.HouLinePersonnelReportDto;
@@ -11,6 +12,7 @@ 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 com.ydtech.modules.esm.model.vo.EsmUserCountVO;
 
 import java.util.HashMap;
 import java.util.List;
@@ -78,7 +80,7 @@ public interface UserReportService {
      * @Date: 2024/8/07
      * @Description: 人员统计-前线人员-代理人统计-详情
      */
-    HttpResult<List<TeamManagementDto>> queryQxFrontlineDetails(QxFrontlineAgentVo qxFrontlineAgentVo);
+    HttpResult<EsmUserCountVO> queryQxFrontlineDetails(QxFrontlineAgentVo qxFrontlineAgentVo);
 
     /**
      * @version
@@ -94,6 +96,8 @@ public interface UserReportService {
      * @return  用户详情信息
      */
     QxFrontlineAgentDto getByUserId(String userId);
+
+    List<EsmUserReferrerDTO> agentTreeStructure(QxFrontlineAgentVo qxFrontlineAgentVo);
 }
 
 

+ 16 - 0
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -95,4 +95,20 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenter(page,taskStatisticsVo);
         return list;
     }
+    /**
+     * @description:   保险公司统计总报价
+     * @author: whp
+     * @date: 2024/8/12
+     **/
+    @Override
+    public IPage<TaskStatisticsDto> totalQuotation(TaskStatisticsVo taskStatisticsVo) {
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+        IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.totalQuotation(page,taskStatisticsVo);
+        return list;
+    }
+
+
 }

+ 158 - 140
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -1,10 +1,12 @@
 package com.ydtech.modules.admin.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 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.exception.SystemException;
 import com.ydtech.modules.admin.dao.SysDeptMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysDept;
@@ -18,11 +20,15 @@ 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.esm.model.vo.EsmTeamPolicyVO;
+import com.ydtech.modules.esm.model.vo.EsmUserCountVO;
+import com.ydtech.modules.esm.model.vo.EsmUserPolicyVO;
 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.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -215,14 +221,13 @@ public class UserReportServiceImpl implements UserReportService {
                 }
                 //出单人力 +  总保费  +单均保费
                 if (humanResourcesIdList.containsKey(userId)) {
-                    if (!CollectionUtils.isEmpty(humanResourcesIdList.get(userId))) {
                         //出单人力
                         List<String> ids = humanResourcesIdList.get(userId);
+                        ids.add(userId);
                         QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpower(ids);
                         userItem.setOrderManpower(orderManpower.getOrderManpower());
                         userItem.setTotalPremium(orderManpower.getTotalPremium());
                         userItem.setAveragePremium(orderManpower.getAveragePremium());
-                    }
                 }
             }
             return HttpResult.ok(sysUserListPage);
@@ -435,151 +440,122 @@ public class UserReportServiceImpl implements UserReportService {
      * @Description: 人员统计-前线人员-代理人统计-详情
      */
     @Override
-    public HttpResult<List<TeamManagementDto>> queryQxFrontlineDetails(QxFrontlineAgentVo qxFrontlineAgentVo) {
+    public HttpResult<EsmUserCountVO> queryQxFrontlineDetails(QxFrontlineAgentVo qxFrontlineAgentVo) {
         try {
-            List<TeamManagementDto> resultList = new ArrayList<>();
-            TeamManagementDto  levelOneteamManagementDto = new TeamManagementDto();
-            TeamManagementDto  levelTwoteamManagementDto = new TeamManagementDto();
-            TeamManagementDto  levelThreeteamManagementDto = new TeamManagementDto();
-            TeamManagementDto  levelFourteamManagementDto = new TeamManagementDto();
-            TeamManagementDto  levelTemporaryteamManagementDto = new TeamManagementDto();
-            List<String > temporaryIds = new ArrayList<>();
-
-            qxFrontlineAgentVo.setLevel("1");
-            List<EsmUserReferrerDTO> userLevelOne = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
-            levelOneteamManagementDto.setTeamLevel("本人");
-            if(!CollectionUtils.isEmpty(userLevelOne)){
-                levelOneteamManagementDto.setTotalManpower(userLevelOne.size()+"");
-            }
-            List<String> userIds = userLevelOne.stream()
-                    .filter(dto ->   "1".equals(dto.getStatus())) // 过滤出status为2或3的DTO
-                    .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
-                    .collect(Collectors.toList());
-            if(!CollectionUtils.isEmpty(userIds)){
-                QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpower(userIds);
-                if(ObjectUtils.isNotEmpty(orderManpower)){
-                    levelOneteamManagementDto.setTotalPremium(orderManpower.getTotalPremium());
-                    levelOneteamManagementDto.setOrderManpower(orderManpower.getOrderManpower());
+            EsmUserCountVO esmUserCountVO = new EsmUserCountVO();
+            List<EsmTeamPolicyVO> hzList = new ArrayList<>();
+            List<EsmUserPolicyVO> userPolicyList = new ArrayList<>();
+            List<EsmUserPolicyVO> userPolicyList0 = new ArrayList<>();
+            List<EsmUserPolicyVO> userPolicyList1 = new ArrayList<>();
+            List<EsmUserPolicyVO> userPolicyList2 = new ArrayList<>();
+            List<EsmUserPolicyVO> userPolicyList3 = new ArrayList<>();
+            EsmUserReferrer esmUserReferrer = esmUserReferrerMapper.selectById(qxFrontlineAgentVo.getUserId());
+            if (esmUserReferrer != null) {
+                List<String> userList1 = new ArrayList<>();
+                List<String> userList2 = new ArrayList<>();
+                List<String> userList3 = new ArrayList<>();
+                //本级信息
+                //明细数据加工
+                List<String> userList0 = new ArrayList<>();
+                userList0.add(esmUserReferrer.getId());
+                userPolicyList0 = esmUserReferrerMapper.queryOrderCount(userList0, null, null);
+                //汇总数据加工
+                EsmTeamPolicyVO esmTeamPolicyVO0 = esmUserReferrerMapper.queryOrderCountHz(userList0, null, null);
+                EsmTeamPolicyVO esmTeamPolicyVO1 = new EsmTeamPolicyVO();
+                EsmTeamPolicyVO esmTeamPolicyVO2 = new EsmTeamPolicyVO();
+                EsmTeamPolicyVO esmTeamPolicyVO3 = new EsmTeamPolicyVO();
+                esmTeamPolicyVO2.setTeamlevel("二级团队");
+                esmTeamPolicyVO3.setTeamlevel("三级团队");
+                if (esmTeamPolicyVO0 == null) {
+                    esmTeamPolicyVO0 = new EsmTeamPolicyVO();
+                    esmTeamPolicyVO0.setSumpremium(0);
+                    esmTeamPolicyVO0.setUsernum(0);
+                } else {
+                    esmTeamPolicyVO0.setUsernum(1);
                 }
-            }
-            resultList.add(levelOneteamManagementDto);
-//            一级非临时人员
-            List<String> temporaryUserOne = userLevelOne.stream()
-                    .filter(dto ->   "2".equals(dto.getStatus()) || "3".equals(dto.getStatus()) )
-                    .map(EsmUserReferrerDTO::getId)
-                    .collect(Collectors.toList());
-            temporaryIds.addAll(temporaryUserOne);
-
-
+                esmTeamPolicyVO0.setTeamlevel("本人");
+                esmTeamPolicyVO0.setTeamnum(1);
+
+                // 一级团队信息
+                userList1 = esmUserReferrerMapper.getIdDown_1(esmUserReferrer.getId());
+                esmTeamPolicyVO1.setTeamlevel("一级团队");
+                if (userList1 != null && userList1.size() > 0) {
+                    userPolicyList1 = esmUserReferrerMapper.queryOrderCount(userList1, null, null);
+                    EsmTeamPolicyVO esmTeamPolicyVO1_t = esmUserReferrerMapper.queryOrderCountHz(userList1, null,
+                            null);
+                    if (esmTeamPolicyVO1_t != null) {
+                        esmTeamPolicyVO1.setSumpremium(esmTeamPolicyVO1_t.getSumpremium());
+                        esmTeamPolicyVO1.setUsernum(userPolicyList1.size());//出单人力
+                    }
+                    esmTeamPolicyVO1.setTeamnum(userList1.size());//团队人数
+                    // 二级团队信息
+                    userList2 = esmUserReferrerMapper.getIdDown_2(esmUserReferrer.getId());
+
+                    esmTeamPolicyVO2.setTeamlevel("二级团队");
+                    if (userList2 != null && userList2.size() > 0) {
+                        userPolicyList2 = esmUserReferrerMapper.queryOrderCount(userList2, null, null);
+                        EsmTeamPolicyVO esmTeamPolicyVO2_t = esmUserReferrerMapper.queryOrderCountHz(userList2, null,
+                                null);
+                        if (esmTeamPolicyVO2_t != null) {
+                            esmTeamPolicyVO2.setSumpremium(esmTeamPolicyVO2_t.getSumpremium());
+                            esmTeamPolicyVO2.setUsernum(userPolicyList2.size());
+                        }
+                        esmTeamPolicyVO2.setTeamnum(userList2.size());
+                        // 三级团队信息
+                        userList3 = esmUserReferrerMapper.getIdDown_3(esmUserReferrer.getId());
+                        if(userList3!=null && userList3.size()>0){
+                            userPolicyList3=esmUserReferrerMapper.queryOrderCount(userList3,null, null);
+                            EsmTeamPolicyVO esmTeamPolicyVO3_t=esmUserReferrerMapper.queryOrderCountHz(userList3,null, null);
+                            esmTeamPolicyVO3.setTeamlevel("三级团队");
+                            esmTeamPolicyVO3.setTeamnum(userList3.size());
+                            if (esmTeamPolicyVO2_t != null) {
+                                esmTeamPolicyVO3.setSumpremium(esmTeamPolicyVO3_t.getSumpremium());
+                                esmTeamPolicyVO3.setUsernum(userPolicyList3.size());
+                            }
 
-            qxFrontlineAgentVo.setLevel("2");
-            List<EsmUserReferrerDTO> userLevelTwo = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
-            levelTwoteamManagementDto.setTeamLevel("一级团队");
+                        }
+                    }
 
-            if(!CollectionUtils.isEmpty(userLevelTwo)){
-                levelTwoteamManagementDto.setTotalManpower(userLevelTwo.size()+"");
-            }
-            List<String> userIdsTwo = userLevelTwo.stream()
-                    .filter(dto ->  "1".equals(dto.getStatus()) )
-                    .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
-                    .collect(Collectors.toList());
-            if(!CollectionUtils.isEmpty(userIdsTwo)){
-                QxFrontlineAgentDto orderManpowerTwo = insAreaCompanyService.getOrderManpower(userIdsTwo);
-                if(ObjectUtils.isNotEmpty(orderManpowerTwo)){
-                    levelTwoteamManagementDto.setTotalPremium(orderManpowerTwo.getTotalPremium());
-                    levelTwoteamManagementDto.setOrderManpower(orderManpowerTwo.getOrderManpower());
                 }
-            }
-            resultList.add(levelTwoteamManagementDto);
-
-//          一级团队临时
-            List<String> temporaryUserTwo = userLevelTwo.stream()
-                    .filter(dto ->  "2".equals(dto.getStatus()) || "3".equals(dto.getStatus())) // 过滤出status为2或3的DTO
-                    .map(EsmUserReferrerDTO::getId)
-                    .collect(Collectors.toList());
-            temporaryIds.addAll(temporaryUserTwo);
-
-            qxFrontlineAgentVo.setUserId(null);
-            qxFrontlineAgentVo.setIds(userIdsTwo);
-            qxFrontlineAgentVo.setLevel("3");
-            List<EsmUserReferrerDTO> userLevelThree = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
-            levelThreeteamManagementDto.setTeamLevel("二级团队");
-
-            if(!CollectionUtils.isEmpty(userLevelThree)){
-                levelThreeteamManagementDto.setTotalManpower(userLevelThree.size()+"");
-            }
-            List<String> userIdsThree = userLevelThree.stream()
-                    .filter(dto ->  "1".equals(dto.getStatus()) )
-                    .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
-                    .collect(Collectors.toList());
-            if(!CollectionUtils.isEmpty(userIdsThree)){
-                QxFrontlineAgentDto orderManpowerThree = insAreaCompanyService.getOrderManpower(userIdsThree);
-                if(ObjectUtils.isNotEmpty(orderManpowerThree)){
-                    levelThreeteamManagementDto.setTotalPremium(orderManpowerThree.getTotalPremium());
-                    levelThreeteamManagementDto.setOrderManpower(orderManpowerThree.getOrderManpower());
-                }
-            }
-            resultList.add(levelThreeteamManagementDto);
-
 
-            //          二级团队临时
-            List<String> temporaryUserThree = userLevelThree.stream()
-                    .filter(dto ->  "2".equals(dto.getStatus()) || "3".equals(dto.getStatus())) // 过滤出status为2或3的DTO
-                    .map(EsmUserReferrerDTO::getId)
-                    .collect(Collectors.toList());
-            temporaryIds.addAll(temporaryUserThree);
-
-            qxFrontlineAgentVo.setUserId(null);
-            qxFrontlineAgentVo.setIds(userIdsThree);
-            qxFrontlineAgentVo.setLevel("4");
-            List<EsmUserReferrerDTO> userLevelFour = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
-            levelFourteamManagementDto.setTeamLevel("三级团队");
-
-            if(!CollectionUtils.isEmpty(userLevelFour)){
-                levelFourteamManagementDto.setTotalManpower(userLevelFour.size()+"");
-            }
-            List<String> userIdsFouro = userLevelFour.stream()
-                    .filter(dto ->  "1".equals(dto.getStatus()) )
-                    .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
-                    .collect(Collectors.toList());
-            if(!CollectionUtils.isEmpty(userIdsFouro)){
-                QxFrontlineAgentDto orderManpowerFour = insAreaCompanyService.getOrderManpower(userIdsFouro);
-                if(ObjectUtils.isNotEmpty(orderManpowerFour)){
-                    levelFourteamManagementDto.setTotalPremium(orderManpowerFour.getTotalPremium());
-                    levelFourteamManagementDto.setOrderManpower(orderManpowerFour.getOrderManpower());
-                }
-            }
-            resultList.add(levelFourteamManagementDto);
-
-
-            //          三级级团队临时
-            List<String> temporaryUserFour = userLevelFour.stream()
-                    .filter(dto ->  "2".equals(dto.getStatus()) || "3".equals(dto.getStatus())) // 过滤出status为2或3的DTO
-                    .map(EsmUserReferrerDTO::getId)
-                    .collect(Collectors.toList());
-
-            temporaryIds.addAll(temporaryUserFour);
-            qxFrontlineAgentVo.setUserId(null);
-            qxFrontlineAgentVo.setIds(temporaryIds);
-            if(temporaryIds.size()>0){
-                List<EsmUserReferrerDTO> userLevelTemporary = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
-                List<String> userIdsTemporary = userLevelTemporary.stream()
-                        .map(EsmUserReferrerDTO::getId) // 将过滤后的DTO映射到它们的userId
-                        .collect(Collectors.toList());
-                QxFrontlineAgentDto orderManpowerTemporary = insAreaCompanyService.getOrderManpower(userIdsTemporary);
-                if(ObjectUtils.isNotEmpty(orderManpowerTemporary)){
-                    levelTemporaryteamManagementDto.setTotalPremium(orderManpowerTemporary.getTotalPremium());
-                    levelTemporaryteamManagementDto.setOrderManpower(orderManpowerTemporary.getOrderManpower());
+                //临时团队
+                List<String> registList = esmUserReferrerMapper.getIdDown3_regist(qxFrontlineAgentVo.getUserId());
+                EsmTeamPolicyVO esmTeamPolicyVO9 = new EsmTeamPolicyVO();
+                esmTeamPolicyVO9.setTeamlevel("临时团队");
+                esmTeamPolicyVO9.setTeamnum(registList == null ? 0 : registList.size());
+
+                //汇总
+                List<String> userList = new ArrayList<>();
+                userList.addAll(userList0);
+                userList.addAll(userList1);
+                userList.addAll(userList2);
+                userList.addAll(userList3);
+                userList.addAll(registList);
+                userPolicyList = esmUserReferrerMapper.queryOrderCount(userList, null, null);
+                EsmTeamPolicyVO esmTeamPolicyVO = new EsmTeamPolicyVO();
+                EsmTeamPolicyVO esmTeamPolicyVO_t = esmUserReferrerMapper.queryOrderCountHz(userList, null, null);
+                if (esmTeamPolicyVO_t != null) {
+                    esmTeamPolicyVO.setSumpremium(esmTeamPolicyVO_t.getSumpremium());
+                    esmTeamPolicyVO.setUsernum(userPolicyList.size());
                 }
+                esmTeamPolicyVO.setTeamlevel("汇总");
+                esmTeamPolicyVO.setTeamnum(userList.size());
+                hzList.add(esmTeamPolicyVO);
+                hzList.add(esmTeamPolicyVO0);
+                hzList.add(esmTeamPolicyVO1);
+                hzList.add(esmTeamPolicyVO2);
+                hzList.add(esmTeamPolicyVO3);
+                hzList.add(esmTeamPolicyVO9);
+                esmUserCountVO.setHzList(hzList);
+                esmUserCountVO.setUserPolicyList(userPolicyList);
+                esmUserCountVO.setUserPolicyList0(userPolicyList0);
+                esmUserCountVO.setUserPolicyList1(userPolicyList1);
+                esmUserCountVO.setUserPolicyList2(userPolicyList2);
+                esmUserCountVO.setUserPolicyList3(userPolicyList3);
+            } else {
+                throw new SystemException("内部错误");
             }
-            levelTemporaryteamManagementDto.setTeamLevel("临时团队");
-
-            if(!CollectionUtils.isEmpty(userLevelFour)){
-                levelTemporaryteamManagementDto.setTotalManpower(userLevelFour.size()+"");
-            }
-            resultList.add(levelTemporaryteamManagementDto);
-
-            return HttpResult.ok(resultList);
+            return   HttpResult.ok(esmUserCountVO);
         } catch (Exception e) {
             e.printStackTrace();
             return HttpResult.error("查询异常");
@@ -636,7 +612,7 @@ public class UserReportServiceImpl implements UserReportService {
                     TaskStatisticsDto taskStatisticsDto = insAreaCompanyMapper.NumberQuotations(userItem.getUserId());
                     userItem.setUnderwritingCount(taskStatisticsDto.getUnderwritingCount().toString());
                     userItem.setOrderNumber(taskStatisticsDto.getOrderNumber());
-                    userItem.setOrderNumber(taskStatisticsDto.getQutationInsureCount().toString());
+                    userItem.setQutationInsureCount(taskStatisticsDto.getQutationInsureCount());
                     userItem.setTotalPremium(taskStatisticsDto.getTotalPremium());
                 }
             }
@@ -683,6 +659,48 @@ public class UserReportServiceImpl implements UserReportService {
         return qxFrontlineAgentDto;
     }
 
+    /**
+     * @version
+     * @author: whp
+     * @Date: 2024/8/12
+     * @Description: 控制台代理人树形
+     */
+    @Override
+    public List<EsmUserReferrerDTO> agentTreeStructure(QxFrontlineAgentVo qxFrontlineAgentVo) {
+        List<EsmUserReferrerDTO> employeeIncreaseReportDtos = esmUserReferrerMapper.getUserLevel(qxFrontlineAgentVo);
+        List<EsmUserReferrerDTO> esmUserReferrerDTOList = this.buildUserTree(employeeIncreaseReportDtos);
+        return esmUserReferrerDTOList;
+    }
+
+    /**
+     * 递归构建树形结构
+     * @param employeeIncreaseReportDtos 所有的用户数据list
+     * @param rootUser 用户对象
+     * @return
+     */
+    private List<EsmUserReferrerDTO> buildUserTree(List<EsmUserReferrerDTO> employeeIncreaseReportDtos) {
+        Map<String, EsmUserReferrerDTO> nodeMap = new HashMap<>();
+
+        // 第一步:将所有节点放入map中,以便快速查找
+        for (EsmUserReferrerDTO node : employeeIncreaseReportDtos) {
+            nodeMap.put(node.getId(), node);
+        }
+
+        // 第二步:构建树形结构
+        List<EsmUserReferrerDTO> rootNodes = new ArrayList<>();
+        for (EsmUserReferrerDTO node : employeeIncreaseReportDtos) {
+            if (node.getReferrerId().equals(node.getId())) { // 自引用节点是根节点
+                rootNodes.add(node);
+            } else {
+                EsmUserReferrerDTO parentNode = nodeMap.get(node.getReferrerId());
+                if (parentNode != null) {
+                    parentNode.getChildren().add(node);
+                }
+            }
+        }
+        return rootNodes;
+    }
+
 }
 
 

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

@@ -236,4 +236,5 @@ public interface EsmUserReferrerMapper extends BaseMapper<EsmUserReferrer> {
      * @return  返回 用户id  和用户级别
      */
     List<EsmUserReferrerDTO> getUserLevel(@Param("vo") QxFrontlineAgentVo qxFrontlineAgentVo);
+
 }

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

@@ -221,6 +221,12 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      * @return  查询用户报价次数
      */
     TaskStatisticsDto NumberQuotations(String userId);
+    /**
+     * @description:   保险公司统计总报价
+     * @author: whp
+     * @date: 2024/8/12
+     **/
+    IPage<TaskStatisticsDto> totalQuotation( @Param("page") Page page,@Param("vo") TaskStatisticsVo taskStatisticsVo);
 
 }
 

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

@@ -1285,8 +1285,8 @@
             sum(info.salary) as  "salary",
             sum(case when info.sex ='M' THEN 1 ELSE 0 END ) as "manSex",
             sum(case when info.sex ='F'  THEN 1 ELSE 0 END) as "femaleSex",
-            sum(case when info.sex ='M' THEN 1 ELSE 0 END ) / (sum(case when info.sex ='M' THEN 1 ELSE 0 END ) +  sum(case when info.sex ='F'  THEN 1 ELSE 0 END)) as "manProportion",
-            sum(case when info.sex ='F'  THEN 1 ELSE 0 END) / (sum(case when info.sex ='M' THEN 1 ELSE 0 END ) +  sum(case when info.sex ='F'  THEN 1 ELSE 0 END)) as "femaleProportion",
+            IFNULL(sum(case when info.sex ='M' THEN 1 ELSE 0 END ) / (sum(case when info.sex ='M' THEN 1 ELSE 0 END ) +  sum(case when info.sex ='F'  THEN 1 ELSE 0 END)),0) as "manProportion",
+            IFNULL(sum(case when info.sex ='F'  THEN 1 ELSE 0 END) / (sum(case when info.sex ='M' THEN 1 ELSE 0 END ) +  sum(case when info.sex ='F'  THEN 1 ELSE 0 END)),0) as "femaleProportion",
             sum(case when info.is_speciality ='1'  THEN 1 ELSE 0 END) as "computerSpecialityPersion",
             sum(case when info.is_speciality ='0'  THEN 1 ELSE 0 END) as "otherSpecialityPersion",
             sum(case when info.is_speciality ='1'  THEN 1 ELSE 0 END) / (sum(case when info.is_speciality ='1'  THEN 1 ELSE 0 END) + sum(case when info.is_speciality ='0'  THEN 1 ELSE 0 END)) as "computerSpecialityProportion",
@@ -1315,8 +1315,8 @@
     </select>
     <select id="queryQxFrontlineAgent" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
         SELECT
-            sd.name as "name",
-            su.name as "deptName",
+            sd.name as "deptName",
+            su.name as "name",
             su.id  as "userId",
             su.dept_id  as "deptId",
             inf.file_path  as "filePath"

+ 22 - 1
src/main/resources/mapper/modules/esm/EsmUserReferrerMapper.xml

@@ -293,6 +293,8 @@
     <select id="getbyUserNextLevel" resultType="com.ydtech.modules.admin.model.dto.EsmUserReferrerDTO">
         SELECT
         eur.id as "id",
+        eur.level as "level",
+        su.name as "userName",
         eur.referrer_id as "referrerId"
         FROM
             esm_user_referrer eur
@@ -312,10 +314,13 @@
         eur.level as "level",
         eur.affiliation as "affiliation",
         eur.referrer_id as "referrerId",
-        su.status as "status"
+        su.status as "status",
+        su.name as "userName"
         FROM
         esm_user_referrer eur
         LEFT JOIN sys_user su ON su.id = eur.id
+        LEFT JOIN sys_dept sd ON sd.id = su.dept_id
+
         <where>
             su.id != 'admin'
             AND su.STATUS = 1
@@ -327,12 +332,28 @@
             <if test="vo.level !=null and  vo.level  !=''">
                 AND  eur.level =#{vo.level}
             </if>
+
+            <if test="vo.managementSource !=null and  vo.managementSource  !=''">
+                AND  sd.management_source =#{vo.managementSource}
+            </if>
             <if test="vo.ids  != null  and  vo.ids.size()>0 ">
                 AND eur.referrer_id IN
                 <foreach item="item"  collection="vo.ids" open="(" separator="," close=")">
                     #{item}
                 </foreach>
             </if>
+            <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>
+            <if test="vo.houseId != null and vo.houseId != ''">
+                and sd.id like concat('%',#{vo.houseId},'%')
+            </if>
         </where>
     </select>
 </mapper>

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

@@ -1181,5 +1181,56 @@
             </if>
         </where>
     </select>
+    <select id="totalQuotation" resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        SELECT
+        agree.insurance_company_id AS companyId,
+        agree.insurance_company AS companyName,
+        agree.partner_companies_id AS parterCompanyId,
+        ins.NAME AS parterCompanyName,
+        count(iac.orderstatus) AS orderNumber,
+        '-' as bigQutationCount,
+        '-' as bigUnderwritingCount,
+        '-' as bigCloseRate,
+        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS underwritingCount,
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) AS qutationInsureCount,
+        COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END )/ count(iac.orderstatus) AS passRate,
+        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END )/ count(iac.orderstatus) AS underwritingCountRate,
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )/ count(iac.orderstatus) AS closeRate,
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )/ COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS
+        contributionRate
+        FROM
+        ins_area_company iac
+        LEFT JOIN ptl_agreement agree ON iac.agreement_id = agree.id
+        LEFT JOIN ins_orders  io  on  io.orderno  = iac.orderno
+        LEFT JOIN esm_ins_company ins ON agree.partner_companies_id = ins.id
+        WHERE
+        agree.id IS NOT NULL
+        <if test="vo.companyId  != null  and  vo.companyId!='' ">
+            agree.insurance_company_id = #{vo.companyId}
+        </if>
+        <if test="vo.parterCompanyId  != null  and  vo.parterCompanyId!='' ">
+            agree.partner_companies_id = #{vo.parterCompanyId}
+        </if>
+        <if test="vo.beginDate  != null  and  vo.beginDate!=''  and vo.endDate  != null  and  vo.endDate!=''">
+            AND iac.createtime BETWEEN #{vo.beginDate} AND #{vo.endDate}
+        </if>
+        <if test="vo.provinceId != null and vo.provinceId != ''">
+            and io.deptid like "${vo.provinceId}%"
+        </if>
+        <if test="vo.cityId != null and vo.cityId != ''">
+            and io.deptid like "${vo.cityId}%"
+        </if>
+        <if test="vo.countyId != null and vo.countyId != ''">
+            and io.deptid like "${vo.countyId}%"
+        </if>
+        <if test="taskStatisticsVo.houseId != null and vo.houseId != ''">
+            and io.deptid like "${vo.houseId}%"
+        </if>
+        GROUP BY
+        agree.insurance_company_id,
+        agree.insurance_company,
+        agree.partner_companies_id,
+        ins.NAME
+    </select>
 
 </mapper>