派生自 projectDept/qhighschool

yn147
2023-03-29 5db91cf38f04ad066163485665259808e828cbec
src/main/java/com/qxueyou/scc/exercise/service/impl/ExercisePyService.java
@@ -58,7 +58,7 @@
   private static Logger log = LogManager.getLogger("ExercisePyService");
   /**
    * 上传解析
    * 上传解析
    */
   public Map<String, Object> parserPyExercise(String groupId, String fullPath,
         String module) {
@@ -67,7 +67,7 @@
      List<String> lst = generateLstFromFile(file, fullPath);
      if (null == lst || lst.isEmpty()) {
         return CollectionUtils.newObjectMap("resultCode",0,"msg","文档解析内容为空");
         return CollectionUtils.newObjectMap("resultCode",0,"msg","文档解析内容为空");
      }
      return exerciseParsePy(lst, fullPath);
@@ -75,10 +75,10 @@
   }
   /**
    * 校验
    * 校验
    * 
    * @param content
    *            习题文本内容
    *            习题文本内容
    * @return
    */
   public Map<String, Object> validatePyExercise(String content) {
@@ -93,9 +93,9 @@
         lst.add(arrLine[i]);
      }
      // 判断:是否为空
      // 判断:是否为空
      if (null == lst || lst.isEmpty()) {
         return CollectionUtils.newObjectMap("resultCode",0,"msg","文档解析内容为空");
         return CollectionUtils.newObjectMap("resultCode",0,"msg","文档解析内容为空");
      }
      return exerciseParsePy(lst, "" );
@@ -105,7 +105,7 @@
   public Result doImportPyExercise(List<ExerciseItemData> lstItems,String groupId) {
      
      if(null == lstItems || lstItems.isEmpty()){
         return new Result(false, "没有记录");
         return new Result(false, "没有记录");
      }
      
      ExerciseGroupItemRe re ;
@@ -175,11 +175,11 @@
               new Object[]{ iCount,ClientUtils.getUserId(), ClientUtils.getUserName(), groupId } );
         
      } catch (Exception e) {
         log.error("解析习题copyProperties 失败:" ,e );
         return new Result(false , "服务器内部转换错误");
         log.error("解析习题copyProperties 失败:" ,e );
         return new Result(false , "服务器内部转换错误");
      }
      
      return new Result(true , "成功导入" + iCount + "道习题");
      return new Result(true , "成功导入" + iCount + "道习题");
   }
   
@@ -192,7 +192,7 @@
   }
   
   /**
    * post传参
    * post传参
    * @param key
    * @param size
    * @return
@@ -207,7 +207,7 @@
   /**
    * 缓存版本
    * 缓存版本
    * @param key
    * @param size
    * @return
@@ -255,7 +255,7 @@
            }
         }
      } catch (Exception e) {
         log.error("解析练习txt文档失败:" + fullPath, e);
         log.error("解析练习txt文档失败:" + fullPath, e);
      } finally {
         IOUtils.closeQuietly(br);
         IOUtils.closeQuietly(reader);
@@ -269,7 +269,7 @@
   }
   /**
    * 从office转换到txt:2007转换:自带序号格式会丢失;2003会解析出来
    * 从office转换到txt:2007转换:自带序号格式会丢失;2003会解析出来
    * 
    * @param file
    * @return
@@ -285,7 +285,7 @@
         if ("doc".equals(fileExtention)) {
            WordExtractor extractor = new WordExtractor(is);
            // 获取Word文件中的文本+自带序号
            // 获取Word文件中的文本+自带序号
            strText = extractor.getText();
            extractor.close();
         } else if ("docx".equals(fileExtention)) {
@@ -293,18 +293,18 @@
                  .getAbsolutePath());
            POIXMLTextExtractor extractor = new XWPFWordExtractor(
                  opcPackage);
            // 只能获取Word文件中的文本,不能取到office序号
            // 只能获取Word文件中的文本,不能取到office序号
            strText = extractor.getText();
            extractor.close();
         } else {
            throw new RuntimeException("文件格式错误, 请上传word文档(.doc及.docx)格式",
            throw new RuntimeException("文件格式错误, 请上传word文档(.doc及.docx)格式",
                  null);
         }
         // 将得到的文本全角转半角
         // 将得到的文本全角转半角
         strText = formatFullToHalf(strText);
         // 解决空格保存为txt的时候,乱码为?
         // 解决空格保存为txt的时候,乱码为?
         byte bytes[] = { (byte) 0xC2, (byte) 0xA0 };
         String UTFSpace = new String(bytes, "UTF-8");
         strText = strText.replaceAll(UTFSpace, " ");
@@ -319,9 +319,9 @@
         return txtFile.getAbsolutePath();
      } catch (FileNotFoundException e) {
         throw new RuntimeException("office文档未找到", e);
         throw new RuntimeException("office文档未找到", e);
      } catch (IOException e) {
         throw new RuntimeException("office文档读取失败", e);
         throw new RuntimeException("office文档读取失败", e);
      } catch (Exception e) {
         throw new RuntimeException(e.getMessage(), e);
      } finally {
@@ -331,7 +331,7 @@
   }
   /**
    * 全角转半角
    * 全角转半角
    * 
    * @param oriText
    * @return
@@ -342,23 +342,23 @@
      }
      char[] charArray = oriText.toCharArray();
      // 对全角字符转换的char数组遍历
      // 对全角字符转换的char数组遍历
      for (int i = 0; i < charArray.length; ++i) {
         int charIntValue = (int) charArray[i];
         // 如果符合转换关系,将对应下标之间减掉偏移量65248;如果是空格的话,直接做转换
         // 如果符合转换关系,将对应下标之间减掉偏移量65248;如果是空格的话,直接做转换
         if (charIntValue >= 65281 && charIntValue <= 65374) {
            charArray[i] = (char) (charIntValue - 65248);
         } else if (charIntValue == 12288) {
            charArray[i] = (char) 32;
         } else if (charIntValue == 58033) {
            // 空格
            // 空格
            charArray[i] = (char) 32;
         } else if (charIntValue == 65380) {
            // 顿号
            // 顿号
            charArray[i] = (char) 12289;
         } else if (charIntValue == 65377) {
            // 句号
            // 句号
            charArray[i] = (char) 12290;
         }
      }
@@ -367,7 +367,7 @@
   }
   /**
    * 解析文件后缀
    * 解析文件后缀
    * 
    * @param filename
    * @return