Преглед на файлове

1.控制台人员渠道代理人导出
2.控制台 任务渠道代理人管理人电话

wuhp преди 1 година
родител
ревизия
a59276f7cd

+ 22 - 0
src/main/java/com/ydtech/modules/admin/controller/personnelStatistics/PersonnelStatisticsController.java

@@ -9,6 +9,7 @@ import com.ydtech.modules.admin.model.dto.TeamManagementDto;
 import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
 import com.ydtech.modules.admin.model.vo.KztGetDeptUtilsDto;
 import com.ydtech.modules.admin.model.vo.QxFrontlineAgentVo;
+import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.UserReportService;
 import com.ydtech.modules.admin.utils.KztGetDeptUtils;
@@ -78,6 +79,27 @@ public class PersonnelStatisticsController {
         return result;
     }
 
+
+    /**
+     * @description:   人员统计-前线人员-代理人统计-导出
+     * @author: whp
+     * @date: 2024/10/08
+     **/
+    @PostMapping("/QxFrontlineAgentExcel")
+    @ApiOperation(value = "人员统计-前线人员-代理人统计-导出")
+    public HttpResult channelAgentExcel(@RequestBody QxFrontlineAgentVo qxFrontlineAgentVo, HttpServletRequest httpServerRequest) {
+        KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
+        KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
+        if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
+            if("1".equals(kztGetDeptUtilsDto.getType())){
+                qxFrontlineAgentVo.setDeptIds(kztGetDeptUtilsDto.getIds());
+            } else if ("2".equals(kztGetDeptUtilsDto.getType())) {
+                qxFrontlineAgentVo.setUserIds(kztGetDeptUtilsDto.getIds());
+            }
+        }
+        return this.userReportService.agentExcel(qxFrontlineAgentVo);
+    }
+
     /**
      * @version
      * @author: whp

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

@@ -50,7 +50,7 @@ public class QxFrontlineAgentDto implements Serializable {
     @ApiModelProperty(value = "手机号")
     private String userPhone;
 
-    @ApiModelProperty(value = "手机号")
+    @ApiModelProperty(value = "创建日期")
     private Date userDate;
 
 

+ 36 - 0
src/main/java/com/ydtech/modules/admin/model/dto/QxFrontlineAgentExcel.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+@Data
+public class QxFrontlineAgentExcel implements Serializable {
+    @ExcelProperty(value = "姓名",index = 0)
+    private String name;
+
+    @ExcelProperty(value = "员工工号",index = 1)
+    private String userId;
+
+    @ExcelProperty(value = "联系方式",index = 2)
+    private String userPhone;
+
+    @ExcelProperty(value = "机构归属",index = 3)
+    private String deptName;
+
+    @ExcelProperty(value = "管理人名称",index = 4)
+    private String leaderName;
+
+    @ExcelProperty(value = "总人力",index = 5)
+    private String totalManpower;
+
+    @ExcelProperty(value = "出单人力",index = 6)
+    private String orderManpower;
+
+    @ExcelProperty(value = "总保费",index = 7)
+    private String totalPremium;
+
+    @ExcelProperty(value = "单均保费",index = 8)
+    private String averagePremium;
+
+}

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

@@ -144,4 +144,7 @@ public class TaskStatisticsDto {
     @ApiModelProperty(value = "性别")
     private String sex;
 
+    @ApiModelProperty(value = "领导人电话")
+    private String leaderMobile;
+
 }

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

@@ -107,6 +107,13 @@ public interface UserReportService {
      */
     HttpResult<List<QxFrontlineAgentDto>> queryChannelDetails(QxFrontlineAgentVo qxFrontlineAgentVo);
 
+    /**
+     * @description:   人员统计-前线人员-代理人统计-导出
+     * @author: whp
+     * @date: 2024/10/08
+     **/
+    HttpResult agentExcel(QxFrontlineAgentVo qxFrontlineAgentVo);
+
 }
 
 

+ 66 - 4
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -12,10 +12,7 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.dao.SysDeptMapper;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.dao.SysUserRoleMapper;
-import com.ydtech.modules.admin.model.SysDept;
-import com.ydtech.modules.admin.model.SysUser;
-import com.ydtech.modules.admin.model.SysUserRole;
-import com.ydtech.modules.admin.model.SysUserRoleKzt;
+import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.report.user.*;
 import com.ydtech.modules.admin.model.vo.AppCustomerManagementQueryVo;
