فهرست منبع

submit:班级限制

yangdamao 2 سال پیش
والد
کامیت
4af139c747

+ 80 - 33
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java

@@ -242,40 +242,86 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
             Goods goods = iGoodsService.getById(goodsId);
             CourseBusiness business = iCourseBusinessService.getById(goods.getBusinessId());
             if (ObjectUtils.isNotNull(business) && ObjectUtils.isNotNull(business.getTemplateStatus()) && business.getTemplateStatus() == 1){
-                List<CourseSubject> courseSubjectList = iCourseSubjectService.listByIds(Arrays.asList(goods.getSubjectIds().split(",")));
-                List<String> subNames = courseSubjectList.stream().map(CourseSubject::getSubjectName).collect(Collectors.toList());
-                List<Long> subIds = iCourseSubjectService.getIdsByTenant(subNames);
-                //获取业务层次下所有班级
-                ClassGradeListBo bgListBo = new ClassGradeListBo();
-                bgListBo.setAliasName(business.getAliasName());
-                bgListBo.setSubIds(subIds);
-                List<ClassGrade> classGrades = baseMapper.getGradeListByTenant(bgListBo);
-                if (CollectionUtils.isEmpty(classGrades)){
-                    //生成预报名官方编号
-                    add.setOfficialName(ServletUtils.getEncoded("PIY"));
-                    add.setClassStatus(0);
-                }else {
-                    //获取班级创建最多的机构
-                    Map<Long, List<ClassGrade>> map = classGrades.stream().collect(Collectors.groupingBy(ClassGrade::getTenantId));
-                    List<ClassGradeSortBo> sortList = new ArrayList<>();
-                    map.forEach((k,v) -> {
-                        ClassGradeSortBo sortBo = new ClassGradeSortBo();
-                        sortBo.setKey(k);
-                        sortBo.setSize(v.size());
-                        sortList.add(sortBo);
-                    });
-                    ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
-                    List<ClassGrade> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGrade::getCreateTime)).collect(Collectors.toList());
-                    //获取当前机构商品下的班级
-                    List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goodsId);
-                    if(gradeGoods.size() < classGradesMax.size()){
-                        ClassGrade classGrade = classGradesMax.get(gradeGoods.size());
-                        add.setOfficialName(classGrade.getRegisterCode());
-                        add.setClassStatus(0);
-                    }else {
+                if (net.polyv.common.v1.util.StringUtils.isNotBlank(business.getAliasName()) &&
+                        (business.getAliasName().equals("二级建造师") || business.getAliasName().equals("二级造价工程师"))){
+                    List<Goods> goodsList = iGoodsService.list(new LambdaQueryWrapper<Goods>()
+                            .eq(Goods::getEducationTypeId, goods.getEducationTypeId())
+                            .eq(Goods::getBusinessId, goods.getBusinessId())
+                            .eq(Goods::getProjectId, goods.getProjectId())
+                            .eq(Goods::getSubjectIds, goods.getSubjectIds()));
+                    if (goodsList.size() > 1){
+                        //该业务层次下有多个商品
+                        List<Long> goodsIds = goodsList.stream().filter(item -> !item.getGoodsId().equals(goodsId)).map(Goods::getGoodsId).collect(Collectors.toList());
+                        List<ClassGradeGoods> goodsGradeList = iClassGradeGoodsService
+                                .list(new LambdaQueryWrapper<ClassGradeGoods>()
+                                        .in(ClassGradeGoods::getGoodsId, goodsIds));
+                        if (CollectionUtils.isNotEmpty(goodsGradeList)){
+                            Map<Long, List<ClassGradeGoods>> map = goodsGradeList.stream().collect(Collectors.groupingBy(ClassGradeGoods::getGoodsId));
+                            List<ClassGradeSortBo> sortList = new ArrayList<>();
+                            map.forEach((k, v) -> {
+                                ClassGradeSortBo sortBo = new ClassGradeSortBo();
+                                sortBo.setKey(k);
+                                sortBo.setSize(v.size());
+                                sortList.add(sortBo);
+                            });
+                            ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
+                            List<ClassGradeGoods> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGradeGoods::getCreateTime)).collect(Collectors.toList());
+                            //班级信息
+                            List<ClassGrade> listGrade = listByIds(classGradesMax.stream().map(ClassGradeGoods::getGradeId).collect(Collectors.toList()));
+                            //获取当前机构商品下的班级
+                            List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goods.getGoodsId());
+                            if (gradeGoods.size() < listGrade.size()) {
+                                add.setOfficialName(list.get(gradeGoods.size()).getOfficialName());
+                                add.setClassStatus(0);
+                            }
+                        }
+                    }
+                }
+
+                if (StringUtils.isBlank(add.getOfficialName())){
+                    List<CourseSubject> courseSubjectList = iCourseSubjectService.listByIds(Arrays.asList(goods.getSubjectIds().split(",")));
+                    List<String> subNames = courseSubjectList.stream().map(CourseSubject::getSubjectName).collect(Collectors.toList());
+                    List<Long> subIds = iCourseSubjectService.getIdsByTenant(subNames);
+                    //获取业务层次下所有班级
+                    ClassGradeListBo bgListBo = new ClassGradeListBo();
+                    bgListBo.setAliasName(business.getAliasName());
+                    bgListBo.setSubIds(subIds);
+                    List<ClassGrade> classGrades = baseMapper.getGradeListByTenant(bgListBo);
+                    if (CollectionUtils.isEmpty(classGrades)){
                         //生成预报名官方编号
                         add.setOfficialName(ServletUtils.getEncoded("PIY"));
                         add.setClassStatus(0);
+                    }else {
+                        //获取班级创建最多的机构
+                        Map<Long, List<ClassGrade>> map = classGrades.stream().collect(Collectors.groupingBy(ClassGrade::getTenantId));
+                        List<ClassGradeSortBo> sortList = new ArrayList<>();
+                        map.forEach((k,v) -> {
+                            ClassGradeSortBo sortBo = new ClassGradeSortBo();
+                            sortBo.setKey(k);
+                            Map<String, List<ClassGrade>> collect = v.stream().collect(Collectors.groupingBy(ClassGrade::getOfficialName));
+                            sortBo.setSize(collect.keySet().size());
+                            sortList.add(sortBo);
+                        });
+                        ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
+                        List<ClassGrade> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGrade::getCreateTime)).collect(Collectors.toList());
+                        //去重
+                        List<String> codeStrs = new ArrayList<>();
+                        for (ClassGrade gradesMax : classGradesMax) {
+                            if (codeStrs.contains(gradesMax.getOfficialName())){
+                                continue;
+                            }
+                            codeStrs.add(gradesMax.getOfficialName());
+                        }
+                        //获取当前机构商品下的班级
+                        List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goodsId);
+                        if(gradeGoods.size() < codeStrs.size()){
+                            add.setOfficialName(codeStrs.get(gradeGoods.size()));
+                            add.setClassStatus(0);
+                        }else {
+                            //生成预报名官方编号
+                            add.setOfficialName(ServletUtils.getEncoded("PIY"));
+                            add.setClassStatus(0);
+                        }
                     }
                 }
             }
