Explorar el Código

火苗儿 新增学生明细导出接口

DESKTOP-VAEGFGM\zqc hace 6 meses
padre
commit
25ffdac0c6

+ 2 - 0
citu-module-infra/citu-module-infra-biz/src/main/java/com/citu/module/infra/websocket/WebSocketTest.java

@@ -0,0 +1,2 @@
+package com.citu.module.infra.websocket;public class Test {
+}

+ 24 - 0
menduner/menduner-flames-biz/src/main/java/com/citupro/module/menduner/flames/controller/app/SchoolController.java

@@ -13,7 +13,11 @@ import com.citupro.module.menduner.flames.dal.mysql.School;
 import com.citupro.module.menduner.flames.service.SchoolService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
 import java.util.Map;
 
 /**
@@ -212,5 +216,25 @@ public class SchoolController {
     }
 
 
+    /**
+     * 学生实习明细导出
+     * @param reqVo
+     * @return R
+     * @eo.name 学生实习明细导出
+     * @eo.url /school/student/detail/export
+     * @eo.method post
+     * @eo.request-type formdata
+     */
+    @PostMapping("/school/student/detail/export")
+    public  void schoolStudentDetailExport(@RequestBody SchoolStudentDetailReqVo reqVo, HttpServletResponse response) throws IOException {
+        response.addHeader("Pargam", "no-cache");
+        response.addHeader("Cache-Control", "no-cache");
+//        response.setContentType("application/octet-stream");
+        response.setCharacterEncoding("UTF-8");
+        response.setHeader("Content-disposition",  URLEncoder.encode("学生实习情况导出表.xlsx", "UTF-8"));
+        response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
+        schoolService.schoolStudentDetailExport(reqVo,response.getOutputStream());
+    }
+
 
 }

+ 18 - 0
menduner/menduner-flames-biz/src/main/java/com/citupro/module/menduner/flames/controller/base/reqvo/school/SchoolStudentDetailReqVo.java

