mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-25 02:32:57 +08:00
fix: 【FCJDFDXTXS-199】资源学习情况的作业、考试的导出查询、拼excel数据逻辑修正
This commit is contained in:
@@ -1463,7 +1463,8 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
// 查询特定考试信息(这里同一个学员,同一次考试可以导出多次考试信息)
|
||||
List<StudyExam> studyExams = studyExamService.getByCourseIdAndContentId(courseId, contentId);
|
||||
// 通过studyExams中的人员id集合(去重),调用用户中心接口获取人员信息,填充部门字段
|
||||
Set<String> userIds = studyExams.stream().map(StudyExam::getStudentId).filter(Objects::nonNull).collect(Collectors.toSet());
|
||||
List<StudyCourseItem> studyCourseItems = studyService.itemList(courseId, contentId, null, null);
|
||||
Set<String> userIds = studyCourseItems.stream().map(StudyCourseItem::getAid).filter(Objects::nonNull).collect(Collectors.toSet());
|
||||
List<UserSimpleVo> userList = new ArrayList<>();
|
||||
if (!userIds.isEmpty()) {
|
||||
// 调用用户中心接口
|
||||
@@ -1494,17 +1495,17 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
}
|
||||
// 将考试信息与用户信息拼接为map
|
||||
String finalContentName = displayName;
|
||||
List<Map<String, Object>> dataList = studyExams.stream().map(exam -> {
|
||||
List<Map<String, Object>> dataList = studyCourseItems.stream().map(item -> {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
// 拼接基本信息
|
||||
map.put("课程名称", courseName);
|
||||
map.put("资源名称", finalContentName);
|
||||
map.put("姓名", exam.getStudentName());
|
||||
map.put("姓名", item.getAname());
|
||||
// 工号和部门信息需要从用户信息中获取
|
||||
String userNo = "";
|
||||
String orgInfo = "";
|
||||
for (UserSimpleVo user : userList) {
|
||||
if (exam.getStudentId().equals(user.getAid())) {
|
||||
if (item.getAid().equals(user.getAid())) {
|
||||
userNo = user.getCode();
|
||||
orgInfo = user.getOrgInfo();
|
||||
break;
|
||||
@@ -1512,17 +1513,28 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
}
|
||||
map.put("工号", userNo);
|
||||
map.put("部门", orgInfo);
|
||||
// 考试状态需要转换(根据成绩和及格线判断)
|
||||
String examStatus = "";
|
||||
if (exam.getScore() != null && exam.getPassLine() != null) {
|
||||
examStatus = exam.getScore() >= exam.getPassLine() ? "已通过" : "未通过";
|
||||
// 获取考试数据
|
||||
Optional<StudyExam> studyExamOpt = studyExams.stream()
|
||||
.filter(exam -> StringUtils.equals(item.getAid(), exam.getStudentId()))
|
||||
.findFirst();
|
||||
if (studyExamOpt.isPresent()) {
|
||||
StudyExam exam = studyExamOpt.get();
|
||||
// 考试状态需要转换(根据成绩和及格线判断)
|
||||
String examStatus = "";
|
||||
if (exam.getScore() != null && exam.getPassLine() != null) {
|
||||
examStatus = exam.getScore() >= exam.getPassLine() ? "已通过" : "未通过";
|
||||
}
|
||||
map.put("考试状态", examStatus);
|
||||
// 考试成绩
|
||||
// 25.12.16修改:考试成绩修改为整数
|
||||
map.put("考试成绩", exam.getScore() != null ? Math.round(exam.getScore()) : null);
|
||||
// 完成时间
|
||||
map.put("完成时间", exam.getEndTime());
|
||||
} else {
|
||||
map.put("考试状态", "未通过");
|
||||
map.put("考试成绩", "");
|
||||
map.put("完成时间", "");
|
||||
}
|
||||
map.put("考试状态", examStatus);
|
||||
// 考试成绩
|
||||
// 25.12.16修改:考试成绩修改为整数
|
||||
map.put("考试成绩", exam.getScore() != null ? Math.round(exam.getScore()) : null);
|
||||
// 完成时间
|
||||
map.put("完成时间", exam.getEndTime());
|
||||
return map;
|
||||
}).collect(Collectors.toList());
|
||||
// 4.拼接消息类型和响应头信息
|
||||
@@ -1610,7 +1622,8 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
// 查询特定作业信息
|
||||
List<StudyHomeWork> studyHomeWorks = studyHomeWorkService.getByCourseIdAndContentId(courseId, contentId);
|
||||
// 查询资源学习item数据(联表获取作业完成状态用)
|
||||
List<StudyCourseItem> studyCourseItems = studyService.getList(courseId, contentId, null, null);
|
||||
// List<StudyCourseItem> studyCourseItems = studyService.getList(courseId, contentId, null, null);
|
||||
List<StudyCourseItem> studyCourseItems = studyService.itemList(courseId, contentId, null, null);
|
||||
if (studyHomeWorks != null && !studyHomeWorks.isEmpty()) {
|
||||
for (StudyHomeWork studyHomeWork : studyHomeWorks) {
|
||||
// 根据studyCourseItem表的id连接studyHomework表的studyItemId获取作业完成状态
|
||||
@@ -1618,7 +1631,7 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
}
|
||||
}
|
||||
// 通过studyHomeWorks中的人员id集合(去重),调用用户中心接口获取人员信息,填充部门字段
|
||||
Set<String> userIds = studyHomeWorks.stream().map(StudyHomeWork::getStudentId).filter(Objects::nonNull).collect(Collectors.toSet());
|
||||
Set<String> userIds = studyCourseItems.stream().map(StudyCourseItem::getAid).filter(Objects::nonNull).collect(Collectors.toSet());
|
||||
List<UserSimpleVo> userList = new ArrayList<>();
|
||||
if (!userIds.isEmpty()) {
|
||||
// 调用用户中心接口
|
||||
@@ -1649,17 +1662,43 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
}
|
||||
// 3.将作业信息与用户信息拼接为map
|
||||
String finalContentName = displayName;
|
||||
List<Map<String, Object>> dataList = studyHomeWorks.stream().map(hw -> {
|
||||
// List<Map<String, Object>> dataList = studyHomeWorks.stream().map(hw -> {
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
// // 拼接基本信息
|
||||
// map.put("课程名称", courseName);
|
||||
// map.put("资源名称", finalContentName);
|
||||
// map.put("姓名", hw.getStudentName());
|
||||
// // 工号和部门信息需要从用户信息中获取
|
||||
// String userNo = "";
|
||||
// String orgInfo = "";
|
||||
// for (UserSimpleVo user : userList) {
|
||||
// if (hw.getStudentId().equals(user.getAid())) {
|
||||
// userNo = user.getCode();
|
||||
// orgInfo = user.getOrgInfo();
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// map.put("工号", userNo);
|
||||
// map.put("部门", orgInfo);
|
||||
// // 作业状态(如果有成绩则为已完成,否则为未完成)
|
||||
// String hwStatus = (hw.getStatus() == 9) ? "已完成" : "未完成";
|
||||
// map.put("完成状态", hwStatus);
|
||||
// // 作业内容
|
||||
// // 25.12.16确认:经过生产数据确认,作业内容存储在hwAnswer字段
|
||||
// map.put("作业内容", hw.getHwAnswer());
|
||||
// return map;
|
||||
// }).collect(Collectors.toList());
|
||||
List<Map<String, Object>> dataList = studyCourseItems.stream().map(item -> {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
// 拼接基本信息
|
||||
map.put("课程名称", courseName);
|
||||
map.put("资源名称", finalContentName);
|
||||
map.put("姓名", hw.getStudentName());
|
||||
map.put("姓名", item.getAname());
|
||||
// 工号和部门信息需要从用户信息中获取
|
||||
String userNo = "";
|
||||
String orgInfo = "";
|
||||
for (UserSimpleVo user : userList) {
|
||||
if (hw.getStudentId().equals(user.getAid())) {
|
||||
if (item.getAid().equals(user.getAid())) {
|
||||
userNo = user.getCode();
|
||||
orgInfo = user.getOrgInfo();
|
||||
break;
|
||||
@@ -1668,11 +1707,16 @@ public class StudyCourseApi extends ApiBaseController{
|
||||
map.put("工号", userNo);
|
||||
map.put("部门", orgInfo);
|
||||
// 作业状态(如果有成绩则为已完成,否则为未完成)
|
||||
String hwStatus = (hw.getStatus() == 9) ? "已完成" : "未完成";
|
||||
String hwStatus = (item.getStatus() == 9) ? "已完成" : "未完成";
|
||||
map.put("完成状态", hwStatus);
|
||||
// 作业内容
|
||||
// 25.12.16确认:经过生产数据确认,作业内容存储在hwAnswer字段
|
||||
map.put("作业内容", hw.getHwAnswer());
|
||||
// 从studyHomework中取
|
||||
map.put("作业内容", "");
|
||||
studyHomeWorks.stream()
|
||||
.filter(hw -> item.getId().equals(hw.getStudyItemId()))
|
||||
.findFirst()
|
||||
.ifPresent(hw -> map.put("作业内容", hw.getHwAnswer()));
|
||||
return map;
|
||||
}).collect(Collectors.toList());
|
||||
// 先将Excel数据写入临时文件
|
||||
|
||||
@@ -114,6 +114,16 @@ public interface IStudyService {
|
||||
*/
|
||||
PageList<StudyCourseItem> itemPage(int pageIndex, int pageSize, String contentId, String courseId, Integer status, List<String> userIdList);
|
||||
|
||||
/**
|
||||
* 获取资源学习情况列表
|
||||
* @param contentId
|
||||
* @param courseId
|
||||
* @param status
|
||||
* @param userIdList
|
||||
* @return
|
||||
*/
|
||||
List<StudyCourseItem> itemList(String contentId, String courseId, Integer status, List<String> userIdList);
|
||||
|
||||
/**
|
||||
* 为courseContents列表设置展示名称(章名+节名 或 课程名+节名)
|
||||
* 25.12.15新增
|
||||
|
||||
@@ -393,6 +393,23 @@ public class StudyServiceImpl implements IStudyService{
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StudyCourseItem> itemList(String contentId, String courseId, Integer status, List<String> userIdList) {
|
||||
List<StudyCourseItem> list = scItemDao.queryList(courseId, contentId, userIdList, status, false, 0, 0);
|
||||
List<String> contentIds = list.stream().map(StudyCourseItem::getContentId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
|
||||
if (!contentIds.isEmpty()) {
|
||||
List<CourseContent> contentList = courseContentService.getByIds(contentIds);
|
||||
if (contentList != null) {
|
||||
setContentDisplayName(contentList);
|
||||
// 根据contentId将展示名称映射到item
|
||||
for (StudyCourseItem studyCourseItem : list) {
|
||||
studyCourseItem.setDisplayName(contentList.stream().filter(content -> content.getId().equals(studyCourseItem.getContentId())).findFirst().map(CourseContent::getDisplayName).orElse(null));
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 为 CourseContent 列表设置展示名称(章名+节名 或 课程名+节名)
|
||||
* 基于 25.12.15 的展示逻辑:优先使用 章名+节名,章不存在则退化为 课程名+节名
|
||||
|
||||
Reference in New Issue
Block a user