@@ -32,18 +29,25 @@ 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.inv.utils.EasyExcelUtils;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.web.config.QuerydslWebConfiguration;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.io.IOException;
 import java.math.BigDecimal;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -77,6 +81,11 @@ public class UserReportServiceImpl implements UserReportService {
 
     @Autowired
     private SysDeptService sysDeptService;
+    @Value("${upload.file.path}")
+    private String uploadPath;
+
+    @Value("${upload.file.url}")
+    private String uploadUrl;
 
     /**
      *  @version
@@ -269,6 +278,56 @@ public class UserReportServiceImpl implements UserReportService {
             return HttpResult.error("查询异常");
         }
     }
+
+    @Override
+    public HttpResult agentExcel(QxFrontlineAgentVo qxFrontlineAgentVo) {
+//        QxFrontlineAgentExcel
+
+        HashMap<String, String> map = getDateMapByType(qxFrontlineAgentVo.getDays(), qxFrontlineAgentVo.getCreatetimeStart(), qxFrontlineAgentVo.getCreatetimeEnd());
+        qxFrontlineAgentVo.setCreatetimeStart(map.get("startDate"));
+        qxFrontlineAgentVo.setCreatetimeEnd(map.get("endDate"));
+
+        List<QxFrontlineAgentDto> getQxFrontlineAgentList = sysUserMapper.getQxFrontlineAgentList(qxFrontlineAgentVo);
+        if (qxFrontlineAgentVo.getManagementSource().equals("1")) {// 渠道
+            this.channelPerson(getQxFrontlineAgentList, qxFrontlineAgentVo);
+        } else if (qxFrontlineAgentVo.getManagementSource().equals("2")) {// 代理人
+            this.agentPerson(getQxFrontlineAgentList, qxFrontlineAgentVo);
+        }
+        if (StringUtils.isNotEmpty(qxFrontlineAgentVo.getOutThere())) {
+            if ("1".equals(qxFrontlineAgentVo.getOutThere())) {
+                getQxFrontlineAgentList = getQxFrontlineAgentList.stream()
+                        .filter(agent -> new BigDecimal(agent.getTotalPremium()).compareTo(BigDecimal.ZERO) > 0)
+                        .collect(Collectors.toList());
+            } else {
+                getQxFrontlineAgentList = getQxFrontlineAgentList.stream()
+                        .filter(agent -> new BigDecimal(agent.getTotalPremium()).compareTo(BigDecimal.ZERO) == 0)
+                        .collect(Collectors.toList());
+            }
+        }
+        getQxFrontlineAgentList.sort((dto1, dto2) -> {
+            BigDecimal premium1 = new BigDecimal(dto1.getTotalPremium());
+            BigDecimal premium2 = new BigDecimal(dto2.getTotalPremium());
+            return premium2.compareTo(premium1); // 降序排序
+        });
+        List<QxFrontlineAgentExcel> resultList = new ArrayList<>();
+
+        for (QxFrontlineAgentDto dto : getQxFrontlineAgentList) {
+            QxFrontlineAgentExcel qxFrontlineAgentExcel = new QxFrontlineAgentExcel();
+            BeanUtils.copyProperties(dto,qxFrontlineAgentExcel);
+            resultList.add(qxFrontlineAgentExcel);
+        }
+        String uploadPath = this.uploadPath + "/excel/";
+        Path path = Paths.get(uploadPath);
+        if (!Files.exists(path)) {
+            try {
+                Files.createDirectories(path);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        String fileName = EasyExcelUtils.downExcel(uploadPath, qxFrontlineAgentVo.getManagementSource() .equals("1") ? "人员渠道导出":"人员代理人导出", QxFrontlineAgentExcel.class, resultList);
+        return HttpResult.ok("", uploadUrl + "excel/" + fileName);
+    }
     /**
      *  @version
      *  @author: hxl
@@ -380,6 +439,9 @@ public class UserReportServiceImpl implements UserReportService {
                 QxFrontlineAgentDto taskStatisticsDto = insAreaCompanyMapper.getOrderManpowerNew(qxFrontlineAgentDto);
                 item.setAveragePremium(taskStatisticsDto.getAveragePremium());
                 item.setTotalPremium(taskStatisticsDto.getTotalPremium());
+            }else {
+                item.setAveragePremium("0");
+                item.setTotalPremium("0");
             }
         }
     }

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

@@ -1049,7 +1049,8 @@
         select a.*, su.name  as "userName",
         inf.url  as "logo",
         sui.sex as "sex",
-        su.leader_name as "leaderName"
+        su.leader_name as "leaderName",
+        su2.mobile  as "leaderMobile"
         from (
         SELECT
         sd.NAME AS "deptName",
@@ -1136,6 +1137,7 @@
         left  join  sys_user su  on su.id =a.userId
         LEFT JOIN  ins_upload_files   inf on  su.head_sculpture  =inf.id
         LEFT JOIN sys_user_info  sui  on  sui .id =su.id
+        LEFT JOIN  sys_user  su2  on su2.id =su.leader_id
         <where>
             <if test='taskStatisticsVo.userName !=null and taskStatisticsVo.userName!="" '>
                 and su.name like concat('%',#{taskStatisticsVo.userName},'%')
@@ -1363,6 +1365,7 @@
         io.userid as "userId",
         sd.id as "deptId",
         suLeader.name as "leaderName",
+        suLeader.mobile as "leaderMobile",
         COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS qutationCount,
         COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS underwritingCount,
         COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) AS qutationInsureCount,