派生自 projectDept/qhighschool

Administrator
2022-11-29 8c99e2d8b6c1e0d9cde6abbe80b4df75be19f6d1
src/main/java/com/qxueyou/scc/admin/progress/service/impl/StudyProgressUtils.java
@@ -41,10 +41,10 @@
    *            结束位置
    * @return
    */
   public static Double[][] merge(Double[][] orig, Double start, Double end) {
   public static int[][] merge(int[][] orig, int start, int end) {
      // 中间合并结果
      Double[][] result = new Double[orig.length + 1][2];
      int[][] result = new int[orig.length + 1][2];
      int j = 0;
      int i = 0;
@@ -57,13 +57,13 @@
         switch (action) {
         case ACTION_INSERT: {
            result[j++] = new Double[] { start, end };
            result[j++] = new int[] { start, end };
            result[j++] = orig[i];
            breakFlag = true;
            break;
         }
         case ACTION_MERGE_01: {
            result[j++] = new Double[] { start, orig[i][1] };
            result[j++] = new int[] { start, orig[i][1] };
            breakFlag = true;
            break;
         }
@@ -95,14 +95,12 @@
      }
      // 如果本次学习终止位置超出以往所有学习进度,则添加到最后
      if (orig.length == 0 ) {
         result[j++] = new Double[] { start, end };
      }else if(pos(end, orig[orig.length - 1]) == POS_AFTER){
         result[j++] = new Double[] { start, end };
      if (orig.length == 0 || pos(end, orig[orig.length - 1]) == POS_AFTER) {
         result[j++] = new int[] { start, end };
      }
      // 最终合并结果,去掉中间合并结果的多出为空的元素
      Double[][] finalResult = new Double[j][2];
      int[][] finalResult = new int[j][2];
      for (int k = 0; k < result.length; k++) {
         if (result[k][0] == 0 && result[k][1] == 0 && k>0) {
@@ -122,18 +120,18 @@
    *            全部学习进度
    * @return
    */
   public static Double sum(Double[][] orig) {
   public static int sum(int[][] orig) {
      Double sum = 0.0;
      int sum = 0;
      for (Double[] item : orig) {
      for (int[] item : orig) {
         sum += (item[1] - item[0] + 1);
      }
      return sum;
   }
   private static int action(Double[] segment, Double start, Double end) {
   private static int action(int[] segment, int start, int end) {
      int startPos = pos(start, segment);
      int endPos = pos(end, segment);
@@ -165,7 +163,7 @@
   }
   private static int pos(Double index, Double[] range) {
   private static int pos(int index, int[] range) {
      if (index < range[0]) {
         return POS_BEFORE;
      }