学生端导出练习,考核增加姓名,学号

hehai
jiakun.lin 4 years ago
parent 6011a9ca77
commit b534515490
  1. 4
      src/main/java/com/msdw/tms/common/utils/Constant.java
  2. 70
      src/main/java/com/msdw/tms/common/utils/poi/ExcelExportUtil.java
  3. 18
      src/main/java/com/msdw/tms/entity/request/ExperimentProjectRecordImportRequest.java
  4. 4
      src/main/java/com/msdw/tms/entity/vo/ProjectRecordExportVo.java
  5. 17
      src/main/java/com/msdw/tms/service/impl/ProjectRecordServiceImpl.java
  6. BIN
      src/main/resources/excel-template/练习记录模板.xlsx
  7. BIN
      src/main/resources/excel-template/考核记录模板.xlsx
  8. 3
      src/main/resources/mapper/tms/ProjectRecordDao.xml

@ -54,6 +54,10 @@ public class Constant {
* 通过excel批量导入试题数据时起始行
*/
public static final int ROW_INDEX = 2;
/**
* 通过excel批量导入试题数据时起始行(专门用于练习考核报告的
*/
public static final int ROW_INDEX_REPORT = 3;
/**
* 通过excel批量导入试题数据时起始行
*/

@ -1,5 +1,6 @@
package com.msdw.tms.common.utils.poi;
import com.msdw.tms.entity.vo.StudentVo;
import lombok.Data;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@ -8,6 +9,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
@ -75,6 +77,74 @@ public class ExcelExportUtil<T> {
workbook.write(response.getOutputStream());
}
/**
* 基于注解导出(新增需求拓展
* 参数
* response
* InputStream:模板的输入流
* objs数据
* obj:拓展对象
* fileName生成的文件名
*/
public void exportExpand(HttpServletResponse response, InputStream is, List<T> objs,Object obj, String fileName) throws Exception {
//1.根据模板创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook(is);
//2.读取工作表
Sheet sheet = workbook.getSheetAt(0);
Row row1 = sheet.getRow(styleIndex);
//3.提取公共的样式
CellStyle[] styles = getTemplateStyles(row1);
//导出学生姓名,学号
Sheet sheet1 = this.exportStudentInfo(sheet,(StudentVo)obj);
//4.根据数据创建每一行和每一个单元格的数据2
AtomicInteger datasAi = new AtomicInteger(rowIndex); //数字
for (T t : objs) {
//datasAi.getAndIncrement() :获取数字,并++ i++
Row row = sheet1.createRow(datasAi.getAndIncrement());
for (int i = 0; i < styles.length; i++) {
Cell cell = row.createCell(i);
cell.setCellStyle(styles[i]);
for (Field field : fields) {
if (field.isAnnotationPresent(ExcelAttribute.class)) {
field.setAccessible(true);
ExcelAttribute ea = field.getAnnotation(ExcelAttribute.class);
if (i == ea.sort()) {
if (field.get(t) != null) {
cell.setCellValue(field.get(t).toString());
}
}
}
}
}
}
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setContentType("application/octet-stream");
response.setHeader("content-disposition", "attachment;filename=" + new String(fileName.getBytes("ISO8859-1")));
response.setHeader("filename", fileName);
workbook.write(response.getOutputStream());
}
/**
* 添加姓名学号的导出
* @param sheet
* @return
*/
private Sheet exportStudentInfo(Sheet sheet,StudentVo studentVo){
Integer ROW_INDEX = 1;
Integer CELL_INDEX_NAME = 1;
Integer CELL_INDEX_WORKNUMBER = 3;
sheet.getRow(ROW_INDEX).getCell(CELL_INDEX_NAME).setCellValue(studentVo.getUserName());
sheet.getRow(ROW_INDEX).getCell(CELL_INDEX_WORKNUMBER).setCellValue(studentVo.getWorkNumber());
return sheet;
}
CellStyle[] getTemplateStyles(Row row) {
CellStyle[] styles = new CellStyle[row.getLastCellNum()];
for (int i = 0; i < row.getLastCellNum(); i++) {

@ -8,36 +8,42 @@ import lombok.Data;
*/
@Data
public class ExperimentProjectRecordImportRequest {
/**
* 实验班级名称
* 实验名称(即考核名称
*/
@ExcelAttribute(sort = 0)
private String experimentalName;
/**
* 实验班级名称
*/
@ExcelAttribute(sort = 1)
private String experimentalClassName;
/**
* 实验项目名称
*/
@ExcelAttribute(sort = 1)
@ExcelAttribute(sort = 2)
private String projectName;
/**
* 得分
*/
@ExcelAttribute(sort = 2)
@ExcelAttribute(sort = 3)
private Integer score;
/**
* 耗时
*/
@ExcelAttribute(sort = 3)
@ExcelAttribute(sort = 4)
private Integer timeSum;
/**
* 起始时间
*/
@ExcelAttribute(sort = 4)
@ExcelAttribute(sort = 5)
private String startTime;
/**
* 结束时间
*/
@ExcelAttribute(sort = 5)
@ExcelAttribute(sort = 6)
private String endTime;
}

@ -88,4 +88,8 @@ public class ProjectRecordExportVo extends ProjectRecordEntity implements Serial
* 实验班级名称
*/
private String experimental_class_name;
/**
* 实验名称(即考核名称
*/
private String experimentalName;
}

@ -8,6 +8,7 @@ import com.msdw.tms.common.utils.PageUtils;
import com.msdw.tms.common.utils.R;
import com.msdw.tms.common.utils.poi.ExcelExportUtil;
import com.msdw.tms.dao.ProjectRecordDao;
import com.msdw.tms.dao.StudentDao;
import com.msdw.tms.entity.ExperimentalReportEntity;
import com.msdw.tms.entity.ProjectRecordEntity;
import com.msdw.tms.entity.request.ExperimentProjectRecordImportRequest;
@ -15,6 +16,7 @@ import com.msdw.tms.entity.request.ProjectRecordImportRequest;
import com.msdw.tms.entity.resp.GetByUserRecordResp;
import com.msdw.tms.entity.vo.ProjectRecordExportVo;
import com.msdw.tms.entity.vo.ProjectRecordVo;
import com.msdw.tms.entity.vo.StudentVo;
import com.msdw.tms.service.ProjectRecordService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils;
@ -38,6 +40,9 @@ public class ProjectRecordServiceImpl extends ServiceImpl<ProjectRecordDao, Proj
@Autowired
private ProjectRecordDao baseMapper;
@Autowired
private StudentDao studentDao;
@Override
public PageUtils getByKDUserRecord(Integer page, Integer size, Integer userId, Integer projectPermissions, Integer systemId) {
@ -168,6 +173,8 @@ public class ProjectRecordServiceImpl extends ServiceImpl<ProjectRecordDao, Proj
List<ProjectRecordExportVo> projectRecordVos = this.baseMapper.getByRecordImport(projectRecord);
// List<ProjectRecordExportVo> projectRecordVos = this.baseMapper.getByUserRecordImport(projectRecord);
StudentVo studentVo = studentDao.queryStudentDetails(userId);
List<ProjectRecordImportRequest> importRequests = projectRecordVos.stream().map(project -> {
ProjectRecordImportRequest request = new ProjectRecordImportRequest();
BeanUtils.copyProperties(project, request);
@ -183,8 +190,8 @@ public class ProjectRecordServiceImpl extends ServiceImpl<ProjectRecordDao, Proj
//3、通过工具类下载文件
new ExcelExportUtil(ProjectRecordImportRequest.class, Constant.ROW_INDEX, Constant.STYLE_INDEX).
export(response, inputStream, importRequests, "练习记录.xlsx");
new ExcelExportUtil(ProjectRecordImportRequest.class, Constant.ROW_INDEX_REPORT, Constant.STYLE_INDEX).
exportExpand(response, inputStream, importRequests, studentVo,"练习记录.xlsx");
// new ExcelExportUtil(ProjectRecordImportRequest.class, Constant.ROW_INDEX, Constant.STYLE_INDEX).
// export(response, fis, importRequests, "实验报告导出.xlsx");
}
@ -199,6 +206,8 @@ public class ProjectRecordServiceImpl extends ServiceImpl<ProjectRecordDao, Proj
List<ProjectRecordExportVo> projectRecordVos = this.baseMapper.getByUserRecordImport(projectRecord);
StudentVo studentVo = studentDao.queryStudentDetails(userId);
List<ExperimentProjectRecordImportRequest> importRequests = projectRecordVos.stream().map(project -> {
ExperimentProjectRecordImportRequest request = new ExperimentProjectRecordImportRequest();
BeanUtils.copyProperties(project, request);
@ -211,8 +220,8 @@ public class ProjectRecordServiceImpl extends ServiceImpl<ProjectRecordDao, Proj
//3、通过工具类下载文件
new ExcelExportUtil(ExperimentProjectRecordImportRequest.class, Constant.ROW_INDEX, Constant.STYLE_INDEX).
export(response, inputStream, importRequests, "考核记录.xlsx");
new ExcelExportUtil(ExperimentProjectRecordImportRequest.class, Constant.ROW_INDEX_REPORT, Constant.STYLE_INDEX).
exportExpand(response, inputStream, importRequests,studentVo, "考核记录.xlsx");
}
@Override

@ -106,7 +106,8 @@
startingTime as startTime,
endTime,
recordState,
tet.experimental_class_name
tet.experimental_class_name,
tet.experimental_name
FROM tms_project_record tpr
LEFT JOIN hr_project_management tp ON tpr.projectId = tp.projectId
LEFT JOIN tms_experimental_teaching tet ON tpr.projectId = tet.project_id

Loading…
Cancel
Save