|
|
@@ -22,6 +22,7 @@ import com.xjrsoft.common.enums.WarehouseModeEnum;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.utils.excel.ExcelFillCellMergePrevColUtil;
|
|
|
import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
+import com.xjrsoft.module.base.entity.BaseClassroom;
|
|
|
import com.xjrsoft.module.base.entity.BaseSemester;
|
|
|
import com.xjrsoft.module.base.mapper.BaseClassMapper;
|
|
|
import com.xjrsoft.module.base.service.IBaseClassService;
|
|
|
@@ -40,10 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -605,24 +603,77 @@ public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Text
|
|
|
WriteTable writeSheetHeadTable = EasyExcel.writerTable(tableIndex).needHead(Boolean.TRUE).head(sheetHeadList).registerWriteHandler(sheetHeadColumn).build();
|
|
|
excelWriter.write(new ArrayList<>(), writeSheet, writeSheetHeadTable);
|
|
|
|
|
|
- for (int i = 0; i < 3; i++){
|
|
|
- //这是一个table的表头
|
|
|
- List<List<String>> tableHeadList = new ArrayList<List<String>>();
|
|
|
- tableHeadList.add(new ArrayList<String>(){{
|
|
|
- add("日期:2023春期 班级:23数控1班 班主任:路童话 教室:4502");
|
|
|
- }});
|
|
|
- //table的表头合并策略
|
|
|
- ExcelFillCellMergePrevColUtil tableHeadColumn = new ExcelFillCellMergePrevColUtil();
|
|
|
- tableHeadColumn.add(++rowIndex, 0, 9);
|
|
|
- //这是一个table表头的table
|
|
|
- WriteTable writeTableHeadTable = EasyExcel.writerTable(++tableIndex).needHead(Boolean.TRUE).head(tableHeadList).registerWriteHandler(tableHeadColumn).build();
|
|
|
- excelWriter.write(new ArrayList<>(), writeSheet, writeTableHeadTable);
|
|
|
- // 这里必须指定需要头,table 会继承sheet的配置,sheet配置了不需要,table 默认也是不需要
|
|
|
- WriteTable writeContentTable = EasyExcel.writerTable(++tableIndex).needHead(Boolean.TRUE).build();
|
|
|
- // 第一次写入会创建头
|
|
|
- excelWriter.write(customerList, writeSheet, writeContentTable);
|
|
|
- rowIndex += (1 + customerList.size());
|
|
|
+ //对返回的集合进行处理
|
|
|
+ //现针对学期进行分组
|
|
|
+ Map<Long, List<TextbookClaimExportQueryVo>> groupedBySemester = customerList.stream()
|
|
|
+ .collect(Collectors.groupingBy(TextbookClaimExportQueryVo::getBaseSemesterId));
|
|
|
+
|
|
|
+ Iterator<Map.Entry<Long, List<TextbookClaimExportQueryVo>>> groupedBySemesterIterator = groupedBySemester.entrySet().iterator();
|
|
|
+ while (groupedBySemesterIterator.hasNext()) {
|
|
|
+ Map.Entry<Long, List<TextbookClaimExportQueryVo>> groupedBySemesterEntry = groupedBySemesterIterator.next();
|
|
|
+ Long key = groupedBySemesterEntry.getKey();
|
|
|
+ List<TextbookClaimExportQueryVo> value = groupedBySemesterEntry.getValue();
|
|
|
+
|
|
|
+ Map<Long, List<TextbookClaimExportQueryVo>> groupedBySemesterByClass = value.stream()
|
|
|
+ .collect(Collectors.groupingBy(TextbookClaimExportQueryVo::getClassId));
|
|
|
+
|
|
|
+ Iterator<Map.Entry<Long, List<TextbookClaimExportQueryVo>>> groupedBySemesterByClassIdIterator = groupedBySemesterByClass.entrySet().iterator();
|
|
|
+ while (groupedBySemesterByClassIdIterator.hasNext()) {
|
|
|
+ Map.Entry<Long, List<TextbookClaimExportQueryVo>> entry = groupedBySemesterByClassIdIterator.next();
|
|
|
+ Long k = entry.getKey();
|
|
|
+ List<TextbookClaimExportQueryVo> v = entry.getValue();
|
|
|
+
|
|
|
+ //这是一个table的表头
|
|
|
+ List<List<String>> tableHeadList = new ArrayList<List<String>>();
|
|
|
+ tableHeadList.add(new ArrayList<String>(){{
|
|
|
+ //获取班级相关信息
|
|
|
+ MPJLambdaWrapper<BaseClass> baseClassMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ baseClassMPJLambdaWrapper
|
|
|
+ .selectAs(BaseClass::getName, ClassInfo::getClassName)
|
|
|
+ .selectAs(XjrUser::getName, ClassInfo::getHeadTeacherName)
|
|
|
+ .selectAs(BaseClassroom::getName, ClassInfo::getClassRoomName)
|
|
|
+ .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
|
|
|
+ .leftJoin(BaseClassroom.class, BaseClassroom::getId, BaseClass::getClassroomId)
|
|
|
+ .eq(BaseClass::getId, k)
|
|
|
+ .disableSubLogicDel();
|
|
|
+ ClassInfo classInfo = baseClassService.selectJoinOne(ClassInfo.class, baseClassMPJLambdaWrapper);
|
|
|
+ if(classInfo != null){
|
|
|
+ add("日期:" + key + " 班级:" + classInfo.getClassName() + " 班主任:" + classInfo.getHeadTeacherName() + " 教室:" + classInfo.getClassRoomName() + " ");
|
|
|
+ }
|
|
|
+ add("日期:" + key);
|
|
|
+ }});
|
|
|
+ //table的表头合并策略
|
|
|
+ ExcelFillCellMergePrevColUtil tableHeadColumn = new ExcelFillCellMergePrevColUtil();
|
|
|
+ tableHeadColumn.add(++rowIndex, 0, 9);
|
|
|
+ //这是一个table表头的table
|
|
|
+ WriteTable writeTableHeadTable = EasyExcel.writerTable(++tableIndex).needHead(Boolean.TRUE).head(tableHeadList).registerWriteHandler(tableHeadColumn).build();
|
|
|
+ excelWriter.write(new ArrayList<>(), writeSheet, writeTableHeadTable);
|
|
|
+ // 这里必须指定需要头,table 会继承sheet的配置,sheet配置了不需要,table 默认也是不需要
|
|
|
+ WriteTable writeContentTable = EasyExcel.writerTable(++tableIndex).needHead(Boolean.TRUE).build();
|
|
|
+ // 第一次写入会创建头
|
|
|
+ excelWriter.write(v, writeSheet, writeContentTable);
|
|
|
+ rowIndex += (1 + v.size());
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+// for (int i = 0; i < 3; i++){
|
|
|
+// //这是一个table的表头
|
|
|
+// List<List<String>> tableHeadList = new ArrayList<List<String>>();
|
|
|
+// tableHeadList.add(new ArrayList<String>(){{
|
|
|
+// add("日期:2023春期 班级:23数控1班 班主任:路童话 教室:4502");
|
|
|
+// }});
|
|
|
+// //table的表头合并策略
|
|
|
+// ExcelFillCellMergePrevColUtil tableHeadColumn = new ExcelFillCellMergePrevColUtil();
|
|
|
+// tableHeadColumn.add(++rowIndex, 0, 9);
|
|
|
+// //这是一个table表头的table
|
|
|
+// WriteTable writeTableHeadTable = EasyExcel.writerTable(++tableIndex).needHead(Boolean.TRUE).head(tableHeadList).registerWriteHandler(tableHeadColumn).build();
|
|
|
+// excelWriter.write(new ArrayList<>(), writeSheet, writeTableHeadTable);
|
|
|
+// // 这里必须指定需要头,table 会继承sheet的配置,sheet配置了不需要,table 默认也是不需要
|
|
|
+// WriteTable writeContentTable = EasyExcel.writerTable(++tableIndex).needHead(Boolean.TRUE).build();
|
|
|
+// // 第一次写入会创建头
|
|
|
+// excelWriter.write(customerList, writeSheet, writeContentTable);
|
|
|
+// rowIndex += (1 + customerList.size());
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
// EasyExcel.write(bot, TextbookClaimExportQueryVo.class).automaticMergeHead(true).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
|