@@ -1088,7 +1134,8 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
             map.forEach((k,v) -> {
                 ClassGradeSortBo sortBo = new ClassGradeSortBo();
                 sortBo.setKey(k);
-                sortBo.setSize(v.size());
+                Map<String, List<ClassGrade>> collect = v.stream().collect(Collectors.groupingBy(ClassGrade::getOfficialName));
+                sortBo.setSize(collect.keySet().size());
                 sortList.add(sortBo);
             });
             ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
@@ -1121,7 +1168,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
 
         ClassGradeOpenUpBo openUpBo = new ClassGradeOpenUpBo();
         openUpBo.setGradeIds(ids);
-        openUpBo.setClassStatus(bo.getClassStatus());
+        openUpBo.setClassStatus(1);//开班
         openUpBo.setOfficialName(bo.getOfficialName());
         openUpBo.setClassName(bo.getClassName());
         openUpBo.setClassStartTime(bo.getClassStartTime());

+ 46 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -1796,7 +1796,41 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     }
 
     private String createGradeCode(Long goodsId,CourseBusinessVo business) {
+
         Goods goods = iGoodsService.getById(goodsId);
+        if (StringUtils.isNotBlank(business.getAliasName()) && (business.getAliasName().equals("二级建造师") || business.getAliasName().equals("二级造价工程师"))){
+            List<Goods> goodsList = iGoodsService.list(new LambdaQueryWrapper<Goods>()
+                    .eq(Goods::getEducationTypeId, goods.getEducationTypeId())
+                    .eq(Goods::getBusinessId, goods.getBusinessId())
+                    .eq(Goods::getProjectId, goods.getProjectId())
+                    .eq(Goods::getSubjectIds, goods.getSubjectIds()));
+            if (goodsList.size() > 1){
+                //该业务层次下有多个商品
+                List<Long> goodsIds = goodsList.stream().filter(item -> !item.getGoodsId().equals(goodsId)).map(Goods::getGoodsId).collect(Collectors.toList());
+                List<ClassGradeGoods> goodsGradeList = iClassGradeGoodsService
+                        .list(new LambdaQueryWrapper<ClassGradeGoods>()
+                        .in(ClassGradeGoods::getGoodsId, goodsIds));
+                if (CollectionUtils.isNotEmpty(goodsGradeList)){
+                    Map<Long, List<ClassGradeGoods>> map = goodsGradeList.stream().collect(Collectors.groupingBy(ClassGradeGoods::getGoodsId));
+                    List<ClassGradeSortBo> sortList = new ArrayList<>();
+                    map.forEach((k, v) -> {
+                        ClassGradeSortBo sortBo = new ClassGradeSortBo();
+                        sortBo.setKey(k);
+                        sortBo.setSize(v.size());
+                        sortList.add(sortBo);
+                    });
+                    ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
+                    List<ClassGradeGoods> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGradeGoods::getCreateTime)).collect(Collectors.toList());
+                    //班级信息
+                    List<ClassGrade> list = iClassGradeService.listByIds(classGradesMax.stream().map(ClassGradeGoods::getGradeId).collect(Collectors.toList()));
+                    //获取当前机构商品下的班级
+                    List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goods.getGoodsId());
+                    if (gradeGoods.size() < list.size()) {
+                        return list.get(gradeGoods.size()).getOfficialName();
+                    }
+                }
+            }
+        }
         List<CourseSubject> courseSubjectList = courseSubjectService.listByIds(Arrays.asList(goods.getSubjectIds().split(",")));
         List<String> subNames = courseSubjectList.stream().map(CourseSubject::getSubjectName).collect(Collectors.toList());
         List<Long> subIds = courseSubjectService.getIdsByTenant(subNames);
