|
@@ -1,6 +1,5 @@
|
|
|
package com.xjrsoft.module.textbook.service.impl;
|
|
|
|
|
|
-import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.ExcelWriter;
|
|
@@ -14,7 +13,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.enums.*;
|
|
@@ -37,7 +35,6 @@ import com.xjrsoft.module.textbook.dto.*;
|
|
|
import com.xjrsoft.module.textbook.entity.*;
|
|
|
import com.xjrsoft.module.textbook.mapper.*;
|
|
|
import com.xjrsoft.module.textbook.service.ITextbookService;
|
|
|
-import com.xjrsoft.module.textbook.service.ITextbookWarehouseRecordService;
|
|
|
import com.xjrsoft.module.textbook.service.IWfExerciseBookService;
|
|
|
import com.xjrsoft.module.textbook.vo.*;
|
|
|
import com.xjrsoft.module.veb.util.ImportExcelUtil;
|
|
@@ -60,7 +57,6 @@ import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.xjrsoft.module.veb.util.ImportExcelUtil.*;
|
|
|
-import static com.xjrsoft.module.veb.util.ImportExcelUtil.validateAndSetString2LongField;
|
|
|
|
|
|
/**
|
|
|
* @title: 教材管理
|
|
@@ -81,8 +77,6 @@ public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Text
|
|
|
|
|
|
private final IBaseClassService baseClassService;
|
|
|
|
|
|
- private final ITextbookWarehouseRecordService textbookClassWarehouseService;
|
|
|
-
|
|
|
private final TextbookIssueRecordMapper textbookIssueRecordMapper;
|
|
|
|
|
|
private final TextbookStudentClaimMapper textbookStudentClaimMapper;
|
|
@@ -285,7 +279,6 @@ public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Text
|
|
|
return textbookTextbookMapper.selectJoinList(TextbookListVo.class, textbookMPJLambdaWrapper);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* @Override
|
|
|
@Transactional
|
|
|
public Boolean dataHandleAddTextbookNode(Long dataId) {
|
|
@@ -958,81 +951,90 @@ public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Text
|
|
|
// return true;
|
|
|
// }
|
|
|
|
|
|
- @Override
|
|
|
- public IPage<TextbookSubscriptionListVo> getSubscriptionPageByClass(TextbookSubscriptionListDto dto) {
|
|
|
- List<String> classIdList = new ArrayList<>();
|
|
|
- if(dto.getClassIds() != null && !"".equals(dto.getClassIds())){
|
|
|
- String[] classIdArr = dto.getClassIds().split(",");
|
|
|
- classIdList = Arrays.asList(classIdArr);
|
|
|
- }
|
|
|
-
|
|
|
- // 找到可以使用多个学期且已经征订的教材
|
|
|
- MPJLambdaWrapper<BaseClassCourse> subscribedTextbook = new MPJLambdaWrapper<>();
|
|
|
- subscribedTextbook
|
|
|
- .distinct()
|
|
|
- .select(BaseClassCourse::getId)
|
|
|
- .innerJoin(TextbookSubscriptionClass.class, TextbookSubscriptionClass::getBaseClassId, BaseClassCourse::getClassId)
|
|
|
- .innerJoin(TextbookSubscriptionItem.class, wrapper -> wrapper
|
|
|
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, TextbookSubscriptionClass::getTextbookSubscriptionId)
|
|
|
- .eq(TextbookSubscriptionItem::getTextbookId, BaseClassCourse::getTextbookId)
|
|
|
- )
|
|
|
-
|
|
|
- .innerJoin(Textbook.class, Textbook::getId, BaseClassCourse::getTextbookId)
|
|
|
- .gt(Textbook::getUseType, 1)
|
|
|
- .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
- .in(BaseClassCourse::getClassId, classIdList)
|
|
|
- ;
|
|
|
- List<BaseClassCourse> baseClassCourses = baseClassCourseMapper.selectJoinList(BaseClassCourse.class, subscribedTextbook);
|
|
|
-
|
|
|
- List<Long> baseClassCourseIds = baseClassCourses.stream()
|
|
|
- .map(BaseClassCourse::getId)
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- MPJLambdaWrapper<BaseClassCourse> baseClassCourseMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
- baseClassCourseMPJLambdaWrapper
|
|
|
- .disableSubLogicDel()
|
|
|
- .distinct()
|
|
|
- .selectAs(BaseClassCourse::getCourseId, TextbookSubscriptionListVo::getCourseSubjectId)
|
|
|
- .selectAs(BaseClassCourse::getTextbookId, TextbookSubscriptionListVo::getTextbookId)
|
|
|
- .selectAs(BaseCourseSubject::getName, TextbookSubscriptionListVo::getCourseName)
|
|
|
- .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionListVo.class).contains(x.getProperty()))
|
|
|
- .innerJoin(Textbook.class, Textbook::getId, BaseClassCourse::getTextbookId)
|
|
|
- .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, BaseClassCourse::getCourseId)
|
|
|
- .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
|
|
|
- wrapper -> wrapper
|
|
|
- .selectAs(DictionaryDetail::getName, TextbookSubscriptionListVo::getTextbookTypeCn)
|
|
|
- )
|
|
|
- .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
- .in(BaseClassCourse::getClassId, classIdList)
|
|
|
- .notIn(!baseClassCourseIds.isEmpty(), BaseClassCourse::getId, baseClassCourseIds)
|
|
|
- .eq(BaseClassCourse::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- .eq(Textbook::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- ;
|
|
|
- IPage<TextbookSubscriptionListVo> textbookSubscriptionListVoIPage = baseClassCourseMapper.selectJoinPage(ConventPage.getPage(dto), TextbookSubscriptionListVo.class, baseClassCourseMPJLambdaWrapper);
|
|
|
-// IPage<TextbookSubscriptionListVo> page = this.baseMapper.getSubscriptionPageByClass(new Page<>(dto.getLimit(), dto.getSize()), dto);
|
|
|
-
|
|
|
- // 处理每本教材使用的人数
|
|
|
- if(!classIdList.isEmpty()) {
|
|
|
- for(TextbookSubscriptionListVo t : textbookSubscriptionListVoIPage.getRecords()){
|
|
|
- MPJLambdaWrapper<BaseClassCourse> countNum = new MPJLambdaWrapper<>();
|
|
|
- countNum
|
|
|
- .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseClassCourse::getClassId)
|
|
|
- .eq(BaseStudentSchoolRoll::getArchivesStatus, ArchivesStatusEnum.FB2901.getCode())
|
|
|
- .eq(BaseClassCourse::getTextbookId, t.getTextbookId())
|
|
|
- .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
- .in(BaseClassCourse::getClassId, classIdList)
|
|
|
- .notIn(!baseClassCourseIds.isEmpty(), BaseClassCourse::getId, baseClassCourseIds)
|
|
|
- .eq(BaseClassCourse::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
- ;
|
|
|
- Long num = baseClassCourseMapper.selectCount(countNum);
|
|
|
- t.setStudentSubscriptionNumber(num.intValue());
|
|
|
-
|
|
|
- t.setClassIds(dto.getClassIds());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return textbookSubscriptionListVoIPage;
|
|
|
- }
|
|
|
+// @Override
|
|
|
+// public IPage<TextbookSubscriptionListVo> getSubscriptionPageByClass(TextbookSubscriptionListDto dto) {
|
|
|
+// if(StringUtils.isBlank(dto.getClassIds())){
|
|
|
+// throw new MyException("请选择需要征订教材的班级");
|
|
|
+// }
|
|
|
+// String[] classIdArr = dto.getClassIds().split(",");
|
|
|
+// List<String> classIdList = Arrays.asList(classIdArr);
|
|
|
+// if(ObjectUtils.isEmpty(classIdList)){
|
|
|
+// throw new MyException("请选择需要征订教材的班级");
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 找到可以使用多个学期且已经征订的教材
|
|
|
+// // 找到可以使用多个学期且已经征订的教材
|
|
|
+// MPJLambdaWrapper<TextbookSubscriptionItem> subscribedTextbook = new MPJLambdaWrapper<>();
|
|
|
+// subscribedTextbook
|
|
|
+// .distinct()
|
|
|
+// .select(BaseClassCourse::getId)
|
|
|
+// .innerJoin(TextbookSubscriptionItemClass.class,
|
|
|
+// wrapper -> wrapper
|
|
|
+// .eq(TextbookSubscriptionItemClass::getTextbookSubscriptionItemId, TextbookSubscriptionItem::getId)
|
|
|
+// .in(TextbookSubscriptionItemClass::getBaseClassId, classIdList)
|
|
|
+// )
|
|
|
+//
|
|
|
+// .innerJoin(BaseClassAdminCourse.class, BaseClassAdminCourse::getClassId, TextbookSubscriptionItemClass::getBaseClassId)
|
|
|
+// .innerJoin(BaseClassCourse.class,
|
|
|
+// wrapper -> wrapper
|
|
|
+// .eq(BaseClassCourse::getClassId, BaseClassAdminCourse::getId)
|
|
|
+// .eq(BaseClassCourse::getTextbookId, TextbookSubscriptionItem::getTextbookId)
|
|
|
+// )
|
|
|
+//
|
|
|
+// .innerJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId)
|
|
|
+// .gt(Textbook::getUseType, 1)
|
|
|
+// ;
|
|
|
+// List<BaseClassCourse> baseClassCourses = textbookSubscriptionItemMapper.selectJoinList(BaseClassCourse.class, subscribedTextbook);
|
|
|
+//
|
|
|
+// List<Long> baseClassCourseIds = baseClassCourses.stream()
|
|
|
+// .map(BaseClassCourse::getId)
|
|
|
+// .collect(Collectors.toList());
|
|
|
+//
|
|
|
+// MPJLambdaWrapper<BaseClassCourse> baseClassCourseMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+// baseClassCourseMPJLambdaWrapper
|
|
|
+// .disableSubLogicDel()
|
|
|
+// .distinct()
|
|
|
+// .selectAs(BaseClassCourse::getCourseId, TextbookSubscriptionListVo::getCourseSubjectId)
|
|
|
+// .selectAs(BaseClassCourse::getTextbookId, TextbookSubscriptionListVo::getTextbookId)
|
|
|
+// .selectAs(BaseCourseSubject::getName, TextbookSubscriptionListVo::getCourseName)
|
|
|
+// .select(Textbook.class, x -> VoToColumnUtil.fieldsToColumns(TextbookSubscriptionListVo.class).contains(x.getProperty()))
|
|
|
+// .innerJoin(Textbook.class, Textbook::getId, BaseClassCourse::getTextbookId)
|
|
|
+// .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, BaseClassCourse::getCourseId)
|
|
|
+// .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
|
|
|
+// wrapper -> wrapper
|
|
|
+// .selectAs(DictionaryDetail::getName, TextbookSubscriptionListVo::getTextbookTypeCn)
|
|
|
+// )
|
|
|
+// .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+// .in(BaseClassCourse::getClassId, classIdList)
|
|
|
+// .notIn(!baseClassCourseIds.isEmpty(), BaseClassCourse::getId, baseClassCourseIds)
|
|
|
+// .eq(BaseClassCourse::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+// .eq(Textbook::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+// ;
|
|
|
+// IPage<TextbookSubscriptionListVo> textbookSubscriptionListVoIPage = baseClassCourseMapper.selectJoinPage(ConventPage.getPage(dto), TextbookSubscriptionListVo.class, baseClassCourseMPJLambdaWrapper);
|
|
|
+//// IPage<TextbookSubscriptionListVo> page = this.baseMapper.getSubscriptionPageByClass(new Page<>(dto.getLimit(), dto.getSize()), dto);
|
|
|
+//
|
|
|
+// // 处理每本教材使用的人数
|
|
|
+// if(!classIdList.isEmpty()) {
|
|
|
+// for(TextbookSubscriptionListVo t : textbookSubscriptionListVoIPage.getRecords()){
|
|
|
+// MPJLambdaWrapper<BaseClassCourse> countNum = new MPJLambdaWrapper<>();
|
|
|
+// countNum
|
|
|
+// .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseClassCourse::getClassId)
|
|
|
+// .eq(BaseStudentSchoolRoll::getArchivesStatus, ArchivesStatusEnum.FB2901.getCode())
|
|
|
+// .eq(BaseClassCourse::getTextbookId, t.getTextbookId())
|
|
|
+// .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+// .in(BaseClassCourse::getClassId, classIdList)
|
|
|
+// .notIn(!baseClassCourseIds.isEmpty(), BaseClassCourse::getId, baseClassCourseIds)
|
|
|
+// .eq(BaseClassCourse::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+// ;
|
|
|
+// Long num = baseClassCourseMapper.selectCount(countNum);
|
|
|
+// t.setStudentSubscriptionNumber(num.intValue());
|
|
|
+//
|
|
|
+// t.setClassIds(dto.getClassIds());
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// return textbookSubscriptionListVoIPage;
|
|
|
+// }
|
|
|
|
|
|
@Override
|
|
|
public List<TextbookSubscriptionListVo> getSubscriptionListByClass(TextbookSubscriptionListDto dto) {
|
|
@@ -1046,25 +1048,27 @@ public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Text
|
|
|
}
|
|
|
|
|
|
// 找到可以使用多个学期且已经征订的教材
|
|
|
- MPJLambdaWrapper<BaseClassCourse> subscribedTextbook = new MPJLambdaWrapper<>();
|
|
|
+ MPJLambdaWrapper<TextbookSubscriptionItem> subscribedTextbook = new MPJLambdaWrapper<>();
|
|
|
subscribedTextbook
|
|
|
.distinct()
|
|
|
.select(BaseClassCourse::getId)
|
|
|
- .innerJoin(BaseClassAdminCourse.class, BaseClassAdminCourse::getId, BaseClassCourse::getClassId)
|
|
|
-
|
|
|
- .innerJoin(TextbookSubscriptionClass.class, TextbookSubscriptionClass::getBaseClassId, BaseClassAdminCourse::getClassId)
|
|
|
- .innerJoin(TextbookSubscriptionItem.class, wrapper -> wrapper
|
|
|
- .eq(TextbookSubscriptionItem::getTextbookSubscriptionId, TextbookSubscriptionClass::getTextbookSubscriptionId)
|
|
|
- .eq(TextbookSubscriptionItem::getTextbookId, BaseClassCourse::getTextbookId)
|
|
|
+ .innerJoin(TextbookSubscriptionItemClass.class,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .eq(TextbookSubscriptionItemClass::getTextbookSubscriptionItemId, TextbookSubscriptionItem::getId)
|
|
|
+ .in(TextbookSubscriptionItemClass::getBaseClassId, classIdList)
|
|
|
)
|
|
|
|
|
|
- .innerJoin(Textbook.class, Textbook::getId, BaseClassCourse::getTextbookId)
|
|
|
+ .innerJoin(BaseClassAdminCourse.class, BaseClassAdminCourse::getClassId, TextbookSubscriptionItemClass::getBaseClassId)
|
|
|
+ .innerJoin(BaseClassCourse.class,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .eq(BaseClassCourse::getClassId, BaseClassAdminCourse::getId)
|
|
|
+ .eq(BaseClassCourse::getTextbookId, TextbookSubscriptionItem::getTextbookId)
|
|
|
+ )
|
|
|
|
|
|
+ .innerJoin(Textbook.class, Textbook::getId, TextbookSubscriptionItem::getTextbookId)
|
|
|
.gt(Textbook::getUseType, 1)
|
|
|
- .eq(BaseClassAdminCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
- .in(BaseClassAdminCourse::getClassId, classIdList)
|
|
|
;
|
|
|
- List<BaseClassCourse> baseClassCourses = baseClassCourseMapper.selectJoinList(BaseClassCourse.class, subscribedTextbook);
|
|
|
+ List<BaseClassCourse> baseClassCourses = textbookSubscriptionItemMapper.selectJoinList(BaseClassCourse.class, subscribedTextbook);
|
|
|
|
|
|
List<Long> baseClassCourseIds = baseClassCourses.stream()
|
|
|
.map(BaseClassCourse::getId)
|