Jelajahi Sumber

教材征订线上BUG:按班级征订时:1、征订的教材不是根据所选班级获取的全部教材(不同班级相同教材要去重,只是数量相加);2、征订数量不是根据教材有使用班级的数量相加;

大数据与最优化研究所 1 tahun lalu
induk
melakukan
8e5374233e

+ 1 - 28
src/main/java/com/xjrsoft/module/textbook/controller/TextbookController.java

@@ -79,34 +79,7 @@ public class TextbookController {
     @ApiOperation(value="教材管理列表(分页,教材征订用)")
     @SaCheckPermission("textbook:detail")
     public RT<PageOutput<TextbookSubscriptionListVo>> pageSubscription(@Valid 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 = textbookService.getSubscriptionPageByClass(new Page<>(dto.getLimit(), dto.getSize()), dto);
-
-        //获取所有班级的总人数
-        LambdaQueryWrapper<BaseClassMajorSet> baseClassMajorSetLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        baseClassMajorSetLambdaQueryWrapper
-                .in(!classIdList.isEmpty(), BaseClassMajorSet::getClassId, classIdList)
-                .eq(BaseClassMajorSet::getDeleteMark, DeleteMark.NODELETE.getCode())
-                ;
-        List<BaseClassMajorSet> baseClassMajorSetList = baseClassMajorSetService.list(baseClassMajorSetLambdaQueryWrapper);
-
-        int studentSubscriptionNumber = 0;
-        for (BaseClassMajorSet baseClassMajorSet : baseClassMajorSetList){
-            studentSubscriptionNumber += baseClassMajorSet.getTotalStudent();
-        }
-
-        for(TextbookSubscriptionListVo t : page.getRecords()){
-            t.setClassIds(dto.getClassIds());
-            if(t.getTextbookType() != null && !("").equals(t.getTextbookType())){
-                t.setTextbookTypeCn(TextbookTypeEnum.getValue(t.getTextbookType()));
-            }
-            t.setStudentSubscriptionNumber(studentSubscriptionNumber);
-        }
+        IPage<TextbookSubscriptionListVo> page = textbookService.getSubscriptionPageByClass(dto);
         PageOutput<TextbookSubscriptionListVo> pageOutput = ConventPage.getPageOutput(page, TextbookSubscriptionListVo.class);
         return RT.ok(pageOutput);
     }

+ 2 - 1
src/main/java/com/xjrsoft/module/textbook/service/ITextbookService.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.textbook.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.textbook.dto.AddTextbookWarehouseRecordDto;
@@ -140,5 +141,5 @@ public interface ITextbookService extends MPJBaseService<Textbook> {
 
     Boolean excelImport(InputStream inputStream);
 
-    Page<TextbookSubscriptionListVo> getSubscriptionPageByClass(Page<TextbookSubscriptionListVo> page, TextbookSubscriptionListDto dto);
+    IPage<TextbookSubscriptionListVo> getSubscriptionPageByClass(TextbookSubscriptionListDto dto);
 }

+ 44 - 6
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookServiceImpl.java

@@ -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) {