Bläddra i källkod

新增 投递明细下载

DESKTOP-VAEGFGM\zqc 3 månader sedan
förälder
incheckning
68a3c9e811

+ 19 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/fair/FairAnalysisController.java

@@ -2,13 +2,17 @@ package com.citu.module.menduner.system.controller.admin.fair;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitAnalysisPageReqVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitInterviewInviteAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.analysis.RecruitJobCvRelAnalysisRespVO;
 import com.citu.module.menduner.system.controller.base.fair.JobFairJobInfoRespVO;
+import com.citu.module.menduner.system.controller.base.fair.JobFairRespVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairEnterpriseAnalysisReqVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairUserAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.fair.analysis.UserJobCVRelExcelVo;
 import com.citu.module.menduner.system.service.fair.FairAnalysisService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -19,8 +23,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
+import java.io.IOException;
+import java.util.List;
 import java.util.Map;
 
 import static com.citu.framework.common.pojo.CommonResult.success;
@@ -68,6 +75,18 @@ public class FairAnalysisController {
         return success(fairAnalysisService.userJobCVRel(reqVO));
     }
 
+
+    @GetMapping("/user/job/cv-rel/download")
+    @Operation(summary = "用户投递的简历情况下载")
+    public void userJobCVRelDownload
+            (@Valid FairUserAnalysisReqVO reqVO, HttpServletResponse response) throws IOException {
+       List<UserJobCVRelExcelVo> datas =  fairAnalysisService.userJobCVRelDownload(reqVO);
+        // 导出 Excel
+        ExcelUtils.write(response, "用户投递的简历情况.xls", "数据", UserJobCVRelExcelVo.class,
+                datas);
+    }
+
+
     @GetMapping("/user/interview-invite")
     @Operation(summary = "用户面试的情况 or 入职情况")
     public CommonResult<PageResult<RecruitInterviewInviteAnalysisRespVO>> userInterview

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/analysis/RecruitJobAnalysisRespVO.java

