Browse Source

排序使用代码排序

chen 5 years ago
parent
commit
90a2486f4c

+ 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());

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

@@ -35,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;
@@ -1657,12 +1658,38 @@ public class KmtExerciseServiceImpl implements KmtExerciseService {
     @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
      * @return

+ 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

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

@@ -0,0 +1,94 @@
+package com.ssj.utils;
+import net.sourceforge.pinyin4j.PinyinHelper;
+
+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();
+        String[] s = new String[list.size()];
+        for (String str : list) {
+            char[] chars = str.toCharArray();
+            if (Character.toString(chars[0]).matches("[\\u4E00-\\u9FA5]+")) {
+                String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(chars[0]);
+                map.put(setMapKey(map,Character.toString(pinyinArray[0].charAt(0))), str);
+            } else if (Character.toString(chars[0]).matches("[a-zA-Z]+")) {
+                map.put(setMapKey(map,Character.toString(chars[0]).toLowerCase()), str);
+            } else {
+                map.put(setMapKey(map,Character.toString(chars[0])), str);
+            }
+        }
+        List<String> result = new ArrayList<String>(map.values());
+        return result;
+    }
+    /**
+     *  解决key一样会覆盖的问题
+     */
+    private static String setMapKey(TreeMap map,String key){
+        if(map.get(key) == null){
+            return key;
+        }else{
+            return  key + key;
+        }
+
+    }
+
+    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));
+    }
+}

+ 0 - 10
ssj-mybatis-service-impl/src/main/resources/mybatis/mapper/KmtExerciseMapper.xml

@@ -559,7 +559,6 @@
                 </otherwise>
             </choose>
         </if>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 
     <!--查询未分配加工人练习册-->
@@ -590,7 +589,6 @@
                 </otherwise>
             </choose>
         </if>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 
     <!--查询未分配审核练习册-->
@@ -617,7 +615,6 @@
                 </otherwise>
             </choose>
         </if>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 
     <!--查询未审核解析的练习册-->
@@ -635,7 +632,6 @@
                 </otherwise>
             </choose>
         </if>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 
     <select id="findUnCorrectAnswerBooks" resultType="com.ssj.service.kmt.dto.ExerciseBookDto">
@@ -652,7 +648,6 @@
                 </otherwise>
             </choose>
         </if>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 
     <select id="findCorrectedAnswerBooks" resultType="com.ssj.service.kmt.dto.ExerciseBookDto">
@@ -669,7 +664,6 @@
                 </otherwise>
             </choose>
         </if>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 
     <!--查询未校对的练习册-->
@@ -697,7 +691,6 @@
                 </otherwise>
             </choose>
         </if>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 
     <!--查询待加工审核的练习册单元 -->
@@ -2013,7 +2006,6 @@
         eb.semester, eb.book_type,eb.ai_rollback_import aiRollbackImport
         from kmt_exercise_book eb, kmt_exercise_questions eq
         where eb.id=eq.exercise_book_id and eq.id=#{questionId} and eb.part_flag != 3
-        order by CONVERT(eb.book_name USING gbk)
     </select>
     <select id="findExerciseBookCourseByQuestionId" resultType="com.ssj.service.kmt.dto.exercise.ExerciseUnitBookcourseDto">
         select ebc.unit_id id, ebc.unit name, ebc.id book_course_id, ebc.period book_course, ebc.period_sort from kmt_exercise_book_course ebc
@@ -2061,7 +2053,6 @@
                 </if>
             </otherwise>
         </choose>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 
     <select id="findEditExerciseQuestions" resultType="com.ssj.service.kmt.dto.exercise.ExerciseQuestionEditDto">
@@ -2087,6 +2078,5 @@
         <if test="bookName != null and bookName != ''">
             and eb.book_name like concat('%',#{bookName},'%')
         </if>
-        order by CONVERT(eb.book_name USING gbk)
     </select>
 </mapper>

+ 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;
+    }
 }