瀏覽代碼

招生统计调整

dzx 8 月之前
父節點
當前提交
e55f46e121

+ 6 - 4
src/main/java/com/xjrsoft/module/base/controller/BaseClassMergeController.java

@@ -2,6 +2,7 @@ package com.xjrsoft.module.base.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -56,6 +57,10 @@ public class BaseClassMergeController {
     @SaCheckPermission("baseclassmerge:detail")
     @XjrLog(value = "班级合并列表(分页)")
     public RT<PageOutput<BaseClassMergePageVo>> page(@Valid BaseClassMergePageDto dto){
+        List<Long> classIds = null;
+        if(StrUtil.isNotEmpty(dto.getMergeClassName())){
+            classIds = baseClassMergeService.getClassIdsByClassName(dto.getMergeClassName());
+        }
         MPJLambdaWrapper<BaseClassMerge> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper
                 .select(BaseClassMerge::getId)
@@ -65,10 +70,7 @@ public class BaseClassMergeController {
                 .innerJoin(User.class, User::getId, BaseClassMerge::getCreateUserId)
                 .innerJoin(BaseClass.class, BaseClass::getId, BaseClassMerge::getTargetClassId)
                 .like(StrUtil.isNotEmpty(dto.getTargetClassName()), BaseClass::getName, dto.getTargetClassName())
-                .in(StrUtil.isNotEmpty(dto.getMergeClassName()), BaseClassMerge::getId, "SELECT DISTINCT t1.base_class_merge_id FROM base_class_merge_student t1\n" +
-                        "INNER JOIN base_class t2 ON t1.class_id = t2.id\n" +
-                        "WHERE t1.delete_mark = 0 AND t2.delete_mark = 0\n" +
-                        "AND t2.name LIKE CONCAT('%'," + dto.getMergeClassName() + ",'%')")
+                .in(ObjectUtil.isNotNull(classIds), BaseClassMerge::getId, classIds)
                 .orderByDesc(BaseClassMerge::getId);
         IPage<BaseClassMergePageVo> page = baseClassMergeService.selectJoinListPage(ConventPage.getPage(dto), BaseClassMergePageVo.class, queryWrapper);
         for (BaseClassMergePageVo record : page.getRecords()) {

+ 3 - 0
src/main/java/com/xjrsoft/module/base/service/IBaseClassMergeService.java

@@ -46,4 +46,7 @@ public interface IBaseClassMergeService extends MPJBaseService<BaseClassMerge> {
     String getClassNamesByMergeId(Long id);
 
     IPage<BaseClassMergeStudentVo> getStudentPage(BaseClassMergeStudentPageDto dto);
+
+
+    List<Long> getClassIdsByClassName(String className);
 }

+ 25 - 2
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassMergeServiceImpl.java

@@ -7,6 +7,7 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.StudentChangeTypeEnum;
+import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.dto.BaseClassMergeStudentPageDto;
@@ -27,6 +28,7 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -52,11 +54,15 @@ public class BaseClassMergeServiceImpl extends MPJBaseServiceImpl<BaseClassMerge
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean add(BaseClassMerge baseClassMerge) {
+        Set<Long> collect = baseClassMerge.getBaseClassMergeStudentList().stream().map(BaseClassMergeStudent::getClassId).collect(Collectors.toSet());
+        if(collect.contains(baseClassMerge.getTargetClassId())){
+            throw new MyException("原有班级中不能包含目标班级,请重新选择原有班级");
+        }
         baseClassMerge.setStudentCount(baseClassMerge.getBaseClassMergeStudentList().size());
         this.baseMapper.insert(baseClassMerge);
         BaseClass baseClass = baseClassMapper.selectById(baseClassMerge.getTargetClassId());
 
-        Set<Long> collect = baseClassMerge.getBaseClassMergeStudentList().stream().map(BaseClassMergeStudent::getClassId).collect(Collectors.toSet());
+
         List<BaseClass> classList = baseClassMapper.selectBatchIds(collect);
         Map<Long, String> classMap = classList.stream().collect(Collectors.toMap(BaseClass::getId, BaseClass::getName));
 
@@ -131,7 +137,6 @@ public class BaseClassMergeServiceImpl extends MPJBaseServiceImpl<BaseClassMerge
                         .select(BaseClass::getId)
                         .select(BaseClass.class, x -> VoToColumnUtil.fieldsToColumns(BaseClass.class).contains(x.getProperty()))
                         .innerJoin(BaseClassMergeStudent.class, BaseClassMergeStudent::getClassId, BaseClass::getId)
-                        .innerJoin(BaseClassMergeStudent.class, BaseClassMergeStudent::getClassId, BaseClass::getId)
                         .eq(BaseClassMergeStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
                         .eq(BaseClassMergeStudent::getBaseClassMergeId, id)
                         .orderByAsc(BaseClass::getName)
@@ -169,4 +174,22 @@ public class BaseClassMergeServiceImpl extends MPJBaseServiceImpl<BaseClassMerge
         IPage<BaseClassMergeStudentVo> page = mergeStudentMapper.selectJoinPage(ConventPage.getPage(dto), BaseClassMergeStudentVo.class, queryWrapper);
         return page;
     }
+
+    @Override
+    public List<Long> getClassIdsByClassName(String className) {
+        List<BaseClassMergeStudent> classList = mergeStudentMapper.selectList(
+                new MPJLambdaWrapper<BaseClassMergeStudent>()
+                        .distinct()
+                        .select(BaseClassMergeStudent::getId)
+                        .select(BaseClassMergeStudent.class, x -> VoToColumnUtil.fieldsToColumns(BaseClassMergeStudent.class).contains(x.getProperty()))
+                        .innerJoin(BaseClass.class, BaseClass::getId, BaseClassMergeStudent::getClassId)
+                        .eq(BaseClassMergeStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .like(BaseClass::getName, className)
+        );
+        if(!classList.isEmpty()){
+            Set<Long> collect = classList.stream().map(BaseClassMergeStudent::getBaseClassMergeId).collect(Collectors.toSet());
+            return new ArrayList<>(collect);
+        }
+        return null;
+    }
 }

+ 4 - 2
src/test/java/com/xjrsoft/module/job/BaseNewStudentTaskTest.java

@@ -146,7 +146,7 @@ class BaseNewStudentTaskTest {
         List<BaseNewStudent> insertList = new ArrayList<>();
         for (PbCseFeeobjupdate feeobjupdate : dataList) {
             BaseNewStudent existsNewStudent = existsNewStudentMap.get(feeobjupdate.getPersonalid());
-
+            Long planId = planMap.get(feeobjupdate.getEnteryear() + feeobjupdate.getUserdef6());
             if (existsNewStudent != null) {
                 existsNewStudent.setName(feeobjupdate.getFeeobjname());
                 existsNewStudent.setPaymnystate(feeobjupdate.getPaymnystate());
@@ -165,6 +165,7 @@ class BaseNewStudentTaskTest {
                     }
                 }
                 existsNewStudent.setGraduateSchool(feeobjupdate.getGraduations());
+                existsNewStudent.setGraduateClass(feeobjupdate.getGradclass());
                 existsNewStudent.setStduyStatus(StudyStatusEnum.getCode(feeobjupdate.getQuartername()));
                 existsNewStudent.setSource(StudentTypeEnum.getCode(feeobjupdate.getResourcename()));
                 existsNewStudent.setMobile(feeobjupdate.getTelephone());
@@ -178,12 +179,12 @@ class BaseNewStudentTaskTest {
                 existsNewStudent.setModifyDate(new Date());
                 existsNewStudent.setStatus(0);
                 existsNewStudent.setIsCanBanding(1);
+                existsNewStudent.setEnrollmentPlanId(planId);
 
                 updateList.add(existsNewStudent);
                 continue;
             }
 
-            Long planId = planMap.get(feeobjupdate.getEnteryear() + feeobjupdate.getUserdef6());
             insertList.add(
                     new BaseNewStudent() {{
                         setCredentialNumber(feeobjupdate.getPersonalid());
@@ -204,6 +205,7 @@ class BaseNewStudentTaskTest {
                             }
                         }
                         setGraduateSchool(feeobjupdate.getGraduations());
+                        setGraduateClass(feeobjupdate.getGradclass());
                         setStduyStatus(StudyStatusEnum.getCode(feeobjupdate.getQuartername()));
                         setSource(StudentTypeEnum.getCode(feeobjupdate.getResourcename()));
                         setMobile(feeobjupdate.getTelephone());