@@ -7,6 +7,24 @@ public class SchoolStudentDetailReqVo {
     private Long schoolId;
 
     private Page page =new Page();
+
+
+
+    /**
+     * 双选会id
+     */
+    private Long jobFairId;
+
+
+    public Long getJobFairId() {
+        return jobFairId;
+    }
+
+    public void setJobFairId(Long jobFairId) {
+        this.jobFairId = jobFairId;
+    }
+
+
     public Long getSchoolId() {
         return schoolId;
     }

+ 170 - 0
menduner/menduner-flames-biz/src/main/java/com/citupro/module/menduner/flames/controller/base/respvo/school/SchoolStudentDetailRespVo.java

@@ -1,4 +1,174 @@
 package com.citupro.module.menduner.flames.controller.base.respvo.school;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+
 public class SchoolStudentDetailRespVo {
+    @ExcelProperty("实习状态")
+    private String status;
+
+    @ExcelProperty("记录操作时间")
+    private String recordDate;
+
+    @ExcelProperty("学生姓名")
+    private String studentName;
+
+    @ExcelProperty("学生学号")
+    private String studentNO;
+
+    @ExcelProperty("学生班级")
+    private String schoolClassName;
+
+    @ExcelProperty("学生专业")
+    private String majorName;
+
+    @ExcelProperty("学生院系")
+    private String schoolDepartmentName;
+
+    @ExcelProperty("企业名称")
+    private String enterpeiseName;
+
+    @ExcelIgnore
+    private Long enterpriseId;
+
+    @ExcelIgnore
+    private Long  enterpriseRecruitId;
+
+    @ExcelProperty("实习部门")
+    private String jobDept;
+
+    @ExcelProperty("实习岗位")
+    private String enterpriseRecruitJobName;
+
+    @ExcelProperty("联系电话")
+    private String phone;
+
+
+    @ExcelProperty("紧急联系人")
+    private String emergencyContactName;
+
+    @ExcelProperty("紧急联系人电话")
+    private String emergencyContactPhone;
+
+
+
+    public String getSchoolDepartmentName() {
+        return schoolDepartmentName;
+    }
+
+    public void setSchoolDepartmentName(String schoolDepartmentName) {
+        this.schoolDepartmentName = schoolDepartmentName;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentNO() {
+        return studentNO;
+    }
+
+    public void setStudentNO(String studentNO) {
+        this.studentNO = studentNO;
+    }
+
+    public String getSchoolClassName() {
+        return schoolClassName;
+    }
+
+    public void setSchoolClassName(String schoolClassName) {
+        this.schoolClassName = schoolClassName;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+
+    public String getEnterpeiseName() {
+        return enterpeiseName;
+    }
+
+    public void setEnterpeiseName(String enterpeiseName) {
+        this.enterpeiseName = enterpeiseName;
+    }
+
+    public Long getEnterpriseId() {
+        return enterpriseId;
+    }
+
+    public void setEnterpriseId(Long enterpriseId) {
+        this.enterpriseId = enterpriseId;
+    }
+
+    public Long getEnterpriseRecruitId() {
+        return enterpriseRecruitId;
+    }
+
+    public void setEnterpriseRecruitId(Long enterpriseRecruitId) {
+        this.enterpriseRecruitId = enterpriseRecruitId;
+    }
+
+    public String getJobDept() {
+        return jobDept;
+    }
+
+    public void setJobDept(String jobDept) {
+        this.jobDept = jobDept;
+    }
+
+    public String getEnterpriseRecruitJobName() {
+        return enterpriseRecruitJobName;
+    }
+
+    public void setEnterpriseRecruitJobName(String enterpriseRecruitJobName) {
+        this.enterpriseRecruitJobName = enterpriseRecruitJobName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getEmergencyContactName() {
+        return emergencyContactName;
+    }
+
+    public void setEmergencyContactName(String emergencyContactName) {
+        this.emergencyContactName = emergencyContactName;
+    }
+
+    public String getEmergencyContactPhone() {
+        return emergencyContactPhone;
+    }
+
+    public void setEmergencyContactPhone(String emergencyContactPhone) {
+        this.emergencyContactPhone = emergencyContactPhone;
+    }
+
+    public String getRecordDate() {
+        return recordDate;
+    }
+
+    public void setRecordDate(String recordDate) {
+        this.recordDate = recordDate;
+    }
 }

+ 2 - 1
menduner/menduner-flames-biz/src/main/java/com/citupro/module/menduner/flames/mapper/SchoolMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import com.citupro.module.menduner.flames.controller.base.reqvo.school.SchoolOrganizationReqVo;
+import com.citupro.module.menduner.flames.controller.base.reqvo.school.SchoolStudentDetailReqVo;
 import com.citupro.module.menduner.flames.controller.base.respvo.school.SchoolStudentDetailRespVo;
 import com.citupro.module.menduner.flames.dal.mysql.School;
 import org.apache.ibatis.annotations.Param;
@@ -21,5 +22,5 @@ public interface SchoolMapper extends BaseMapper<School> {
 
     List<Map> getSchoolOrganization(SchoolOrganizationReqVo schoolOrganizationReqVo);
 
-    List<SchoolStudentDetailRespVo> schoolStudentDetail(@Param("page") Page page, @Param("schoolId") Long schoolId);
+    List<SchoolStudentDetailRespVo> schoolStudentDetail(@Param("page") Page page,@Param("reqVo") SchoolStudentDetailReqVo reqVo);
 }

+ 4 - 0
menduner/menduner-flames-biz/src/main/java/com/citupro/module/menduner/flames/service/SchoolService.java

@@ -8,6 +8,8 @@ import com.citupro.module.menduner.flames.controller.base.reqvo.school.SchoolStu
 import com.citupro.module.menduner.flames.controller.base.vo.school.SchoolInfoVo;
 import com.citupro.module.menduner.flames.dal.mysql.School;
 
+import javax.servlet.ServletOutputStream;
+
 /**
  * 
  *
@@ -41,4 +43,6 @@ public interface SchoolService extends IService<School> {
     CommonResult updateBasicSchool(School school);
 
     CommonResult schoolStudentDetail(SchoolStudentDetailReqVo reqVo);
+
+    void schoolStudentDetailExport(SchoolStudentDetailReqVo reqVo, ServletOutputStream outputStream);
 }

+ 57 - 2
menduner/menduner-flames-biz/src/main/java/com/citupro/module/menduner/flames/serviceimpl/SchoolServiceImpl.java

@@ -2,6 +2,7 @@ package com.citupro.module.menduner.flames.serviceimpl;
 
 import cn.hutool.core.lang.Snowflake;
 import cn.hutool.core.util.IdUtil;
+import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -9,10 +10,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.api.flames.enterprise.recruit.respvo.AppFlameJobRespVO;
 import com.citupro.module.menduner.flames.controller.base.reqvo.school.SchoolOrganizationReqVo;
 import com.citupro.module.menduner.flames.controller.base.reqvo.school.SchoolStudentDetailReqVo;
 import com.citupro.module.menduner.flames.controller.base.respvo.school.SchoolStudentDetailRespVo;
 import com.citupro.module.menduner.flames.controller.base.vo.school.SchoolInfoVo;
+import com.citu.module.menduner.system.api.flames.enterprise.respvo.AppFlamesEnterpriseDetailRespVO;
+
 import com.citupro.module.menduner.flames.dal.mysql.School;
 import com.citupro.module.menduner.flames.dal.mysql.SchoolDepartment;
 import com.citupro.module.menduner.flames.dal.mysql.SchoolQualificaions;
@@ -21,13 +25,18 @@ import com.citupro.module.menduner.flames.mapper.SchoolMapper;
 import com.citupro.module.menduner.flames.mapper.SchoolQualificaionsMapper;
 import com.citupro.module.menduner.flames.service.SchoolDepartmentService;
 import com.citupro.module.menduner.flames.service.SchoolService;
+import com.citupro.module.menduner.flames.service.proxy.EnterpriseProxyService;
+import com.citupro.module.menduner.flames.service.proxy.EnterpriseRecruitProxyService;
 import com.citupro.module.menduner.flames.util.ListMap;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.ServletOutputStream;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author code generator
@@ -41,6 +50,12 @@ public class SchoolServiceImpl extends ServiceImpl<SchoolMapper, School> impleme
     SchoolQualificaionsMapper schoolQualificaionsMapper;
     SchoolDepartmentService schoolDepartmentService;
 
+
+    EnterpriseProxyService enterpriseProxyService;
+
+    EnterpriseRecruitProxyService enterpriseRecruitProxyService;
+
+
     @Override
     public School getSchoolById(Long schoolId) {
         if (null == schoolId) {
@@ -164,13 +179,43 @@ public class SchoolServiceImpl extends ServiceImpl<SchoolMapper, School> impleme
     }
 
     @Override
-    public CommonResult schoolStudentDetail(SchoolStudentDetailReqVo reqVo) {
+    public CommonResult<Page<SchoolStudentDetailRespVo>> schoolStudentDetail(SchoolStudentDetailReqVo reqVo) {
         Page page = reqVo.getPage();
-        List<SchoolStudentDetailRespVo> datas =  schoolMapper.schoolStudentDetail(page,reqVo.getSchoolId());
+        List<SchoolStudentDetailRespVo> datas =  schoolMapper.schoolStudentDetail(page,reqVo);
+        // 拼接企业信息
+        Set<Long> enterpriseIds = datas.stream().filter(item -> null != item.getEnterpriseId()).map(SchoolStudentDetailRespVo::getEnterpriseId).collect(Collectors.toSet());
+        // 拼接岗位
+        Set<Long> enterpriseRecruitId = datas.stream().filter(item -> null != item.getEnterpriseRecruitId())
+                .map(SchoolStudentDetailRespVo::getEnterpriseRecruitId).collect(Collectors.toSet());
+
+        Map<Long, AppFlameJobRespVO> resp =  enterpriseRecruitProxyService.getEnterpriseRecruitByIds(new ArrayList<>(enterpriseRecruitId));
+        Map<Long, AppFlamesEnterpriseDetailRespVO> enterpriseMap = enterpriseProxyService.getEnterpriseList(new ArrayList<>(enterpriseIds ));
+        for (SchoolStudentDetailRespVo data : datas) {
+            AppFlamesEnterpriseDetailRespVO appEnterpriseDetailRespVO = enterpriseMap.get(data.getEnterpriseId());
+            if(null!=appEnterpriseDetailRespVO) {
+                data.setEnterpeiseName(null==appEnterpriseDetailRespVO.getEnterprise()?"":appEnterpriseDetailRespVO.getEnterprise().getName());
+            }
+            AppFlameJobRespVO appFlameJobRespVO = resp.get(data.getEnterpriseRecruitId());
+            if(null!=appFlameJobRespVO){
+                data.setEnterpriseRecruitJobName(appFlameJobRespVO.getJob().getName());
+                data.setJobDept(appFlameJobRespVO.getJobExtend().getDept());
+            }
+        }
         page.setRecords(datas);
         return CommonResult.success(page);
     }
 
+    @Override
+    public void schoolStudentDetailExport(SchoolStudentDetailReqVo reqVo, ServletOutputStream outputStream) {
+        Page page = reqVo.getPage();
+        page.setSize(1000*1000*1000);
+        List<SchoolStudentDetailRespVo> datas = schoolStudentDetail(reqVo).getData().getRecords();
+
+
+
+        EasyExcel.write(outputStream, SchoolStudentDetailRespVo.class).sheet().doWrite(datas);
+    }
+
     @Override
     public CommonResult<SchoolInfoVo> getSchoolInformation(Long userId) {
         School school = schoolMapper.selectOne(new LambdaQueryWrapper<School>().eq(School::getUserId, userId));
@@ -228,6 +273,16 @@ public class SchoolServiceImpl extends ServiceImpl<SchoolMapper, School> impleme
         return CommonResult.success(schoolInfoVo);
     }
 
+    @Autowired
+    public void setEnterpriseProxyService(EnterpriseProxyService enterpriseProxyService) {
+        this.enterpriseProxyService = enterpriseProxyService;
+    }
+
+    @Autowired
+    public void setEnterpriseRecruitProxyService(EnterpriseRecruitProxyService enterpriseRecruitProxyService) {
+        this.enterpriseRecruitProxyService = enterpriseRecruitProxyService;
+    }
+
     @Autowired
     public void setSchoolQualificaionsMapper(SchoolQualificaionsMapper schoolQualificaionsMapper) {
         this.schoolQualificaionsMapper = schoolQualificaionsMapper;

+ 21 - 18
menduner/menduner-flames-biz/src/main/resources/mapper/SchoolMapper.xml

@@ -23,26 +23,29 @@
     </select>
     <select id="schoolStudentDetail" resultType="com.citupro.module.menduner.flames.controller.base.respvo.school.SchoolStudentDetailRespVo">
         SELECT
-            if(record.`status` = 2,'实习中',if(record.`status` is null ,'未投递','待实习')) as status,
-            student.student_name ,
-            student.student_no,
-            student.school_class_name,
-            student.major_name,
-            enterprise.enterprise_name,
-            record.enterprise_id,
-            record.enterprise_recruit_id,
-            recruit.job_dept,
-            recruit.enterprise_recruit_job_name,
-            student.phone,
-            student.emergency_contact_name,
-            student.emergency_contact_phone
+        if(record.`status` = 2,'实习中',if(record.`status` is null ,'未投递','待实习')) as status,
+        student.student_name ,
+        student.student_no,
+        student.school_class_name,
+        student.major_name,
+        record.enterprise_id,
+        record.enterprise_recruit_id,
+        student.phone,
+        student.emergency_contact_name,
+        student.emergency_contact_phone,
+        student.school_department_name,
+        DATE_FORMAT(record.create_date, '%Y-%m-%d %H:%i:%s')  as  record_date
         FROM
-            student
-                LEFT JOIN practice_submit_record record ON student.student_id = record.student_id
-                LEFT JOIN enterprise on enterprise.enterprise_id = record.enterprise_id
-                LEFT JOIN  enterprise_recruit recruit on recruit.enterprise_recruit_id = record.enterprise_recruit_id
+        student
+        LEFT JOIN practice_submit_record record ON student.student_id = record.student_id
         <where>
-            student.school_id = #{schoolId}
+            <if test="null!=reqVo.schoolId">
+                student.school_id = #{reqVo.schoolId}
+            </if>
+            <if test="null!=reqVo.jobFairId">
+                and   record.job_fair_id = #{reqVo.jobFairId}
+            </if>
+
         </where>
 
     </select>