Browse Source

教材征订时选择教材排除可以使用多个学期的教材

大数据与最优化研究所 1 month ago
parent
commit
a7e7a20fd9

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/dto/AddTextbookSubscriptionItemDto.java

@@ -78,5 +78,5 @@ public class AddTextbookSubscriptionItemDto implements Serializable {
      * 按班级征订征订的班级主键(base_class)
      */
     @ApiModelProperty("按班级征订征订的班级主键(base_class)")
-    private String baseClassIds;
+    private String classIds;
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/dto/TextbookSubscriptionListDto.java

@@ -17,7 +17,7 @@ import java.util.List;
 * @Version 1.0
 */
 @Data
-public class TextbookSubscriptionListDto extends PageInput {
+public class TextbookSubscriptionListDto{
     /**
      * 使用班级
      */

+ 1 - 1
src/main/java/com/xjrsoft/module/textbook/entity/TextbookSubscriptionItem.java

@@ -132,6 +132,6 @@ public class TextbookSubscriptionItem implements Serializable {
      * 按班级征订征订的班级主键(base_class)
      */
     @ApiModelProperty("按班级征订征订的班级主键(base_class)")
-    private String baseClassIds;
+    private String classIds;
 
 }

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

@@ -128,7 +128,7 @@ public interface ITextbookService extends MPJBaseService<Textbook> {
 
 //    Boolean excelImport(InputStream inputStream);
 
-    IPage<TextbookSubscriptionListVo> getSubscriptionPageByClass(TextbookSubscriptionListDto dto);
+//    IPage<TextbookSubscriptionListVo> getSubscriptionPageByClass(TextbookSubscriptionListDto dto);
 
     List<TextbookSubscriptionListVo> getSubscriptionListByClass(TextbookSubscriptionListDto dto);
 

+ 97 - 93
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookServiceImpl.java

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

+ 5 - 5
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookSubscriptionServiceImpl.java

@@ -310,15 +310,15 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
 //            }
 //        }
 
-        // 处理征订表子表
+        // 处理征订
         TextbookSubscriptionItemClass textbookSubscriptionItemClass;
         for (TextbookSubscriptionItem textbookSubscriptionItem : textbookSubscription.getTextbookSubscriptionItemList()) {
             String[] classIdArr = new String[0];
             if (ObjectUtils.isNotEmpty(textbookSubscription.getSubscriptionMethod())
                     && textbookSubscription.getSubscriptionMethod() == 1
-                    && ObjectUtils.isNotEmpty(textbookSubscriptionItem.getBaseClassIds())
+                    && ObjectUtils.isNotEmpty(textbookSubscriptionItem.getClassIds())
             ) {
-                classIdArr = textbookSubscriptionItem.getBaseClassIds().split(",");
+                classIdArr = textbookSubscriptionItem.getClassIds().split(",");
             }
 
             textbookSubscriptionItem.setUseClassNum(classIdArr.length);
@@ -516,9 +516,9 @@ public class TextbookSubscriptionServiceImpl extends MPJBaseServiceImpl<Textbook
                     String[] classIdArr = new String[0];
                     if (ObjectUtils.isNotEmpty(textbookSubscription.getSubscriptionMethod())
                             && textbookSubscription.getSubscriptionMethod() == 1
-                            && ObjectUtils.isNotEmpty(textbookSubscriptionItem.getBaseClassIds())
+                            && ObjectUtils.isNotEmpty(textbookSubscriptionItem.getClassIds())
                     ) {
-                        classIdArr = textbookSubscriptionItem.getBaseClassIds().split(",");
+                        classIdArr = textbookSubscriptionItem.getClassIds().split(",");
                     }
 
                     textbookSubscriptionItem.setUseClassNum(classIdArr.length);

+ 1 - 1
src/main/resources/sqlScript/20250120_sql.sql

@@ -112,5 +112,5 @@ ALTER TABLE `student_report_record`
   ADD COLUMN `student_report_plan_id` BIGINT NULL   COMMENT '报到计划id' AFTER `base_semester_id`;
 
 alter table textbook_subscription_item
-    add base_class_ids varchar(1024) null comment '按班级征订当前征订项的的教材使用的班级的主键';
+    add class_ids varchar(1024) null comment '按班级征订当前征订项的的教材使用的班级的主键';