@@ -15,6 +15,8 @@ public class RecruitJobAnalysisRespVO extends JobAdvertisedSimpleRespVO {
     @Schema(description = "企业别称", requiredMode = Schema.RequiredMode.REQUIRED, example = "616")
     private String enterpriseAnotherName;
 
+
+
     @Schema(description = "职位类型")
     private String positionName;
 

+ 86 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/fair/analysis/UserJobCVRelExcelVo.java

@@ -0,0 +1,86 @@
+package com.citu.module.menduner.system.controller.base.fair.analysis;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+
+public class UserJobCVRelExcelVo {
+
+
+    @ExcelProperty("学生学校")
+    private String schoolName;
+
+    @ExcelProperty("学生专业")
+    private String major;
+
+    @ExcelProperty("学生姓名")
+    private String studentName;
+
+    @ExcelProperty("投递企业")
+    private String deliverEnterpriseName;
+
+    @ExcelProperty("投递时间")
+    private String deliverDate;
+
+    @ExcelProperty("投递职位")
+    private String deliverJob;
+
+
+    @ExcelProperty("面试状态")
+    private String interviewStatus;
+
+
+    public String getSchoolName() {
+        return schoolName;
+    }
+
+    public void setSchoolName(String schoolName) {
+        this.schoolName = schoolName;
+    }
+
+    public String getMajor() {
+        return major;
+    }
+
+    public void setMajor(String major) {
+        this.major = major;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getDeliverEnterpriseName() {
+        return deliverEnterpriseName;
+    }
+
+    public void setDeliverEnterpriseName(String deliverEnterpriseName) {
+        this.deliverEnterpriseName = deliverEnterpriseName;
+    }
+
+    public String getDeliverDate() {
+        return deliverDate;
+    }
+
+    public void setDeliverDate(String deliverDate) {
+        this.deliverDate = deliverDate;
+    }
+
+    public String getDeliverJob() {
+        return deliverJob;
+    }
+
+    public void setDeliverJob(String deliverJob) {
+        this.deliverJob = deliverJob;
+    }
+
+    public String getInterviewStatus() {
+        return interviewStatus;
+    }
+
+    public void setInterviewStatus(String interviewStatus) {
+        this.interviewStatus = interviewStatus;
+    }
+}

+ 4 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairAnalysisService.java

@@ -8,7 +8,10 @@ import com.citu.module.menduner.system.controller.base.analysis.RecruitJobCvRelA
 import com.citu.module.menduner.system.controller.base.fair.JobFairJobInfoRespVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairEnterpriseAnalysisReqVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairUserAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.fair.analysis.UserJobCVRelExcelVo;
 
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -53,4 +56,5 @@ public interface FairAnalysisService {
     PageResult<RecruitInterviewInviteAnalysisRespVO> userInterview(FairUserAnalysisReqVO reqVO);
 
 
+    List<UserJobCVRelExcelVo> userJobCVRelDownload(FairUserAnalysisReqVO reqVO);
 }

+ 51 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/fair/FairAnalysisServiceImpl.java

@@ -9,16 +9,20 @@ import com.citu.module.menduner.system.controller.base.fair.JobFairJobInfoPageRe
 import com.citu.module.menduner.system.controller.base.fair.JobFairJobInfoRespVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairEnterpriseAnalysisReqVO;
 import com.citu.module.menduner.system.controller.base.fair.analysis.FairUserAnalysisReqVO;
+import com.citu.module.menduner.system.controller.base.fair.analysis.UserJobCVRelExcelVo;
+import com.citu.module.menduner.system.controller.base.person.student.StudentRespVO;
 import com.citu.module.menduner.system.dal.mysql.interview.InterviewInviteMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobCvRelMapper;
+import com.citu.module.menduner.system.service.person.student.StudentService;
+import com.citu.module.system.api.dict.DictDataApi;
+import com.citu.module.system.api.dict.dto.DictDataRespDTO;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.time.LocalDateTime;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.citu.module.menduner.common.util.TimeUtils.generateDateTimeRange;
@@ -40,6 +44,11 @@ public class FairAnalysisServiceImpl implements FairAnalysisService {
     @Resource
     private InterviewInviteMapper interviewInviteMapper;
 
+    @Resource
+    DictDataApi dictDataService;
+
+    @Resource
+    StudentService studentService;
 
     @Override
     public PageResult<JobFairJobInfoRespVO> enterpriseJobPage(FairEnterpriseAnalysisReqVO reqVO) {
@@ -98,6 +107,43 @@ public class FairAnalysisServiceImpl implements FairAnalysisService {
         return jobCvRelMapper.getAnalysisDetail(req, timeRange[0], timeRange[1], reqVO.getJobCvRelStatus());
     }
 
+    @Override
+    public List<UserJobCVRelExcelVo> userJobCVRelDownload(FairUserAnalysisReqVO reqVO) {
+        reqVO.setPageSize(9999*10000);
+        PageResult<RecruitJobCvRelAnalysisRespVO> recruitJobCvRelAnalysisRespVOPageResult = userJobCVRel(reqVO);
+        List<UserJobCVRelExcelVo> res =new ArrayList<>(recruitJobCvRelAnalysisRespVOPageResult.getList().size()+1);
+
+        Map<String,String> dictMap = dictDataService
+                .getDictDataList("menduner_interview_invite_status")
+                .getData().stream().collect(Collectors.toMap(item->item.getValue(),item->item.getLabel()));
+
+
+        List<Long> userIds = recruitJobCvRelAnalysisRespVOPageResult.getList().stream().map(item -> item.getUserId()).collect(Collectors.toList());
+
+        Map<Long,StudentRespVO> studentRespVOS =  studentService.getStudentInfoByUserIds(userIds).stream().collect(Collectors.toMap(item->item.getUserId(),item->item));
+        // TODO 填充 需要字段信息
+        recruitJobCvRelAnalysisRespVOPageResult.getList().forEach(item->{
+            UserJobCVRelExcelVo excelVo = new UserJobCVRelExcelVo();
+            excelVo.setStudentName(item.getPerson().getName());
+            excelVo.setDeliverJob(item.getJob().getName());
+            excelVo.setDeliverDate(item.getCreateTime().toString());
+            excelVo.setDeliverEnterpriseName(item.getEnterpriseName());
+            excelVo.setInterviewStatus(dictMap.get(item.getStatus()));
+            //学校,专业
+            StudentRespVO studentRespVO = studentRespVOS.get(item.getUserId());
+            if(null!=studentRespVO) {
+                excelVo.setSchoolName(studentRespVO.getSchoolInfo().getName());
+                excelVo.setMajor(studentRespVO.getMajor().getNameCn());
+            }
+            res.add(excelVo);
+        });
+
+        return  res;
+
+
+    }
+
+
     @Override
     public PageResult<RecruitInterviewInviteAnalysisRespVO> userInterview(FairUserAnalysisReqVO reqVO) {
         RecruitAnalysisPageReqVO req = buildUserAnalysisReq(reqVO);
@@ -106,6 +152,8 @@ public class FairAnalysisServiceImpl implements FairAnalysisService {
                 req, timeRange[0], timeRange[1], reqVO.getInterviewInviteStatus(), reqVO.getConversationStatus());
     }
 
+
+
     private RecruitAnalysisPageReqVO buildUserAnalysisReq(FairUserAnalysisReqVO reqVO) {
         RecruitAnalysisPageReqVO req = new RecruitAnalysisPageReqVO();
         req.setJobFairId(reqVO.getJobFairId());

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/major/MajorService.java

@@ -69,4 +69,6 @@ public interface MajorService {
     Map<String, List<AppMajorRespVO>> getAll();
 
     List<MajorDO> list(String name);
+
+    List<MajorDO> getMajors(List<Long> majorIds);
 }

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/major/MajorServiceImpl.java

@@ -116,4 +116,9 @@ public class MajorServiceImpl implements MajorService {
     public List<MajorDO> list(String name) {
         return majorMapper.searchByName(name);
     }
+
+    @Override
+    public List<MajorDO> getMajors(List<Long> majorIds) {
+        return majorMapper.selectByIds(majorIds);
+    }
 }

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/student/StudentService.java

@@ -8,6 +8,7 @@ import com.citu.module.menduner.system.controller.base.person.student.StudentSav
 import com.citu.module.menduner.system.dal.dataobject.person.StudentDO;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 学生信息 Service 接口
@@ -78,4 +79,11 @@ public interface StudentService {
      * @return 学生信息
      */
     StudentRespVO get(Long id);
+
+    /**
+     * 根据用户id查询学生信息
+     * @param userIds
+     * @return
+     */
+    List<StudentRespVO> getStudentInfoByUserIds(List<Long> userIds);
 }

+ 32 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/student/StudentServiceImpl.java

@@ -1,14 +1,18 @@
 package com.citu.module.menduner.system.service.person.student;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.base.major.MajorRespVO;
 import com.citu.module.menduner.system.controller.base.person.student.StudentPageReqVO;
 import com.citu.module.menduner.system.controller.base.person.student.StudentRespVO;
 import com.citu.module.menduner.system.controller.base.person.student.StudentSaveReqVO;
+import com.citu.module.menduner.system.controller.base.school.SchoolInfoRespVO;
 import com.citu.module.menduner.system.controller.base.school.SchoolOrganizationRespVO;
+import com.citu.module.menduner.system.dal.dataobject.major.MajorDO;
 import com.citu.module.menduner.system.dal.dataobject.person.StudentDO;
+import com.citu.module.menduner.system.dal.dataobject.school.SchoolInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.school.SchoolOrganizationDO;
 import com.citu.module.menduner.system.dal.mysql.person.StudentMapper;
 import com.citu.module.menduner.system.service.major.MajorService;
@@ -19,6 +23,11 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.STUDENT_NOT_EXISTS;
 
@@ -109,6 +118,29 @@ public class StudentServiceImpl implements StudentService {
         return resp;
     }
 
+    @Override
+    public List<StudentRespVO> getStudentInfoByUserIds(List<Long> userIds) {
+
+        if(null == userIds ||userIds.isEmpty()){
+            return new ArrayList<>();
+        }
+        List<StudentDO> studentDOS = studentMapper.selectList(new LambdaQueryWrapper<StudentDO>().in(StudentDO::getUserId, userIds));
+        List<Long> majorIds = studentDOS.stream().map(StudentDO::getMajorId).collect(Collectors.toList());
+        List<Long> schoolIds = studentDOS.stream().map(StudentDO::getSchoolId).collect(Collectors.toList());
+        Map<Long,MajorDO> majorDOS = majorService.getMajors(majorIds).stream().collect(Collectors.toMap(MajorDO::getId, item->item));
+        Map<Long,SchoolInfoDO> schoolInfoDOS =  schoolInfoService.getSchoolInfos(schoolIds).stream().collect(Collectors.toMap(SchoolInfoDO::getId, item->item));
+        List<StudentRespVO> respVOS =new ArrayList<>(studentDOS.size()+1);
+        studentDOS.forEach(item->{
+            StudentRespVO respVO = BeanUtils.toBean(item, StudentRespVO.class);
+            respVO.setMajor(BeanUtils.toBean(majorDOS.get(item.getMajorId()), MajorRespVO.class));
+            respVO.setSchoolInfo(BeanUtils.toBean(schoolInfoDOS.get(item.getSchoolId()), SchoolInfoRespVO.class));
+            respVOS.add(respVO);
+        });
+
+//        majorService.
+        return respVOS;
+    }
+
     public void fill(StudentRespVO resp) {
         SchoolOrganizationDO dept = schoolOrganizationService.getSchoolOrganization(resp.getSchoolDeptId());
         resp.setSchoolDept(BeanUtils.toBean(dept, SchoolOrganizationRespVO.class));

+ 1 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/school/SchoolInfoService.java

@@ -80,4 +80,5 @@ public interface SchoolInfoService {
      */
     List<SchoolInfoDO> list(String name);
 
+    List<SchoolInfoDO> getSchoolInfos(List<Long> schoolIds);
 }

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/school/SchoolInfoServiceImpl.java

@@ -118,4 +118,9 @@ public class SchoolInfoServiceImpl implements SchoolInfoService {
     public List<SchoolInfoDO> list(String name) {
         return schoolInfoMapper.selectListByName(name);
     }
+
+    @Override
+    public List<SchoolInfoDO> getSchoolInfos(List<Long> schoolIds) {
+        return schoolInfoMapper.selectByIds(schoolIds);
+    }
 }