|
|
@@ -1,5 +1,6 @@
|
|
|
package com.xjrsoft.module.textbook.service.impl;
|
|
|
|
|
|
+import camundajar.impl.scala.concurrent.impl.FutureConvertersImpl;
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
@@ -15,24 +16,28 @@ import com.alibaba.excel.write.metadata.style.WriteFont;
|
|
|
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
|
|
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.StringUtils;
|
|
|
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.ExerciseBookeTypeEnum;
|
|
|
-import com.xjrsoft.common.enums.TextbookTypeEnum;
|
|
|
-import com.xjrsoft.common.enums.UseSemesterTypeEnum;
|
|
|
-import com.xjrsoft.common.enums.WarehouseModeEnum;
|
|
|
+import com.xjrsoft.common.enums.*;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.utils.excel.ExcelFillCellMergePrevColUtil;
|
|
|
import com.xjrsoft.common.utils.excel.ExcelMergeUtil;
|
|
|
import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
+import com.xjrsoft.module.base.entity.BaseClassCourse;
|
|
|
import com.xjrsoft.module.base.entity.BaseCourseSubject;
|
|
|
import com.xjrsoft.module.base.entity.BaseSemester;
|
|
|
+import com.xjrsoft.module.base.mapper.BaseClassCourseMapper;
|
|
|
import com.xjrsoft.module.base.mapper.BaseCourseSubjectMapper;
|
|
|
+import com.xjrsoft.module.base.mapper.BaseMajorSetMapper;
|
|
|
import com.xjrsoft.module.base.mapper.BaseSemesterMapper;
|
|
|
import com.xjrsoft.module.base.service.IBaseClassService;
|
|
|
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
|
|
|
+import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
+import com.xjrsoft.module.student.mapper.BaseClassMajorSetMapper;
|
|
|
import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import com.xjrsoft.module.textbook.dto.*;
|
|
|
import com.xjrsoft.module.textbook.entity.*;
|
|
|
@@ -91,6 +96,9 @@ public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Text
|
|
|
|
|
|
private final TextbookCoreAttributeMapper textbookCoreAttributeMapper;
|
|
|
|
|
|
+ private final BaseClassMajorSetMapper baseClassMajorSetMapper;
|
|
|
+ private final BaseClassCourseMapper baseClassCourseMapper;
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(Textbook textbook) {
|
|
|
@@ -899,8 +907,38 @@ public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Text
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Page<TextbookSubscriptionListVo> getSubscriptionPageByClass(Page<TextbookSubscriptionListVo> page, TextbookSubscriptionListDto dto) {
|
|
|
- return this.baseMapper.getSubscriptionPageByClass(page, dto);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ dto.setClassIdList(classIdList);
|
|
|
+
|
|
|
+ IPage<TextbookSubscriptionListVo> page = this.baseMapper.getSubscriptionPageByClass(new Page<>(dto.getLimit(), dto.getSize()), dto);
|
|
|
+
|
|
|
+ // 处理每本教材使用的人数
|
|
|
+ if(!classIdList.isEmpty()) {
|
|
|
+ for(TextbookSubscriptionListVo t : page.getRecords()){
|
|
|
+ MPJLambdaWrapper<BaseClassCourse> baseClassCourseMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ baseClassCourseMPJLambdaWrapper
|
|
|
+ .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getClassId, BaseClassCourse::getClassId)
|
|
|
+ .in(BaseClassCourse::getClassId, classIdList)
|
|
|
+ .eq(BaseClassCourse::getTextbookId, t.getId())
|
|
|
+ .eq(BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+ .eq(BaseStudentSchoolRoll::getArchivesStatus, ArchivesStatusEnum.FB2901.getCode())
|
|
|
+ ;
|
|
|
+ Long num = baseClassCourseMapper.selectCount(baseClassCourseMPJLambdaWrapper);
|
|
|
+ t.setStudentSubscriptionNumber(num.intValue());
|
|
|
+
|
|
|
+ t.setClassIds(dto.getClassIds());
|
|
|
+ if(t.getTextbookType() != null && !t.getTextbookType().isEmpty()){
|
|
|
+ t.setTextbookTypeCn(TextbookTypeEnum.getValue(t.getTextbookType()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return page;
|
|
|
}
|
|
|
|
|
|
private void saveData(List<TextbookImportDto> dataList) {
|