@@ -1814,16 +1848,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             map.forEach((k, v) -> {
                 ClassGradeSortBo sortBo = new ClassGradeSortBo();
                 sortBo.setKey(k);
-                sortBo.setSize(v.size());
+                Map<String, List<ClassGrade>> collect = v.stream().collect(Collectors.groupingBy(ClassGrade::getOfficialName));
+                sortBo.setSize(collect.keySet().size());
                 sortList.add(sortBo);
             });
             ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
             List<ClassGrade> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGrade::getCreateTime)).collect(Collectors.toList());
+            //去重
+            List<String> codeStrs = new ArrayList<>();
+            for (ClassGrade gradesMax : classGradesMax) {
+                if (codeStrs.contains(gradesMax.getOfficialName())){
+                    continue;
+                }
+                codeStrs.add(gradesMax.getOfficialName());
+            }
             //获取当前机构商品下的班级
             List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goods.getGoodsId());
-            if (gradeGoods.size() < classGradesMax.size()) {
-                ClassGrade classGrade = classGradesMax.get(gradeGoods.size());
-                return classGrade.getOfficialName();
+            if (gradeGoods.size() < codeStrs.size()) {
+                return codeStrs.get(gradeGoods.size());
             } else {
                 //生成预报名官方编号
                 return ServletUtils.getEncoded("PIY");

+ 3 - 3
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -990,7 +990,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             LEFT JOIN goods g ON cgg.goods_id = g.goods_id
             LEFT JOIN course_business cb ON g.business_id = cb.id
         WHERE
-            cb.alias_name = #{aliasName} AND cg.class_status = 0 AND cg.`status` = 1
+            cb.alias_name = #{aliasName} AND cg.class_status = 0 AND cg.`status` = 1 AND g.goods_status = 1
         <if test="subIds != null and subIds.size()!=0 ">
             AND (
             <foreach collection="subIds" item="id" index="index">
@@ -1040,7 +1040,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             *
         FROM
             class_grade
-        where register_code = #{registerCode}
+        where official_name = #{registerCode}
     </select>
 
     <update id="UpGradeStatusByTenant" parameterType="com.zhongzheng.modules.grade.bo.ClassGradeOpenUpBo" >
@@ -1056,7 +1056,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <update id="UpGradeCodeByIdTenant" parameterType="java.lang.Long" >
         update class_grade set register_code = official_name where 1 = 1
-        <if test="gradeIds != null and gradeIds.size()!=0 ">
+        <if test="ids != null and ids.size()!=0 ">
             AND grade_id in
             <foreach collection="ids" item="item" index="index" open="(" close=")" separator=",">
                 #{item}