完成签到导出功能

main
whb 6 months ago
parent 8772162ec8
commit 6829952083

@ -12,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* @author 17803
@ -55,24 +54,27 @@ public class StuExpermentTrainingController {
@AnonymousAccess
@GetMapping("/academicRecordInfo")
@ApiOperation("学习成绩详情")
public ResultEntity academicRecordInfo(String schoolId, String module) {
@ApiOperation("错题排名详情")
public ResultEntity academicRecordInfo(String schoolId, String module, Integer page
, Integer size) {
return service.academicRecordInfo(schoolId, module);
return service.academicRecordInfo(schoolId, module, page, size);
}
@AnonymousAccess
@GetMapping("/trainingTaskDetails")
@ApiOperation("实训任务详情")
public ResultEntity trainingTaskDetails(String userId, String module) {
@ApiOperation("得分排名详情")
public ResultEntity trainingTaskDetails(String userId, String module, Integer page
, Integer size) {
return service.trainingTaskDetails(userId, module);
return service.trainingTaskDetails(userId, module, page, size);
}
}

@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Date;
@ -149,24 +150,25 @@ public class TchSignInfoController {
@ApiOperation("导出")
@PostMapping("/importListInfo")
@GetMapping("/importListInfo")
@AnonymousAccess
public void importListInfo(
@ApiParam("学生ID") @RequestParam(required = false) String studentId,
@ApiParam("签到方式为手动签到传参:manual") @RequestParam(required = false) String type,
@ApiParam("班级ID") @RequestParam(required = false) String classId,
@ApiParam("当前页") @RequestParam(required = true) Integer page,
@ApiParam("每页展示条数") @RequestParam(required = true) Integer size,
@ApiParam("当前页") @RequestParam(required = false) Integer page,
@ApiParam("每页展示条数") @RequestParam(required = false) Integer size,
@ApiParam("签到时间") @RequestParam(required = false) Date signTime,
@ApiParam("签到情况(10签到/20缺勤)") @RequestParam(required = false) Integer signInfo,
@ApiParam("缺勤理由") @RequestParam(required = false) String missInfo,
@ApiParam("签到表ID") @RequestParam(required = true) Long signId,
@ApiParam("班级列表") @RequestParam(required = true) String classIds
HttpServletResponse response,
@ApiParam("班级列表") @RequestParam(required = false) String classIds
) {
//"yyyy-MM-dd HH:mm:ss"
teacherOpenCourseStudentSigninService.importListInfo(studentId, type, classId, page, size, signTime, signInfo, missInfo, signId, classIds);
teacherOpenCourseStudentSigninService.importListInfo(response,studentId, type, classId, page, size, signTime, signInfo, missInfo, signId, classIds);
}

@ -0,0 +1,34 @@
package com.sztzjy.trade.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author 17803
* @date 2024-09-10 15:44
*/
@Data
public class StuImportExcelDTO {
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("学生学号")
private String studentId;
@ApiModelProperty("班级名称")
private String className;
@ApiModelProperty("签到方式 (数据字典 student_signin_type)")
private String teacherOpenCourseStudentSigninLogType;
@ApiModelProperty("备注(缺勤理由)")
private String teacherOpenCourseStudentSigninLogRemark;
@ApiModelProperty("签到日期")
private Date teacherOpenCourseStudentSigninLogAddTime;
}

@ -1,9 +1,11 @@
package com.sztzjy.trade.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sztzjy.trade.enums.StartStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@ -34,6 +36,8 @@ public class TchManualSignDTO {
@ApiModelProperty("场次时间")
@NotNull(message = "场次时间不能为空")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date teacherOpenCourseStudentSigninSettingSessionTime;
@ApiModelProperty("教师ID")

@ -1,7 +1,9 @@
package com.sztzjy.trade.entity.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@ -30,6 +32,8 @@ public class TchManualSignSettingDTO {
private Long schoolClassId;
@ApiModelProperty("签到日期")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date teacherOpenCourseStudentSigninLogAddTime;

@ -35,7 +35,7 @@ public interface StuExpermentTrainingService {
* @return
*/
ResultEntity academicRecordInfo(String schoolId, String module);
ResultEntity academicRecordInfo(String schoolId, String module,Integer page,Integer size);
/**
*
@ -45,5 +45,5 @@ public interface StuExpermentTrainingService {
* @return
*/
ResultEntity trainingTaskDetails(String userId, String module);
ResultEntity trainingTaskDetails(String userId, String module,Integer page,Integer size);
}

@ -7,6 +7,7 @@ import com.sztzjy.trade.entity.dto.TeacherOpenCourseStudentSigninSettingDTO;
import com.sztzjy.trade.util.ResultEntity;
import org.apache.ibatis.annotations.Param;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
/**
@ -67,5 +68,5 @@ public interface TeacherOpenCourseStudentSigninService {
);
//导出
void importListInfo(String studentId, String type, String classId, Integer page, Integer size, Date signTime, Integer signInfo, String missInfo, Long signId, String classIds);
void importListInfo(HttpServletResponse response,String studentId, String type, String classId, Integer page, Integer size, Date signTime, Integer signInfo, String missInfo, Long signId, String classIds);
}

@ -1,6 +1,8 @@
package com.sztzjy.trade.service.impl;
import cn.hutool.core.util.IdUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sztzjy.trade.entity.*;
import com.sztzjy.trade.entity.dto.StuExpermentSubmitDTO;
import com.sztzjy.trade.entity.dto.StuTaskDetailDTO;
@ -15,13 +17,12 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author 17803
@ -208,7 +209,10 @@ public class StuExpermentTrainingServiceImpl implements StuExpermentTrainingServ
* @return
*/
@Override
public ResultEntity academicRecordInfo(String schoolId, String module) {
public ResultEntity academicRecordInfo(String schoolId, String module,Integer page,Integer size) {
PageHelper.startPage(page,size);
StuWrongQuestionRankingExample example = new StuWrongQuestionRankingExample();
example.setOrderByClause("asc task_number");
example.createCriteria().andSchoolIdEqualTo(schoolId).andModuleEqualTo(module);
@ -216,7 +220,10 @@ public class StuExpermentTrainingServiceImpl implements StuExpermentTrainingServ
if (CollectionUtils.isEmpty(stuWrongQuestionRankingList)) {
return new ResultEntity<>(HttpStatus.OK);
} else {
return new ResultEntity<>(HttpStatus.OK, stuWrongQuestionRankingList);
PageInfo<StuWrongQuestionRanking> stuWrongQuestionRankingPageInfo = new PageInfo<>(stuWrongQuestionRankingList);
return new ResultEntity<>(HttpStatus.OK, stuWrongQuestionRankingPageInfo);
}
}
@ -229,7 +236,9 @@ public class StuExpermentTrainingServiceImpl implements StuExpermentTrainingServ
*/
@Override
public ResultEntity trainingTaskDetails(String userId, String module) {
public ResultEntity trainingTaskDetails(String userId, String module,Integer page,Integer size) {
PageHelper.startPage(page,size);
StuExpermentTrainingScoreExample expermentTrainingScoreExample = new StuExpermentTrainingScoreExample();
expermentTrainingScoreExample.createCriteria()
.andUserIdEqualTo(userId).andModuleEqualTo(module);
@ -238,7 +247,8 @@ public class StuExpermentTrainingServiceImpl implements StuExpermentTrainingServ
if (expermentTrainingScoreList.isEmpty()) {
return new ResultEntity<>(HttpStatus.OK);
} else {
return new ResultEntity(HttpStatus.OK, expermentTrainingScoreList);
PageInfo<StuExpermentTrainingScore> stuExpermentTrainingScorePageInfo = new PageInfo<>(expermentTrainingScoreList);
return new ResultEntity(HttpStatus.OK, stuExpermentTrainingScorePageInfo);
}
}
@ -294,6 +304,7 @@ public class StuExpermentTrainingServiceImpl implements StuExpermentTrainingServ
}
}
}

@ -10,6 +10,7 @@ import com.alibaba.excel.EasyExcel;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.nimbusds.jose.util.IntegerUtils;
import com.sztzjy.trade.annotation.AnonymousAccess;
import com.sztzjy.trade.config.Constant;
import com.sztzjy.trade.entity.*;
import com.sztzjy.trade.entity.dto.*;
@ -19,12 +20,17 @@ import com.sztzjy.trade.mapper.TeacherOpenCourseStudentSigninLogMapper;
import com.sztzjy.trade.mapper.TeacherOpenCourseStudentSigninSettingMapper;
import com.sztzjy.trade.service.TeacherOpenCourseStudentSigninService;
import com.sztzjy.trade.util.ResultEntity;
import com.sztzjy.trade.util.excel.FilePortUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -134,7 +140,7 @@ public class TeacherOpenCourseStudentSigninServiceImpl implements TeacherOpenCou
// 定义要随机抽取的数量
int numberOfUsersToSelect = 6;
String[] split = tchManualSignDTO.getClassIds().split(".");
String[] split = tchManualSignDTO.getClassIds().split(",");
for (String classId : split) {
numberOfUsersToSelect += 2;
@ -206,7 +212,7 @@ public class TeacherOpenCourseStudentSigninServiceImpl implements TeacherOpenCou
//批量插入学生信息
System.out.println(tchManualSignDTO.getTchManualSignSettingDTOList().size());
//System.out.println(tchManualSignDTO.getTchManualSignSettingDTOList().size());
tchManualSignDTO.getTchManualSignSettingDTOList().forEach(item -> {
//判断是否缺勤或者签到
@ -451,6 +457,7 @@ public class TeacherOpenCourseStudentSigninServiceImpl implements TeacherOpenCou
.map(Long::valueOf) // 将每个字符串转换为 Long
.collect(Collectors.toList());
criteria.andSchoolClassIdIn(collect);
System.out.println(collect);
}
if (StringUtils.hasText(studentId)) {
@ -479,14 +486,13 @@ public class TeacherOpenCourseStudentSigninServiceImpl implements TeacherOpenCou
criteria.andTeacherOpenCourseStudentSigninLogTypeEqualTo(type);
//往里面加数据teacherOpenCourseStudentSigninLogList
List<TeacherOpenCourseStudentSigninLog> teacherOpenCourseStudentSigninLogList =
teacherOpenCourseStudentSigninLogMapper.selectByExample(openCourseStudentSigninLogExample);
if (teacherOpenCourseStudentSigninLogList.isEmpty()) {
return new ResultEntity<>(HttpStatus.OK);
}
//查询班级所有用户
//查询班级所有用户
String[] split = classIds.split(",");
@ -496,7 +502,6 @@ public class TeacherOpenCourseStudentSigninServiceImpl implements TeacherOpenCou
if (stuUserList.isEmpty()) {
return new ResultEntity<>(HttpStatus.OK);
} else {
// for (StuUser stuUser : stuUserList) {
// for (TeacherOpenCourseStudentSigninLog studentSigninLog : teacherOpenCourseStudentSigninLogList) {
// if (stuUser.getStudentId().equals(studentSigninLog.getStudentId())) {
@ -515,7 +520,6 @@ public class TeacherOpenCourseStudentSigninServiceImpl implements TeacherOpenCou
//
//
// }
for (StuUser stuUser : stuUserList) {
boolean found = false;
for (TeacherOpenCourseStudentSigninLog studentSigninLog : teacherOpenCourseStudentSigninLogList) {
@ -564,9 +568,165 @@ public class TeacherOpenCourseStudentSigninServiceImpl implements TeacherOpenCou
//导出
@Override
public void importListInfo(String studentId, String type, String classId, Integer page, Integer size, Date signTime, Integer signInfo, String missInfo, Long signId, String classIds) {
public void importListInfo(HttpServletResponse response, String studentId, String type, String classId, Integer page, Integer size, Date signTime, Integer signInfo, String missInfo, Long signId, String classIds) {
//导出的表名
String title = IdUtil.simpleUUID();
//表中第一行表头字段
String[] headers = null;
List<String> listColumn = null;
headers = new String[]{"姓名", "学号", "班级", "签到情况", "缺勤理由", "签到日期"};
listColumn = Arrays.asList("name", "studentId", "className", "teacherOpenCourseStudentSigninLogType", "teacherOpenCourseStudentSigninLogRemark", "teacherOpenCourseStudentSigninLogAddTime");
//实际数据结果集
List<StuImportExcelDTO> resultListInfo = resultList(studentId, type, classId, page, size, signTime, signInfo, missInfo, signId, classIds);
//具体需要写入excel需要哪些字段这些字段取自UserReward类也就是上面的实际数据结果集的泛型
try {
FilePortUtil.exportExcel(response, title, headers, resultListInfo, listColumn);
} catch (Exception e) {
e.printStackTrace();
}
}
//实际数据结果集
private List<StuImportExcelDTO> resultList(String studentId, String type, String classId, Integer page, Integer size, Date signTime,
Integer signInfo, String missInfo, Long signId, String classIds) {
List<StuImportExcelDTO> importExcelDTOList = new ArrayList<>();
//开始时间,结束时间,签到情况,缺勤理由 {班级ID签到ID默认查询} 根据签到方式展示老师手动签到学生信息,其他学生默认全部签到
TeacherOpenCourseStudentSigninLogExample openCourseStudentSigninLogExample = new TeacherOpenCourseStudentSigninLogExample();
TeacherOpenCourseStudentSigninLogExample.Criteria criteria = openCourseStudentSigninLogExample.createCriteria();
if (StringUtils.hasText(classIds)) {
String[] split = classIds.split(",");
List<Long> collect = Arrays.stream(split)
.map(Long::valueOf) // 将每个字符串转换为 Long
.collect(Collectors.toList());
criteria.andSchoolClassIdIn(collect);
}
if (StringUtils.hasText(studentId)) {
criteria.andStudentIdEqualTo(studentId);
}
if (signTime != null) {
criteria.andTeacherOpenCourseStudentSigninSettingSessionTimeBetween(signTime, signTime);
}
if (signInfo != null) {
criteria.andTeacherOpenCourseStudentSigninLogTagEqualTo(signInfo);
}
if (StringUtils.hasText(missInfo)) {
criteria.andTeacherOpenCourseStudentSigninLogRemarkEqualTo(missInfo);
}
criteria.andTeacherOpenCourseStudentSigninSettingIdEqualTo(signId);
//查询班级所有用户
String[] split = classIds.split(",");
StuUserExample userExample = new StuUserExample();
userExample.createCriteria().andClassIdIn(Arrays.stream(split).collect(Collectors.toList()));
List<StuUser> stuUserList = stuUserMapper.selectByExample(userExample);
if (stuUserList.isEmpty()) {
return null;
}
//手动签到
if (StringUtils.hasText(type)) {
if (Constant.MANUAL.equals(type)) {
//只能查出来老师手动签到的用户数据 未抽中用户默认已经签到并且要展示出来
criteria.andTeacherOpenCourseStudentSigninLogTypeEqualTo(type);
//往里面加数据teacherOpenCourseStudentSigninLogList
List<TeacherOpenCourseStudentSigninLog> teacherOpenCourseStudentSigninLogList =
teacherOpenCourseStudentSigninLogMapper.selectByExample(openCourseStudentSigninLogExample);
if (teacherOpenCourseStudentSigninLogList.isEmpty()) {
return null;
} else {
// for (StuUser stuUser : stuUserList) {
// for (TeacherOpenCourseStudentSigninLog studentSigninLog : teacherOpenCourseStudentSigninLogList) {
// if (stuUser.getStudentId().equals(studentSigninLog.getStudentId())) {
// continue;
// } else {
// //加入往里面加数据teacherOpenCourseStudentSigninLogList
// TeacherOpenCourseStudentSigninLog teacherOpenCourseStudentSigninLog = TeacherOpenCourseStudentSigninLog.builder()
// .studentId(stuUser.getStudentId())
// .teacherOpenCourseStudentSigninLogAddTime(teacherOpenCourseStudentSigninLogList.get(0).getTeacherOpenCourseStudentSigninLogAddTime())
// .teacherOpenCourseStudentSigninLogTag(10)
// .schoolClassId(Long.parseLong(stuUser.getClassId())).build();
// teacherOpenCourseStudentSigninLogList.add(teacherOpenCourseStudentSigninLog);
// }
//
// }
//
//
// }
for (StuUser stuUser : stuUserList) {
StuImportExcelDTO stuImportExcelDTO = new StuImportExcelDTO();
boolean found = false;
for (TeacherOpenCourseStudentSigninLog studentSigninLog : teacherOpenCourseStudentSigninLogList) {
if (stuUser.getStudentId().equals(studentSigninLog.getStudentId())) {
stuImportExcelDTO.setStudentId(stuUser.getStudentId());
stuImportExcelDTO.setName(stuUser.getName());
stuImportExcelDTO.setClassName(stuUser.getClassName());
stuImportExcelDTO.setTeacherOpenCourseStudentSigninLogAddTime(studentSigninLog.getTeacherOpenCourseStudentSigninLogAddTime());
stuImportExcelDTO.setTeacherOpenCourseStudentSigninLogType(studentSigninLog.getTeacherOpenCourseStudentSigninLogType() == "manual" ? "手动签到" : studentSigninLog.getTeacherOpenCourseStudentSigninLogType());
stuImportExcelDTO.setTeacherOpenCourseStudentSigninLogRemark(studentSigninLog.getTeacherOpenCourseStudentSigninLogRemark());
importExcelDTOList.add(stuImportExcelDTO);
found = true;
break; // 找到匹配项,跳出内层循环
}
}
if (!found) {
// 如果没有找到匹配项,加入新数据到 teacherOpenCourseStudentSigninLogList
stuImportExcelDTO.setStudentId(stuUser.getStudentId());
stuImportExcelDTO.setName(stuUser.getName());
stuImportExcelDTO.setClassName(stuUser.getClassName());
stuImportExcelDTO.setTeacherOpenCourseStudentSigninLogAddTime(teacherOpenCourseStudentSigninLogList.get(0).getTeacherOpenCourseStudentSigninLogAddTime());
stuImportExcelDTO.setTeacherOpenCourseStudentSigninLogType(teacherOpenCourseStudentSigninLogList.get(0).getTeacherOpenCourseStudentSigninLogType() == "manual" ? "手动签到" : teacherOpenCourseStudentSigninLogList.get(0).getTeacherOpenCourseStudentSigninLogType());
importExcelDTOList.add(stuImportExcelDTO);
}
}
return importExcelDTOList;
}
}
}
List<TeacherOpenCourseStudentSigninLog> teacherOpenCourseStudentSigninLogList =
teacherOpenCourseStudentSigninLogMapper.selectByExample(openCourseStudentSigninLogExample);
for (StuUser stuUser : stuUserList) {
StuImportExcelDTO stuImportExcelDTO = new StuImportExcelDTO();
for (TeacherOpenCourseStudentSigninLog studentSigninLog : teacherOpenCourseStudentSigninLogList) {
if (stuUser.getStudentId().equals(studentSigninLog.getStudentId()))
{
stuImportExcelDTO.setStudentId(stuUser.getStudentId());
stuImportExcelDTO.setName(stuUser.getName());
stuImportExcelDTO.setClassName(stuUser.getClassName());
stuImportExcelDTO.setTeacherOpenCourseStudentSigninLogAddTime(studentSigninLog.getTeacherOpenCourseStudentSigninLogAddTime());
stuImportExcelDTO.setTeacherOpenCourseStudentSigninLogType(studentSigninLog.getTeacherOpenCourseStudentSigninLogType() == "manual" ? "手动签到" : studentSigninLog.getTeacherOpenCourseStudentSigninLogType());
stuImportExcelDTO.setTeacherOpenCourseStudentSigninLogRemark(studentSigninLog.getTeacherOpenCourseStudentSigninLogRemark());
importExcelDTOList.add(stuImportExcelDTO);
}
}
}
return importExcelDTOList;
}
}

Loading…
Cancel
Save