Sfoglia il codice sorgente

顶课计算规则调整

dzx 1 anno fa
parent
commit
7e4d5403e2

+ 7 - 7
src/main/java/com/xjrsoft/module/classtime/service/impl/ClassTimeStatisticsServiceImpl.java

@@ -456,19 +456,18 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
                     List<CourseListVo> substituteList = allSubstituteList.stream().filter(x -> x.getExchangeTeacherId().equals(teacher.getId()))
                             .collect(Collectors.toList());
                     Double reduceTime = 0d;//顶课课时
-                    Double bdkClassTime = 0d;//发起顶课的数量,只统计事假和病假的数量
+                    Double dkClassTime = 0d;//去顶课的数量,所有顶课数量
                     for (CourseListVo courseListVo : substituteList) {
                         Set<LocalDate> deleteDates = deleteMap.get(courseListVo.getClassId());
                         if(deleteDates !=null && deleteDates.contains(courseListVo.getScheduleDate())){
                             continue;
                         }
                         reduceTime += weightSetMap.get(courseListVo.getShortName());
-                        if("sick_leave".equals(courseListVo.getReason()) || "leave_absence".equals(courseListVo.getReason())){
-                            bdkClassTime += weightSetMap.get(courseListVo.getShortName());
-                        }
+                        dkClassTime += weightSetMap.get(courseListVo.getShortName());
                     }
 
-                    Double dkClassTime = 0d;//去顶课的数量,所有顶课数量
+
+                    Double bdkClassTime = 0d;//发起顶课的数量,只统计事假和病假的数量
                     substituteList = allSubstituteList.stream().filter(x -> x.getTeacherId().equals(teacher.getId().toString()))
                             .collect(Collectors.toList());
                     for (CourseListVo courseListVo : substituteList) {
@@ -477,8 +476,9 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
                             continue;
                         }
                         reduceTime = reduceTime - weightSetMap.get(courseListVo.getShortName());
-
-                        dkClassTime += weightSetMap.get(courseListVo.getShortName());
+                        if("sick_leave".equals(courseListVo.getReason()) || "leave_absence".equals(courseListVo.getReason())){
+                            bdkClassTime += weightSetMap.get(courseListVo.getShortName());
+                        }
                      }
                     record.setClassTime10(reduceTime);
 

+ 1 - 1
src/main/resources/mapper/classtime/ClassTimeStatisticsMapper.xml

@@ -35,7 +35,7 @@
         LEFT JOIN wf_course_adjust t4 ON t4.id = t3.wf_course_adjust_id
         WHERE t1.schedule_date BETWEEN #{dto.startDate} and #{dto.endDate}
         AND t1.adjust_type = 'course_replace'
-        AND t1.schedule_date NOT IN (
+        AND t1.schedule_date IN (
             SELECT DATE FROM holiday_date WHERE STATUS = 3
             AND DATE BETWEEN #{dto.startDate} and #{dto.endDate}
         )

+ 41 - 1
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest.java

@@ -14,7 +14,6 @@ import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.schedule.entity.CourseReceiveMsg;
 import com.xjrsoft.module.schedule.util.DataUtil;
 import com.xjrsoft.module.schedule.util.ScheduleUtil;
-import org.camunda.bpm.engine.impl.util.JsonUtil;
 import org.junit.jupiter.api.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +25,7 @@ import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -277,4 +277,44 @@ class JianyuekbScheduleTaskTest {
             SqlRunnerAdapter.db().delete(delSql);
         }
     }
+
+    @Test
+    void test3(){
+        String sql = "SELECT * FROM wf_course_adjust t1" +
+                " INNER JOIN xjr_workflow_form_relation t2 ON t1.id = t2.form_key_value" +
+                " WHERE adjust_type = 'course_substitute' AND t1.delete_mark = 0 AND t2.current_state = 'COMPLETED'";
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
+        for (Map<String, Object> objectMap : list) {
+            List<String> split = Arrays.asList(objectMap.get("course_id").toString().split(","));
+            sql = "update course_table set teacher_id = '" + objectMap.get("exchange_teacher_id").toString() + "' WHERE id in (" + split.toString().replace("[", "").replace("]", "") + ")";
+
+            SqlRunnerAdapter.db().update(sql);
+        }
+    }
+
+    @Test
+    void test4(){
+        String sql = "SELECT t1.* FROM wf_course_adjust t1" +
+                " INNER JOIN xjr_workflow_form_relation t2 ON t1.id = t2.form_key_value" +
+                " LEFT JOIN course_table_bak t3 ON t1.id = t3.wf_course_adjust_id" +
+                " WHERE t1.adjust_type = 'course_substitute' " +
+                " AND t2.current_state = 'COMPLETED'" +
+                " AND t1.delete_mark = 0 " +
+                " AND t3.wf_course_adjust_id IS NULL";
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
+        String tableName = "course_table_bak";
+        for (Map<String, Object> objectMap : list) {
+            List<String> split = Arrays.asList(objectMap.get("course_id").toString().split(","));
+            String insertSql = "INSERT INTO course_table_bak(id,base_semester_id,teacher_id,teacher_name,course_id,course_name,class_id,class_name,WEEK,weeks," +
+                    " weeks_cn,time_period,time_number,site_id,site_name,STATUS,err_msg,create_date,modify_date,jianyue_id,source_data,schedule_date,teacher_serial_no," +
+                    " wf_course_adjust_id,adjust_type)" +
+                    " SELECT id,base_semester_id,teacher_id,teacher_name,course_id,course_name,class_id,class_name,WEEK,weeks," +
+                    " weeks_cn,time_period,time_number,site_id,site_name,STATUS,err_msg,create_date,modify_date,jianyue_id,source_data,schedule_date,teacher_serial_no," +
+                    " " + objectMap.get("id").toString() + ",'course_substitute' FROM course_table " +
+                    " WHERE id IN (" + split.toString().replace("[", "").replace("]", "") + ")";
+            SqlRunnerAdapter.db().insert(insertSql);
+        }
+    }
+
+
 }

+ 8 - 1
src/test/java/com/xjrsoft/xjrsoftboot/KbTest.java

@@ -4,12 +4,14 @@ package com.xjrsoft.xjrsoftboot;
 import cn.hutool.core.lang.Console;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.sax.handler.RowHandler;
+import org.junit.jupiter.api.Test;
 
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Scanner;
 
@@ -18,7 +20,12 @@ import java.util.Scanner;
  * @date 2023/12/8
  */
 public class KbTest {
-
+    @Test
+    void test4(){
+        String[] split2 = {"1836067931570090015","1836067931570090028","1836067931570090033"};
+        List<String> split = Arrays.asList(split2);
+        System.out.println(split.toString().replace("[", "").replace("]", ""));
+    }
     public static void main(String[] args){
 //        String filePath = "C:\\Users\\建刚\\Desktop\\课表\\1数据_接口.H";
 //