|
|
@ -38,6 +38,7 @@ import javax.servlet.ServletOutputStream; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import java.io.File; |
|
|
|
import java.io.File; |
|
|
|
import java.io.FileInputStream; |
|
|
|
import java.io.FileInputStream; |
|
|
|
|
|
|
|
import java.io.FileNotFoundException; |
|
|
|
import java.io.FileOutputStream; |
|
|
|
import java.io.FileOutputStream; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.BigInteger; |
|
|
|
import java.math.BigInteger; |
|
|
@ -76,6 +77,8 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl |
|
|
|
UmsAdminRoleRelationMapper umsAdminRoleRelationMapper; |
|
|
|
UmsAdminRoleRelationMapper umsAdminRoleRelationMapper; |
|
|
|
@Autowired |
|
|
|
@Autowired |
|
|
|
StudentCoursesMapper studentCoursesMapper; |
|
|
|
StudentCoursesMapper studentCoursesMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
|
|
|
ObjectiveContentKnowMapper objectiveContentKnowMapper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
@ -212,8 +215,13 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl |
|
|
|
if (umsAdminTea == null) { |
|
|
|
if (umsAdminTea == null) { |
|
|
|
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
|
|
|
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// System.out.println(umsAdminTea);
|
|
|
|
UmsTeacher umsTeacher = umsTeacherMapper.selectOne(new LambdaQueryWrapper<UmsTeacher>() |
|
|
|
UmsTeacher umsTeacher = umsTeacherMapper.selectOne(new LambdaQueryWrapper<UmsTeacher>() |
|
|
|
.eq(UmsTeacher::getUserId, umsAdminTea.getId())); |
|
|
|
.eq(UmsTeacher::getUserId, umsAdminTea.getId())); |
|
|
|
|
|
|
|
System.out.println(umsTeacher); |
|
|
|
|
|
|
|
if (umsTeacher == null){ |
|
|
|
|
|
|
|
throw new BusinessException(ErrorCode.PARAMS_USER_NOTEXISTS); |
|
|
|
|
|
|
|
} |
|
|
|
teacherNameList.add(umsTeacher.getName()); |
|
|
|
teacherNameList.add(umsTeacher.getName()); |
|
|
|
} |
|
|
|
} |
|
|
|
coursesVO.setTeacher(String.join(",", teacherNameList)); |
|
|
|
coursesVO.setTeacher(String.join(",", teacherNameList)); |
|
|
@ -234,21 +242,28 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl |
|
|
|
String objectivesId = courseObjectives.getId(); |
|
|
|
String objectivesId = courseObjectives.getId(); |
|
|
|
List<CourseObjectivesTreeVO> courseObjectivesTreeVOList = courseObjectivesMapper.selectTreeNodes(objectivesId); |
|
|
|
List<CourseObjectivesTreeVO> courseObjectivesTreeVOList = courseObjectivesMapper.selectTreeNodes(objectivesId); |
|
|
|
int contents = 0; |
|
|
|
int contents = 0; |
|
|
|
|
|
|
|
int knows = 0; |
|
|
|
List<String> objectiveIds = new ArrayList<>(); |
|
|
|
List<String> objectiveIds = new ArrayList<>(); |
|
|
|
for (CourseObjectivesTreeVO courseObjectivesTreeVO : courseObjectivesTreeVOList) { |
|
|
|
for (CourseObjectivesTreeVO courseObjectivesTreeVO : courseObjectivesTreeVOList) { |
|
|
|
String objectiveId = courseObjectivesTreeVO.getId(); |
|
|
|
String objectiveId = courseObjectivesTreeVO.getId(); |
|
|
|
objectiveIds.add(objectiveId); |
|
|
|
objectiveIds.add(objectiveId); |
|
|
|
Long content = objectiveContentsMapper |
|
|
|
Long content = objectiveContentsMapper.selectCount(new LambdaQueryWrapper<ObjectiveContents>() |
|
|
|
.selectCount(new LambdaQueryWrapper<ObjectiveContents>().eq(ObjectiveContents::getObjectiveId, objectiveId)); |
|
|
|
.eq(ObjectiveContents::getObjectiveId, objectiveId)); |
|
|
|
contents+=content; |
|
|
|
contents+=content; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Long know = objectiveContentKnowMapper.selectCount(new LambdaQueryWrapper<ObjectiveContentKnow>() |
|
|
|
|
|
|
|
.eq(ObjectiveContentKnow::getObjectiveOrContent, objectiveId)); |
|
|
|
|
|
|
|
knows+=know; |
|
|
|
} |
|
|
|
} |
|
|
|
if (contents==0){ |
|
|
|
if(contents > 0){ |
|
|
|
coursesMapper.deleteById(id); |
|
|
|
|
|
|
|
courseObjectivesMapper.deleteBatchIds(objectiveIds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else{ |
|
|
|
|
|
|
|
throw new BusinessException(ErrorCode.CONTENT_EXISTS, "该课程的目标下面还有内容,请把相关内容清空后再来删除课程"); |
|
|
|
throw new BusinessException(ErrorCode.CONTENT_EXISTS, "该课程的目标下面还有内容,请把相关内容清空后再来删除课程"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (knows > 0){ |
|
|
|
|
|
|
|
throw new BusinessException(ErrorCode.KNOWS_EXISTS,"该课程的目标下面还有关联的知识点,请把相关知识点清空后再来删除课程"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
courseObjectivesMapper.deleteBatchIds(objectiveIds); |
|
|
|
|
|
|
|
coursesMapper.deleteById(id); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
@ -329,8 +344,15 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl |
|
|
|
File rootPath = new File(ResourceUtils.getURL("classpath:").getPath()); //SpringBoot项目获取根目录的方式
|
|
|
|
File rootPath = new File(ResourceUtils.getURL("classpath:").getPath()); //SpringBoot项目获取根目录的方式
|
|
|
|
File templatePath = new File(rootPath.getAbsolutePath(),"/templates/courses.docx");//------------------需要模板的地址
|
|
|
|
File templatePath = new File(rootPath.getAbsolutePath(),"/templates/courses.docx");//------------------需要模板的地址
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FileInputStream template1; |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
template1 = new FileInputStream(templatePath); |
|
|
|
|
|
|
|
} catch (FileNotFoundException e) { |
|
|
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
|
|
throw new Exception("模板文件未找到"); |
|
|
|
|
|
|
|
} |
|
|
|
// 加载Word模板------------------路径换成服务器里文件的绝对路径(要是相对路径也行也OK)
|
|
|
|
// 加载Word模板------------------路径换成服务器里文件的绝对路径(要是相对路径也行也OK)
|
|
|
|
FileInputStream template = new FileInputStream("D:\\Users\\Desktop\\teaching-backend\\src\\main\\resources\\templates\\courses.docx"); |
|
|
|
FileInputStream template = new FileInputStream("D:\\IDEA\\AAATEA\\teaching-backend\\src\\main\\resources\\templates\\courses.docx"); |
|
|
|
XWPFDocument document = new XWPFDocument(template); |
|
|
|
XWPFDocument document = new XWPFDocument(template); |
|
|
|
|
|
|
|
|
|
|
|
//准备导出数据
|
|
|
|
//准备导出数据
|
|
|
@ -391,18 +413,11 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl |
|
|
|
|
|
|
|
|
|
|
|
document = WordExportUtil.exportWord07(templatePath.getPath(), params); |
|
|
|
document = WordExportUtil.exportWord07(templatePath.getPath(), params); |
|
|
|
|
|
|
|
|
|
|
|
//----------------修改表格模版在导入参数之后
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取第2个表格----------
|
|
|
|
|
|
|
|
XWPFTable table = document.getTables().get(1); |
|
|
|
XWPFTable table = document.getTables().get(1); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < course_number - 1; i++) { |
|
|
|
for (int i = 0; i < course_number - 1; i++) { |
|
|
|
//新增一行单元格
|
|
|
|
//新增一行单元格
|
|
|
|
XWPFTableRow newRow = table.createRow(); |
|
|
|
XWPFTableRow newRow = table.createRow(); |
|
|
|
newRow.getCell(0).setText("课程目标" + (i + 2)); |
|
|
|
newRow.getCell(0).setText("课程目标" + (i + 2)); |
|
|
|
newRow.getCell(0).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);//水平居中
|
|
|
|
|
|
|
|
newRow.getCell(0).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//获取第5个表格
|
|
|
|
//获取第5个表格
|
|
|
@ -413,21 +428,16 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl |
|
|
|
XWPFTableRow newRow = table5.createRow(); |
|
|
|
XWPFTableRow newRow = table5.createRow(); |
|
|
|
|
|
|
|
|
|
|
|
newRow.getCell(0).setText(Integer.valueOf(i+2).toString()); |
|
|
|
newRow.getCell(0).setText(Integer.valueOf(i+2).toString()); |
|
|
|
newRow.getCell(0).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);//水平居中
|
|
|
|
newRow.getCell(0).getParagraphArray(0).setIndentationLeft(0); |
|
|
|
newRow.getCell(0).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中
|
|
|
|
newRow.getCell(0).getParagraphArray(0).setIndentationHanging(0); |
|
|
|
|
|
|
|
|
|
|
|
//课程目标
|
|
|
|
newRow.getCell(1).setText(" 课程目标" + (i + 2)); |
|
|
|
newRow.getCell(1).setText("课程目标" + (i + 2)); |
|
|
|
|
|
|
|
newRow.getCell(1).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);//水平居中
|
|
|
|
|
|
|
|
newRow.getCell(1).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中
|
|
|
|
|
|
|
|
//扩四列
|
|
|
|
//扩四列
|
|
|
|
for (int j = 0; j < 4; j++) { |
|
|
|
for (int j = 0; j < 4; j++) { |
|
|
|
newRow.createCell(); |
|
|
|
newRow.createCell(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
table5.setTableAlignment(TableRowAlign.CENTER); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String filename= courses.getName()+"课程标准.docx"; |
|
|
|
String filename= courses.getName()+"课程标准.docx"; |
|
|
|
//设置文件的打开方式和mime类型
|
|
|
|
//设置文件的打开方式和mime类型
|
|
|
@ -437,6 +447,65 @@ public class CoursesServiceImpl extends ServiceImpl<CoursesMapper, Courses> impl |
|
|
|
document.write(outputStream); |
|
|
|
document.write(outputStream); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// public static void insertRow(XWPFTable table, int copyrowIndex, int newrowIndex) {
|
|
|
|
|
|
|
|
// // 在表格中指定的位置新增一行
|
|
|
|
|
|
|
|
// XWPFTableRow targetRow = table.insertNewTableRow(newrowIndex);
|
|
|
|
|
|
|
|
// // 获取需要复制行对象
|
|
|
|
|
|
|
|
// XWPFTableRow copyRow = table.getRow(copyrowIndex);
|
|
|
|
|
|
|
|
// //复制行对象给新增的行对象
|
|
|
|
|
|
|
|
// targetRow.getCtRow().setTrPr(copyRow.getCtRow().getTrPr());
|
|
|
|
|
|
|
|
// //获取需要复制行对象的列
|
|
|
|
|
|
|
|
// List<XWPFTableCell> copyCells = copyRow.getTableCells();
|
|
|
|
|
|
|
|
// //新增的对象的列
|
|
|
|
|
|
|
|
// XWPFTableCell targetCell = null;
|
|
|
|
|
|
|
|
// //遍历复制行对象的列
|
|
|
|
|
|
|
|
// for (int i = 0; i < copyCells.size(); i++) {
|
|
|
|
|
|
|
|
// //复制行对象的列
|
|
|
|
|
|
|
|
// XWPFTableCell copyCell = copyCells.get(i);
|
|
|
|
|
|
|
|
// //新增的行对象创建一列
|
|
|
|
|
|
|
|
// targetCell = targetRow.addNewTableCell();
|
|
|
|
|
|
|
|
// //格式复制
|
|
|
|
|
|
|
|
// targetCell.getCTTc().setTcPr(copyCell.getCTTc().getTcPr());
|
|
|
|
|
|
|
|
// if (copyCell.getParagraphs() != null && copyCell.getParagraphs().size() > 0) {
|
|
|
|
|
|
|
|
// targetCell.getParagraphs().get(0).getCTP().setPPr(copyCell.getParagraphs().get(0).getCTP().getPPr());
|
|
|
|
|
|
|
|
// if (copyCell.getParagraphs().get(0).getRuns() != null
|
|
|
|
|
|
|
|
// && copyCell.getParagraphs().get(0).getRuns().size() > 0) {
|
|
|
|
|
|
|
|
// XWPFRun cellR = targetCell.getParagraphs().get(0).createRun();
|
|
|
|
|
|
|
|
// cellR.setBold(copyCell.getParagraphs().get(0).getRuns().get(0).isBold());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// private static void replaceVariable(XWPFDocument document, String variable, String replacement) {
|
|
|
|
|
|
|
|
// for (XWPFParagraph paragraph : document.getParagraphs()) {
|
|
|
|
|
|
|
|
// for (XWPFRun run : paragraph.getRuns()) {
|
|
|
|
|
|
|
|
// String text = run.getText(0);
|
|
|
|
|
|
|
|
// if (text != null && text.contains(variable)) {
|
|
|
|
|
|
|
|
// text = text.replace(variable, replacement);
|
|
|
|
|
|
|
|
// run.setText(text, 0);
|
|
|
|
|
|
|
|
// // run.setFontFamily("Arial");
|
|
|
|
|
|
|
|
// // run.setFontSize(14);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// private static void replaceVariableInTable(XWPFTable table, String variable, String replacement) {
|
|
|
|
|
|
|
|
// for (XWPFTableRow row : table.getRows()) {
|
|
|
|
|
|
|
|
// for (XWPFTableCell cell : row.getTableCells()) {
|
|
|
|
|
|
|
|
// for (XWPFParagraph paragraph : cell.getParagraphs()) {
|
|
|
|
|
|
|
|
// for (XWPFRun run : paragraph.getRuns()) {
|
|
|
|
|
|
|
|
// String text = run.getText(0);
|
|
|
|
|
|
|
|
// if (text != null && text.contains(variable)) {
|
|
|
|
|
|
|
|
// text = text.replace(variable, replacement);
|
|
|
|
|
|
|
|
// run.setText(text, 0);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|