mingfu 4 недель назад
Родитель
Сommit
740b0470f6

+ 1 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontPaperController.java

@@ -85,7 +85,7 @@ public class FrontPaperController {
         if(directed) {
             LearnStudent learnStudent = learnStudentService.selectLearnStudentByStudentId(sysUser.getUserId());
             if(null != learnStudent) {
-                knowledgeIdSet = learnTeacherService.getKnowledgeIdSet(learnStudent.getMajorPlanId(), dzControlService.selectDzControl(sysUser).getPlanYear(), sysUser.getExamType().name());
+                knowledgeIdSet = learnTeacherService.getKnowledgeIdSet(subjectId, learnStudent.getMajorPlanId(), dzControlService.selectDzControl(sysUser).getPlanYear(), sysUser.getExamType().name());
             }
         }
         List<LearnTeacherService.TreeNode> nodeList = learnTeacherService.getKnowledgeTree(sysUser.getExamType().title(), subjectId, knowledgeIdSet, sysUser.getUserId(), questionType);

+ 1 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/learn/LearnTeacherController.java

@@ -101,7 +101,7 @@ public class LearnTeacherController extends BaseController {
     {
         Set<Long> knowledgeIdSet = null;
         if("ExactHand".equals(buildType)) {
-            knowledgeIdSet = learnTeacherService.getKnowledgeIdSet(majorPlanId, null, examType);
+            knowledgeIdSet = learnTeacherService.getKnowledgeIdSet(subjectId, majorPlanId, null, examType);
         }
         return AjaxResult.success(learnTeacherService.getKnowledgeTree(examType, subjectId, knowledgeIdSet, null, null));
     }

+ 3 - 0
ie-admin/src/main/java/com/ruoyi/web/service/CommService.java

@@ -115,6 +115,9 @@ public class CommService {
             LearnTeacherService.TreeNode parent = teMap.get(kt.getPid());
             LearnTeacherService.TreeNode node = teMap.get(kt.getId());
             if(null != node.getQuestionCount()) {
+                if(null == parent) {
+                    continue;
+                }
                 parent.setQuestionCount(parent.getQuestionCount() + node.getQuestionCount());
                 parent.setFinishedCount(parent.getFinishedCount() + node.getFinishedCount());
                 parent.setRightCount(parent.getRightCount() + node.getRightCount());

+ 1 - 1
ie-admin/src/main/java/com/ruoyi/web/service/LearnStatService.java

@@ -85,7 +85,7 @@ public class LearnStatService {
 
     public List<JSONObject> getRecordKnowledge(Long studentId, Integer planYear) {
         LearnStudent learnStudent = learnStudentService.selectLearnStudentByStudentId(studentId);
-        Set<Long> knowledgeIdSet = null != learnStudent ? learnTeacherService.getKnowledgeIdSet(learnStudent.getMajorPlanId(), planYear, learnStudent.getExamType()) : Sets.newHashSet(0L);
+        Set<Long> knowledgeIdSet = null != learnStudent ? learnTeacherService.getKnowledgeIdSet(null, learnStudent.getMajorPlanId(), planYear, learnStudent.getExamType()) : Sets.newHashSet(0L);
         knowledgeIdSet.add(0L);
         List<JSONObject> list = answerMapper.selectKnowledgeStats(Dict.create().set("studentId", studentId).set("knowIds", knowledgeIdSet));
         list.forEach(o -> {

+ 61 - 4
ie-admin/src/main/java/com/ruoyi/web/service/LearnTeacherService.java

@@ -1,6 +1,7 @@
 package com.ruoyi.web.service;
 
 import cn.hutool.core.lang.Dict;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -27,6 +28,7 @@ import com.ruoyi.ie.mapper.AMarjorPlanMapper;
 import com.ruoyi.learn.domain.*;
 import com.ruoyi.learn.mapper.*;
 import com.ruoyi.learn.service.ILearnTestService;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.syzy.domain.BBusiWishUniversities;
 import com.ruoyi.syzy.mapper.BBusiWishUniversitiesMapper;
 import com.ruoyi.web.domain.TestRecordCond;
@@ -52,6 +54,7 @@ public class LearnTeacherService {
     private final AMarjorPlanMapper marjorPlanMapper;
     private final BBusiWishUniversitiesMapper busiWishUniversitiesMapper;
     private final LearnDirectedKnowledgeMapper learnDirectedKnowledgeMapper;
+    private final LearnCultureKnowledgeMapper learnCultureKnowledgeMapper;
     private final PaperService paperService;
     private final CommService commService;
     private final LearnTestPaperMapper learnTestPaperMapper;
@@ -62,8 +65,9 @@ public class LearnTeacherService {
     private final ILearnTestService learnTestService;
     private final LearnAnswerMapper learnAnswerMapper;
     private final DzTeacherMapper dzTeacherMapper;
+    private final SysUserMapper sysUserMapper;
 
-    public LearnTeacherService(DzClassesMapper dzClassesMapper, LearnKnowledgeTreeMapper learnKnowledgeTreeMapper, LearnStudentMapper learnStudentMapper, AMarjorPlanMapper marjorPlanMapper, BBusiWishUniversitiesMapper busiWishUniversitiesMapper, LearnDirectedKnowledgeMapper learnDirectedKnowledgeMapper, PaperService paperService, CommService commService, LearnTestPaperMapper learnTestPaperMapper, LearnQuestionsMapper learnQuestionsMapper, LearnKnowledgeCourseMapper learnKnowledgeCourseMapper, LearnTestStudentMapper learnTestStudentMapper, IDzSubjectService dzSubjectService, ILearnTestService learnTestService, LearnAnswerMapper learnAnswerMapper, DzTeacherMapper dzTeacherMapper) {
+    public LearnTeacherService(DzClassesMapper dzClassesMapper, LearnKnowledgeTreeMapper learnKnowledgeTreeMapper, LearnStudentMapper learnStudentMapper, AMarjorPlanMapper marjorPlanMapper, BBusiWishUniversitiesMapper busiWishUniversitiesMapper, LearnDirectedKnowledgeMapper learnDirectedKnowledgeMapper, PaperService paperService, CommService commService, LearnTestPaperMapper learnTestPaperMapper, LearnQuestionsMapper learnQuestionsMapper, LearnKnowledgeCourseMapper learnKnowledgeCourseMapper, LearnTestStudentMapper learnTestStudentMapper, IDzSubjectService dzSubjectService, ILearnTestService learnTestService, LearnAnswerMapper learnAnswerMapper, DzTeacherMapper dzTeacherMapper, SysUserMapper sysUserMapper, LearnCultureKnowledgeMapper learnCultureKnowledgeMapper) {
         this.dzClassesMapper = dzClassesMapper;
         this.learnKnowledgeTreeMapper = learnKnowledgeTreeMapper;
         this.learnStudentMapper = learnStudentMapper;
@@ -80,6 +84,34 @@ public class LearnTeacherService {
         this.learnTestService = learnTestService;
         this.learnAnswerMapper = learnAnswerMapper;
         this.dzTeacherMapper = dzTeacherMapper;
+        this.sysUserMapper = sysUserMapper;
+        this.learnCultureKnowledgeMapper = learnCultureKnowledgeMapper;
+        // processDirectStudy();
+    }
+
+    private void processDirectStudy() {
+        List<SysUser> userList = sysUserMapper.selectUserByUserIds(Stream.of(1,3,5,6,9,10,11,15,16,20,21,23,24,26,27,33,34,44,47,60,61,69,70,71,72,73,74,83,84,94,95,96,97,98,99,100,101,102,103,104,105,110,114,115,116,117,118,119,124,125,126,127,128,129,134,135,136,137,140,144,151,166,170,172,174,178).map(t -> t.longValue()).collect(Collectors.toList()));
+        SysUser upUser = new SysUser();
+        Set<Long> idSet = Sets.newHashSet(14663L,10836L,14139L,12597L,13942L);
+        for(SysUser user : userList) {
+            if(StringUtils.isBlank(user.getDirectedStudy())) {
+                continue;
+            }
+            JSONArray jsonList = JSONArray.parse(user.getDirectedStudy());
+            List<JSONObject> finalList = Lists.newArrayList();
+            for(int i=0;i<jsonList.size();i++) {
+                JSONObject o = jsonList.getJSONObject(i);
+                Long id = o.getLong("universityId");
+                if(idSet.contains(id)){
+                    continue;
+                }
+                finalList.add(o);
+            }
+            upUser.setUserId(user.getUserId());
+            upUser.setDirectedStudy(JSONArray.toJSONString(finalList));
+            // sysUserMapper.updateUser(upUser);
+        }
+
     }
 
     public List<LearnQuestions> getQuestionTypes(Long subjectId, Collection<Long> knowledgeIds) {
@@ -532,6 +564,14 @@ public class LearnTeacherService {
             dkCond.setLocations(sysUser.getLocation());
             dkCond.setExamineeTypes(sysUser.getExamType().name());
             Map<String, LearnDirectedKnowledge> directedKnowledgeMap = learnDirectedKnowledgeMapper.selectLearnDirectedKnowledgeList(dkCond).stream().collect(Collectors.toMap(LearnDirectedKnowledge::getDirectKey, t -> t));
+            LearnCultureKnowledge ckCond = new LearnCultureKnowledge();
+            ckCond.setUniversityId(curr.getUniversityId());
+            ckCond.setMatchYear(curr.getMatchYear());
+            ckCond.setLocations(sysUser.getLocation());
+            ckCond.setExamineeTypes(sysUser.getExamType().name());
+            learnCultureKnowledgeMapper.selectLearnCultureKnowledgeList(ckCond).stream().filter(t -> StringUtils.isNotBlank(t.getSubjects()) && StringUtils.isNotBlank(t.getKnowledges())).forEach(t -> {
+                subjectIdSet.addAll(Stream.of(t.getSubjects().split(",")).map(Long::parseLong).collect(Collectors.toList()));
+            });
             LearnDirectedKnowledge directedKnowledge = null;
             for(AMarjorPlan plan : planList) {
                 if(null != (directedKnowledge = getBestLearnDirectedKnowledge(plan, directedKnowledgeMap)) && StringUtils.isNotBlank(directedKnowledge.getSubjects())) {
@@ -542,7 +582,7 @@ public class LearnTeacherService {
         return subjectIdSet;
     }
 
-    public Set<Long> getKnowledgeIdSet(Long planId, Integer year, String examType) {
+    public Set<Long> getKnowledgeIdSet(Long subjectId, Long planId, Integer year, String examType) {
         if(NumberUtils.isPositive(planId)) {
             SysUser sysUser = SecurityUtils.getLoginUser().getUser();
             List<AMarjorPlan> planList = marjorPlanMapper.selectAMarjorPlanByIds(new Long[] { planId });
@@ -553,9 +593,26 @@ public class LearnTeacherService {
                 examType = null != sysUser.getExamType() ? sysUser.getExamType().name() : ExamType.OHS.name();
             }
             AMarjorPlan plan = planList.get(0);
-            if(null == year || plan.getMatchYear().equals(year)) {
-                return getStudentKnowledgeIdSet(plan.getMatchYear(), plan, sysUser.getLocation(), examType);
+            Set<Long> idSet;
+            if((null == subjectId || subjectId >= 10) && (null == year || plan.getMatchYear().equals(year))) {
+                idSet = getStudentKnowledgeIdSet(plan.getMatchYear(), plan, sysUser.getLocation(), examType);
+            } else {
+                idSet = Sets.newHashSet();
+            }
+            if(null == subjectId || subjectId < 10) {
+                LearnCultureKnowledge ckCond = new LearnCultureKnowledge();
+                ckCond.setUniversityId(plan.getUniversityId());
+                ckCond.setMatchYear(plan.getMatchYear());
+                ckCond.setLocations(sysUser.getLocation());
+                ckCond.setExamineeTypes(sysUser.getExamType().name());
+                if(null != subjectId) {
+                    ckCond.setSubjects(subjectId.toString());
+                }
+                learnCultureKnowledgeMapper.selectLearnCultureKnowledgeList(ckCond).stream().filter(t -> StringUtils.isNotBlank(t.getKnowledges())).forEach(t -> {
+                    idSet.addAll(Stream.of(t.getKnowledges().split(",")).map(Long::parseLong).collect(Collectors.toList()));
+                });
             }
+            return idSet;
         }
         return Sets.newHashSet();
     }

+ 2 - 2
ie-system/src/main/resources/mapper/learn/LearnCultureKnowledgeMapper.xml

@@ -31,8 +31,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="subjects != null  and subjects != ''"> and subjects = #{subjects}</if>
             <if test="questionTypes != null  and questionTypes != ''"> and question_types = #{questionTypes}</if>
             <if test="knowledges != null  and knowledges != ''"> and knowledges = #{knowledges}</if>
-            <if test="locations != null  and locations != ''"> and locations = #{locations}</if>
-            <if test="examineeTypes != null  and examineeTypes != ''"> and examinee_types = #{examineeTypes}</if>
+            <if test="locations != null  and locations != ''"> and (locations is null or find_in_set(#{locations}, locations))</if>
+            <if test="examineeTypes != null  and examineeTypes != ''"> and (examinee_types is null or find_in_set(#{examineeTypes}, examinee_types))</if>
             <if test="score != null "> and score = #{score}</if>
             <if test="time != null "> and time = #{time}</if>
             <if test="conditions != null  and conditions != ''"> and conditions = #{conditions}</if>