yangdamao 2 سال پیش
والد
کامیت
5f660dfa0a

+ 5 - 16
zhongzheng-api/src/main/java/com/zhongzheng/controller/bank/QuestionController.java

@@ -123,22 +123,11 @@ public class QuestionController extends BaseController {
                 Long totalNum = iGoodsService.getQuestionNum(g.getGoodsId());
                 g.setDoNum(doNum);
                 g.setTotalNum(totalNum);
-            }
-
-            //试卷类型
-            List<ExamPaperVo> paperVos = iExamPaperService.getGoodsExamPaperByGoodsIds(list.stream().map(GoodsUserQuestionVo::getGoodsId).collect(Collectors.toList()));
-            if (!CollectionUtils.isEmpty(paperVos)){
-                Map<Long, List<ExamPaperVo>> map = paperVos.stream().collect(Collectors.groupingBy(ExamPaperVo::getGoodsId));
-                map.forEach((k,v) -> {
-                    ArrayList<ExamPaperVo> vos = v.stream().filter(x -> ObjectUtils.isNotNull(x.getPaperId())).collect(Collectors.collectingAndThen(Collectors
-                            .toCollection(() -> new TreeSet<>(Comparator.comparing(item -> item.getPaperId()))), ArrayList::new));
-                    map.put(k,vos);
-                });
-                list.forEach(goods -> {
-                    if (map.containsKey(goods.getGoodsId())){
-                        goods.setPaperVos(map.get(goods.getGoodsId()));
-                    }
-                });
+                //试卷类型
+                List<ExamPaperVo> paperVos = iExamPaperService.getGoodsExamPaperByGoodsId(g.getGoodsId());
+                paperVos = paperVos.stream().filter(x -> ObjectUtils.isNotNull(x.getPaperId())).collect(Collectors.collectingAndThen(Collectors
+                             .toCollection(() -> new TreeSet<>(Comparator.comparing(item -> item.getPaperId()))), ArrayList::new));
+                g.setPaperVos(paperVos);
             }
         }
         return getDataTable(list);

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/mapper/ExamPaperMapper.java

@@ -17,4 +17,6 @@ public interface ExamPaperMapper extends BaseMapper<ExamPaper> {
     List<ExamPaperVo> getGoodsExamPaper(Long goodsId);
 
     List<ExamPaperVo> getGoodsExamPaperByGoodsIds(@Param("goodsIds") List<Long> goodsIds);
+
+    List<ExamPaperVo> getGoodsExamPaperByGoodsId(@Param("goodsId") Long goodsId);
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamPaperService.java

@@ -54,4 +54,5 @@ public interface IExamPaperService extends IService<ExamPaper> {
 
 	List<ExamPaperVo> getGoodsExamPaperByGoodsIds(List<Long> goodsId);
 
+	List<ExamPaperVo> getGoodsExamPaperByGoodsId(Long goodsId);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamPaperServiceImpl.java

@@ -133,4 +133,9 @@ public class ExamPaperServiceImpl extends ServiceImpl<ExamPaperMapper, ExamPaper
     public List<ExamPaperVo> getGoodsExamPaperByGoodsIds(List<Long> goodsId) {
         return this.baseMapper.getGoodsExamPaperByGoodsIds(goodsId);
     }
+
+    @Override
+    public List<ExamPaperVo> getGoodsExamPaperByGoodsId(Long goodsId) {
+        return this.baseMapper.getGoodsExamPaperByGoodsId(goodsId);
+    }
 }

+ 81 - 0
zhongzheng-system/src/main/resources/mapper/modules/exam/ExamPaperMapper.xml

@@ -61,6 +61,56 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND e.exam_paper_id IS NOT NULL AND ep.`status` != -1
     </select>
 
+    <select id="getGoodsExamPaperByGoodsIds" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.exam.vo.ExamPaperVo">
+        SELECT
+        ep.paper_id,
+        ga.goods_id,
+        ep.paper_name
+        FROM goods_attached ga
+        LEFT JOIN question_module_chapter qmc ON ga.major_id = qmc.module_exam_id
+        LEFT JOIN question_chapter_exam qce ON qmc.chapter_exam_id = qce.chapter_exam_id
+        LEFT JOIN exam e ON qce.exam_id = e.exam_id
+        LEFT JOIN exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE ga.type = 1
+        <if test="goodsIds != null and goodsIds.size()!=0 ">
+            AND ga.goods_id in
+            <foreach collection="goodsIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        UNION ALL
+        SELECT
+        ep.paper_id,
+        ga.goods_id,
+        ep.paper_name
+        FROM goods_attached ga
+        LEFT JOIN question_chapter_exam qce ON ga.major_id = qce.chapter_exam_id
+        LEFT JOIN exam e ON qce.exam_id = e.exam_id
+        LEFT JOIN exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE ga.type = 2
+        <if test="goodsIds != null and goodsIds.size()!=0 ">
+            AND ga.goods_id in
+            <foreach collection="goodsIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        UNION ALL
+        SELECT
+        ep.paper_id,
+        ga.goods_id,
+        ep.paper_name
+        FROM goods_attached ga
+        LEFT JOIN exam e ON ga.major_id = e.exam_id
+        LEFT JOIN exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE ga.type = 3
+        <if test="goodsIds != null and goodsIds.size()!=0 ">
+            AND ga.goods_id in
+            <foreach collection="goodsIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+
     <select id="getGoodsExamPaperByGoodsIds" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.exam.vo.ExamPaperVo">
         SELECT
             ep.paper_id,
@@ -111,4 +161,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+    <select id="getGoodsExamPaperByGoodsId" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.exam.vo.ExamPaperVo">
+        SELECT
+        ep.paper_id,
+        ga.goods_id,
+        ep.paper_name
+        FROM goods_attached ga
+        LEFT JOIN question_module_chapter qmc ON ga.major_id = qmc.module_exam_id
+        LEFT JOIN question_chapter_exam qce ON qmc.chapter_exam_id = qce.chapter_exam_id
+        LEFT JOIN exam e ON qce.exam_id = e.exam_id
+        LEFT JOIN exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE ga.type = 1 AND ga.goods_id = #{goodsId}
+        UNION ALL
+        SELECT
+        ep.paper_id,
+        ga.goods_id,
+        ep.paper_name
+        FROM goods_attached ga
+        LEFT JOIN question_chapter_exam qce ON ga.major_id = qce.chapter_exam_id
+        LEFT JOIN exam e ON qce.exam_id = e.exam_id
+        LEFT JOIN exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE ga.type = 2  AND ga.goods_id = #{goodsId}
+        UNION ALL
+        SELECT
+        ep.paper_id,
+        ga.goods_id,
+        ep.paper_name
+        FROM goods_attached ga
+        LEFT JOIN exam e ON ga.major_id = e.exam_id
+        LEFT JOIN exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE ga.type = 3  AND ga.goods_id = #{goodsId}
+    </select>
 </mapper>