Bläddra i källkod

Merge branch 'error-branch' into bug-branch

chen 5 år sedan
förälder
incheckning
885947f404

+ 17 - 1
ssj-kmt-exercise-api/src/main/java/com/ssj/aijia/kmt/exercise/controller/KmtExerciseController.java

@@ -576,7 +576,7 @@ public class KmtExerciseController extends BaseController {
     @RequestMapping(value = "/findExerciseErrorQuestions", method = RequestMethod.POST)
     @ApiOperation(value = "报错明细", httpMethod = "POST", notes = "报错明细")
     public ResponseEntity findExerciseErrorQuestions(@RequestParam(name = "accessToken") String accessToken,
-                                         @RequestBody PageReq request) {
+                                         @RequestBody QuestionErrorListVo request) {
         ResponseEntity responseEntity = new ResponseEntity();
         try {
             String userId = tokenManager.getUserId(accessToken);
@@ -588,6 +588,22 @@ public class KmtExerciseController extends BaseController {
         return responseEntity;
     }
 
+    @RequestMapping(value = "/findErrorExerciseBooks", method = RequestMethod.POST)
+    @ApiOperation(value = "练习册报错页面查询练习册", httpMethod = "POST", notes = "练习册报错页面查询练习册")
+    public ResponseEntity findErrorExerciseBooks(@RequestParam(name = "accessToken") String accessToken,
+                                                     @RequestBody ExerciseBooksEditRequest request) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        try {
+            String userId = tokenManager.getUserId(accessToken);
+            responseEntity.success(kmtExerciseService.findErrorExerciseBooks(userId, request.getBookName()), "成功");
+        } catch (Exception e) {
+            logger.error("异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+
+
     @IgnoreSecurity
     @RequestMapping(value = "updateRollbackUserId",method = RequestMethod.POST)
     @ApiOperation(value = "更新打回数据",httpMethod = "POST",notes = "更新打回数据")

+ 27 - 0
ssj-kmt-exercise-service-impl/src/main/java/com/ssj/service/kmt/kmt/service/impl/KmtExerciseQuestionDealServiceImpl.java

@@ -32,6 +32,7 @@ import com.ssj.service.task.SyncSaveExerciseBookTask;
 import com.ssj.service.task.SyncSaveExerciseQuestionsTask;
 import com.ssj.taskthread.ThreadPool;
 import com.ssj.utils.ExerciseUtil;
+import com.ssj.utils.SortByChineseUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.elasticsearch.index.query.QueryBuilder;
@@ -432,11 +433,37 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
     public ResponseEntity findEditExerciseBooks(ExerciseBooksEditRequest request) {
         ResponseEntity responseEntity = new ResponseEntity();
         List<ExerciseBookEditDto> list = kmtExerciseMapper.findEditExerciseBooks(request);
+        list = this.sortByBookName(list);
         Map<String, Object> data = new HashMap<>();
         data.put("books", list);
         return responseEntity.success(data, "成功");
     }
 
+    /**
+     * 练习册名称排序
+     * @param list
+     * @return
+     */
+    private List<ExerciseBookEditDto> sortByBookName (List<ExerciseBookEditDto> list){
+        if (list != null){
+            Map<String, List<ExerciseBookEditDto>> temp = new HashMap<>();
+            for (ExerciseBookEditDto item : list){
+                if (temp.containsKey(item.getExerciseBookName())){
+                    temp.get(item.getExerciseBookName()).add(item);
+                } else {
+                    temp.put(item.getExerciseBookName(), Collections.singletonList(item));
+                }
+            }
+            ArrayList tempList = new ArrayList(temp.keySet());
+            List<String> sortList = SortByChineseUtil.sortByChinese(tempList);
+            list.clear();
+            for (String str : sortList) {
+                list.addAll(temp.get(str));
+            }
+        }
+        return list;
+    }
+
     @Override
     public ResponseEntity findEditExerciseQuestions(ExerciseQuestionsEditRequest request) {
         Page page = new Page(request.getPageNo(), request.getPageSize());

+ 38 - 2
ssj-kmt-exercise-service-impl/src/main/java/com/ssj/service/kmt/kmt/service/impl/KmtExerciseServiceImpl.java

@@ -20,6 +20,7 @@ import com.ssj.framework.weixin.util.DateUtil;
 import com.ssj.kmt.utils.JSONFileUtil;
 import com.ssj.service.conch.common.request.PageReq;
 import com.ssj.service.kmt.dto.*;
+import com.ssj.service.kmt.dto.exercise.ExerciseBookEditDto;
 import com.ssj.service.kmt.dto.exercise.ExerciseQuestionRollbacks;
 import com.ssj.service.kmt.exercise.request.SubmitAnswerProofreadResultReq;
 import com.ssj.service.kmt.exercisesys.enums.ProofreadStatusEnum;
@@ -34,6 +35,7 @@ import com.ssj.service.weixin.push.service.PushTemplateService;
 import com.ssj.service.weixin.user.service.UserService;
 import com.ssj.service.weixin.zuoyb.service.ZuoybKnowHowDetailsSortService;
 import com.ssj.taskthread.ThreadPool;
+import com.ssj.utils.SortByChineseUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.Factory;
 import org.apache.commons.lang3.StringUtils;
@@ -1613,10 +1615,10 @@ public class KmtExerciseServiceImpl implements KmtExerciseService {
     }
 
     @Override
-    public Map<String, Object> findExerciseErrorQuestions(PageReq req, String userId) {
+    public Map<String, Object> findExerciseErrorQuestions(QuestionErrorListVo req, String userId) {
         Map<String, Object> data = new HashMap<>();
         Page page = new Page(req.getPageNo(), req.getPageSize());
-        List<KmtExerciseQuestionErrors> questionErrors = kmtExerciseMapper.findKmtExerciseQuestionByErrorUserId(userId, page);
+        List<KmtExerciseQuestionErrors> questionErrors = kmtExerciseMapper.findKmtExerciseQuestionByErrorUserId(userId, req.getExerciseBookId(),  page);
         if (CollectionUtils.isNotEmpty(questionErrors)){
             List<String> userIds = this.findUserIdsInExerciseQuestionList(questionErrors);
             List<TbLibManager> users = null;
@@ -1653,6 +1655,40 @@ public class KmtExerciseServiceImpl implements KmtExerciseService {
         return data;
     }
 
+    @Override
+    public Map<String, Object> findErrorExerciseBooks (String userId, String bookName){
+        List<ExerciseBookEditDto> books = kmtExerciseMapper.findErrorExerciseBooks(bookName, userId);
+        books = this.sortByBookName(books);
+        Map<String, Object> data = new HashMap<>();
+        data.put("books", books);
+        return data;
+    }
+
+    /**
+     * 练习册名称排序
+     * @param list
+     * @return
+     */
+    private List<ExerciseBookEditDto> sortByBookName (List<ExerciseBookEditDto> list){
+        if (list != null){
+            Map<String, List<ExerciseBookEditDto>> temp = new HashMap<>();
+            for (ExerciseBookEditDto item : list){
+                if (temp.containsKey(item.getExerciseBookName())){
+                    temp.get(item.getExerciseBookName()).add(item);
+                } else {
+                    temp.put(item.getExerciseBookName(), Collections.singletonList(item));
+                }
+            }
+            ArrayList tempList = new ArrayList(temp.keySet());
+            List<String> sortList = SortByChineseUtil.sortByChinese(tempList);
+            list.clear();
+            for (String str : sortList) {
+                list.addAll(temp.get(str));
+            }
+        }
+        return list;
+    }
+
     /**
      * 从题目列表中提取四个用户的id
      * @param list

+ 19 - 0
ssj-kmt-exercise-service/src/main/java/com/ssj/service/kmt/request/QuestionErrorListVo.java

@@ -0,0 +1,19 @@
+package com.ssj.service.kmt.request;
+
+import com.ssj.service.conch.common.request.PageReq;
+import io.swagger.annotations.ApiModelProperty;
+
+public class QuestionErrorListVo extends PageReq {
+    private final static long serialVersionUID = 1L;
+
+    @ApiModelProperty(name = "exerciseBookId", value = "练习册id", required = true)
+    private String exerciseBookId;
+
+    public String getExerciseBookId() {
+        return exerciseBookId;
+    }
+
+    public void setExerciseBookId(String exerciseBookId) {
+        this.exerciseBookId = exerciseBookId;
+    }
+}

+ 9 - 1
ssj-kmt-exercise-service/src/main/java/com/ssj/service/kmt/service/KmtExerciseService.java

@@ -136,7 +136,15 @@ public interface KmtExerciseService {
      * @param userId
      * @return
      */
-    Map<String, Object> findExerciseErrorQuestions(PageReq req, String userId);
+    Map<String, Object> findExerciseErrorQuestions(QuestionErrorListVo req, String userId);
+
+    /**
+     * 查询报错练习册列表
+     * @param userId
+     * @param bookName
+     * @return
+     */
+    Map<String, Object> findErrorExerciseBooks(String userId, String bookName);
 
     /**
      * 查询题目的信息

+ 5 - 0
ssj-mybatis-service-impl/pom.xml

@@ -45,6 +45,11 @@
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>3.2.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.1</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 27 - 1
ssj-mybatis-service-impl/src/main/java/com/ssj/service/kmt/exercise/KmtExerciseMapperServiceImpl.java

@@ -36,6 +36,7 @@ import com.ssj.service.mapper.HomeworkMapper;
 import com.ssj.service.mapper.KmtExerciseMapper;
 import com.ssj.service.mapper.RecordQuestionMapper;
 import com.ssj.service.weixin.library.service.IBookManagerService;
+import com.ssj.utils.SortByChineseUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -1060,6 +1061,31 @@ public class KmtExerciseMapperServiceImpl implements KmtExerciseMapperService {
         }
     }
 
+    /**
+     * 练习册名称排序
+     * @param list
+     * @return
+     */
+    private List<ExerciseBookDto> sortByBookName (List<ExerciseBookDto> list){
+        if (list != null){
+            Map<String, List<ExerciseBookDto>> temp = new HashMap<>();
+            for (ExerciseBookDto item : list){
+                if (temp.containsKey(item.getName())){
+                    temp.get(item.getName()).add(item);
+                } else {
+                    temp.put(item.getName(), Collections.singletonList(item));
+                }
+            }
+            ArrayList tempList = new ArrayList(temp.keySet());
+            List<String> sortList = SortByChineseUtil.sortByChinese(tempList);
+            list.clear();
+            for (String str : sortList) {
+                list.addAll(temp.get(str));
+            }
+        }
+        return list;
+    }
+
     private List<ExerciseBookDto> getStaticFormatResult (List<ExerciseBookDto> list, int type){
         List<ExerciseBookDto> result = new ArrayList<>();
         if (list != null) {
@@ -1096,7 +1122,7 @@ public class KmtExerciseMapperServiceImpl implements KmtExerciseMapperService {
                 }
             }
         }
-        return result;
+        return this.sortByBookName(result);
     }
 
     @Override

+ 6 - 1
ssj-mybatis-service-impl/src/main/java/com/ssj/service/mapper/KmtExerciseMapper.java

@@ -881,7 +881,9 @@ public interface KmtExerciseMapper {
      * @param page
      * @return
      */
-    List<KmtExerciseQuestionErrors> findKmtExerciseQuestionByErrorUserId (@Param("userId") String userId, Page page);
+    List<KmtExerciseQuestionErrors> findKmtExerciseQuestionByErrorUserId (@Param("userId") String userId,
+                                                                          @Param("exerciseBookId") String exerciseBookId,
+                                                                          Page page);
 
     /**
      * 计算练习册老师的角色下的错误题数
@@ -1256,4 +1258,7 @@ public interface KmtExerciseMapper {
 
     @Update("update kmt_exercise_book set had_auditing = 0 where id=#{exerciseBookId}")
     int updateExerciseBookNotAuditing (@Param("exerciseBookId") String exerciseBookId);
+
+    List<ExerciseBookEditDto> findErrorExerciseBooks(@Param("bookName") String bookName,
+                                                     @Param("userId") String userId);
 }

+ 117 - 0
ssj-mybatis-service-impl/src/main/java/com/ssj/utils/SortByChineseUtil.java

@@ -0,0 +1,117 @@
+package com.ssj.utils;
+import com.ssj.bean.sys.sort.domain.Sort;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+
+import java.text.Collator;
+import java.util.*;
+
+public class SortByChineseUtil {
+
+    public static List sort(List list) {
+
+        return sortByChinese(list);
+    }
+
+    public static Map sortByKey(Map map) {
+
+        ArrayList list = new ArrayList(map.keySet());
+        List<String> sortList = sortByChinese(list);
+        LinkedHashMap result = new LinkedHashMap();
+        for (String str : sortList) {
+            result.put(str, map.get(str));
+        }
+
+        return result;
+    }
+
+
+    public static Map sortByValue(Map map) {
+
+        List<String> list = new ArrayList<String>(map.values());
+        List<String> sortList = sortByChinese(list);
+        LinkedHashMap result = new LinkedHashMap();
+        for (String str : sortList) {
+            result.put(getKey(map, str), str);
+        }
+        return result;
+    }
+
+    private static String getKey(Map map, String value) {
+        for (Object key : map.keySet()) {
+            if (map.get(key).equals(value)) {
+                return key.toString();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 看是否是汉字,是汉字进行匹配
+     * 看是否是英文,是英文直接转成小写加进去。
+     * 其他则直接加
+     * @param list
+     * @return
+     */
+
+    public static List sortByChinese(List<String> list) {
+        TreeMap map = new TreeMap();
+        for (String str : list) {
+            map.put(ToPinyin(str), str);
+        }
+        List<String> result = new ArrayList<String>(map.values());
+        return result;
+    }
+
+    /**
+     * 汉字转为拼音
+     * @param chinese
+     * @return
+     */
+     public static String ToPinyin(String chinese){
+         String pinyinStr = "";
+         char[] newChar = chinese.toCharArray();
+         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+         for (int i = 0; i < newChar.length; i++) {
+             if (newChar[i] > 128) {
+                 try {
+                     pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
+                 } catch (BadHanyuPinyinOutputFormatCombination e) {
+                     e.printStackTrace();
+                 }
+             }else{
+                 pinyinStr += newChar[i];
+             }
+         }
+         return pinyinStr.toLowerCase();
+     }
+
+    /**
+     *  解决key一样会覆盖的问题
+     */
+    private static String setMapKey(TreeMap map,String key){
+        if(map.get(key) == null){
+            return key;
+        }else{
+            return SortByChineseUtil.setMapKey(map, key + key.substring(0, 1));
+        }
+
+    }
+
+    public static void main(String[] args) {
+        HashMap map = new HashMap();
+        map.put("2","日本");
+        map.put("3","俄国");
+        map.put(1,"中国");
+        map.put(77,"IT服务");
+        map.put(8,"it");
+        map.put(99,",");
+        System.out.println(SortByChineseUtil.sortByValue(map));
+        System.out.println(SortByChineseUtil.ToPinyin("1+1天天练A(2020)"));
+    }
+}

+ 21 - 2
ssj-mybatis-service-impl/src/main/resources/mybatis/mapper/KmtExerciseMapper.xml

@@ -105,7 +105,7 @@
     <!-- 查询待加工审核的题目 -->
     <select id="findQuestionByBookCourseIdAndUserId" resultType="com.ssj.service.kmt.dto.ExerciseQuetionDto">
         select eq.id question_id, eq.course_name, eb.handle_user_id, eb.auditing_user_id, eb.analysis_user_id, eb.analysis_auditer_id, eq.book_course_id course_id,
-        eq.big_question_index, eq.small_question_name small_question_index,
+        eq.big_question_index, eq.small_question_name small_question_index, eq.is_common_flag,
         eq.deal_status question_status, eq.create_time, eq.remark reason, eq.from_user_id, eq.to_user_id,
         eq.question_type question_types, eq.difficulty_level difficulty_levels, eq.real_exam_type real_exam_types,
         eq.training_skill training_skills, eq.parent_id, eq.proofread_status, eq.question_path, eq.num, eq.create_time
@@ -559,6 +559,7 @@
                 </otherwise>
             </choose>
         </if>
+        order by eb.book_name
     </select>
 
     <!--查询未分配加工人练习册-->
@@ -589,6 +590,7 @@
                 </otherwise>
             </choose>
         </if>
+        order by eb.book_name
     </select>
 
     <!--查询未分配审核练习册-->
@@ -615,6 +617,7 @@
                 </otherwise>
             </choose>
         </if>
+        order by eb.book_name
     </select>
 
     <!--查询未审核解析的练习册-->
@@ -632,6 +635,7 @@
                 </otherwise>
             </choose>
         </if>
+        order by eb.book_name
     </select>
 
     <select id="findUnCorrectAnswerBooks" resultType="com.ssj.service.kmt.dto.ExerciseBookDto">
@@ -648,6 +652,7 @@
                 </otherwise>
             </choose>
         </if>
+        order by eb.book_name
     </select>
 
     <select id="findCorrectedAnswerBooks" resultType="com.ssj.service.kmt.dto.ExerciseBookDto">
@@ -664,6 +669,7 @@
                 </otherwise>
             </choose>
         </if>
+        order by eb.book_name
     </select>
 
     <!--查询未校对的练习册-->
@@ -691,6 +697,7 @@
                 </otherwise>
             </choose>
         </if>
+        order by eb.book_name
     </select>
 
     <!--查询待加工审核的练习册单元 -->
@@ -1594,7 +1601,9 @@
         and error_user_auth=#{beType}
     </select>
     <select id="findKmtExerciseQuestionByErrorUserId" resultType="com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestionErrors">
-        select * from kmt_exercise_question_errors where error_user_id=#{userId} order by create_time desc
+        select * from kmt_exercise_question_errors where error_user_id=#{userId}
+        and exercise_book_id=#{exerciseBookId}
+        order by create_time desc
     </select>
 
     <select id="countQuestionErrorCountByExerciseBookId" resultType="java.lang.Integer">
@@ -2051,6 +2060,7 @@
                 </if>
             </otherwise>
         </choose>
+        order by eb.book_name
     </select>
 
     <select id="findEditExerciseQuestions" resultType="com.ssj.service.kmt.dto.exercise.ExerciseQuestionEditDto">
@@ -2069,4 +2079,13 @@
         </choose>
         order by rb.create_time desc
     </select>
+
+    <select id="findErrorExerciseBooks" resultType="com.ssj.service.kmt.dto.exercise.ExerciseBookEditDto">
+        select distinct eb.id exercise_book_id, eb.book_name exercise_book_name from kmt_exercise_question_errors qe, kmt_exercise_book eb
+        where qe.exercise_book_id = eb.id and error_user_id=#{userId}
+        <if test="bookName != null and bookName != ''">
+            and eb.book_name like concat('%',#{bookName},'%')
+        </if>
+        order by eb.book_name
+    </select>
 </mapper>

+ 3 - 1
ssj-sys/src/main/java/com/ssj/service/kmt/exercisesys/KmtExerciseSysServiceImpl.java

@@ -236,7 +236,9 @@ public class KmtExerciseSysServiceImpl implements KmtExerciseSysService {
     @Override
     public ResponseEntity accountLogin(String loginName, String password) {
         ResponseEntity responseEntity = new ResponseEntity();
-        if (adminService.loginLocking(loginName, "KMT_SYS")) {
+        String sysEnv = (String) SystemResourceLocator.getValue("SYS_ENV");
+        String code;
+        if ("1".equals(sysEnv) && adminService.loginLocking(loginName, "KMT_SYS")) {
             return responseEntity.failure("您的账号已被锁定,请30分钟后重试");
         }
         User user = userService.findByMobile(loginName);

+ 10 - 40
ssj-sys/src/main/java/com/ssj/service/kmt/kmt/service/impl/KmtExerciseServiceImpl.java

@@ -1618,46 +1618,6 @@ public class KmtExerciseServiceImpl implements KmtExerciseService {
         return  result;
     }
 
-    @Override
-    public Map<String, Object> findExerciseErrorQuestions(PageReq req, String userId) {
-        Map<String, Object> data = new HashMap<>();
-        Page page = new Page(req.getPageNo(), req.getPageSize());
-        List<KmtExerciseQuestionErrors> questionErrors = kmtExerciseMapper.findKmtExerciseQuestionByErrorUserId(userId, page);
-        if (CollectionUtils.isNotEmpty(questionErrors)){
-            List<String> userIds = this.findUserIdsInExerciseQuestionList(questionErrors);
-            List<TbLibManager> users = null;
-            if (CollectionUtils.isNotEmpty(userIds)){
-                Integer[] types = {17, 18};
-                users = libManagerMapper.findTbLibManagerByUserIdsAndType(userIds, Arrays.asList(types));
-            }
-
-            List<ExerciseBookCourseClassDto> list = kmtExerciseMapperService.findClassifyQuestionsByIds(questionErrors.stream().map(question -> question.getQuestionId()).collect(Collectors.toList()));
-            if  (list != null){
-                for (ExerciseBookCourseClassDto parentQuetion : list){
-                    for (ExerciseQuetionDto childQuestion : parentQuetion.getList()){
-                        for (KmtExerciseQuestionErrors qe : questionErrors){
-                            if (qe.getQuestionId().equals(childQuestion.getQuestionId())){
-                                childQuestion.setFromUserId(qe.getSetErrorUserId());
-                                childQuestion.setToUserId(qe.getErrorUserId());
-                                childQuestion.appendUserNameByIds(users);
-                                childQuestion.setFromUser(kmtExerciseQuestionService.getAuthorityByType(qe.getSetErrorUserAuth()) + childQuestion.getFromUser());
-                                childQuestion.setToUser(kmtExerciseQuestionService.getAuthorityByType(qe.getErrorUserAuth()) + childQuestion.getToUser());
-                                childQuestion.setReason(qe.getErrorReason());
-                                childQuestion.setErrorReasonImage(qe.getErrorReasonImage());
-                                break;
-                            }
-                        }
-                    }
-                }
-                data.put("list", list);
-            }
-        }
-        data.put("pageNo", page.getCurrent());
-        data.put("pageSize", page.getSize());
-        data.put("pages", page.getPages());
-        data.put("total", page.getTotal());
-        return data;
-    }
 
     /**
      * 从题目列表中提取四个用户的id
@@ -1839,4 +1799,14 @@ public class KmtExerciseServiceImpl implements KmtExerciseService {
             return kmtExerciseQuestionService.findQuestionRollbackRecord(questionId);
         }
     }
+
+    @Override
+    public Map<String, Object> findExerciseErrorQuestions(QuestionErrorListVo req, String userId) {
+        return null;
+    }
+
+    @Override
+    public Map<String, Object> findErrorExerciseBooks(String userId, String bookName) {
+        return null;
+    }
 }