Explorar o código

Merge remote-tracking branch 'origin/dev' into dev

大数据与最优化研究所 hai 9 meses
pai
achega
b45d3d1775

+ 4 - 3
src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java

@@ -249,7 +249,7 @@ public class JianyuekbScheduleTask {
 
                 ongoing.remove(eduYearSerialNo);
                 redisUtil.set(taskKey, ongoing);
-                insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId);
+                insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId, startDateStr, endDateStr);
                 //恢复挂起的流程
                 restoreCourseAdjust(processIds);
                 //处理该日期内已经审批通过的调课和顶课申请
@@ -263,7 +263,7 @@ public class JianyuekbScheduleTask {
         }
     }
 
-    void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Long courseReceiveMsgId){
+    void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Long courseReceiveMsgId, String startDate, String endDate){
         //获取年级
         String tableName = "base_grade";
 //            Map<String, Long> gradeMap = dataMap.get(tableName);
@@ -283,7 +283,8 @@ public class JianyuekbScheduleTask {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId);
+        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap,
+                teacherMap, classMap, courseReceiveMsgId, startDate, endDate);
         sendMsg(techerIds, courseReceiveMsgId);
         dataUtil.insertClassTime(scheduleInfo);
     }

+ 1 - 0
src/main/java/com/xjrsoft/module/material/controller/MaterialTaskController.java

@@ -111,6 +111,7 @@ public class MaterialTaskController {
 
         MPJLambdaWrapper<MaterialTask> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper
+                .orderByDesc(MaterialTask::getId)
                 .disableLogicDel()
 //                .eq(MaterialTask::getCreateUserId, StpUtil.getLoginIdAsLong())
                 .like(StrUtil.isNotBlank(dto.getName()), MaterialTask::getName, dto.getName())

+ 1 - 1
src/main/java/com/xjrsoft/module/room/controller/RoomBedAdjustController.java

@@ -94,7 +94,7 @@ public class RoomBedAdjustController {
             if(classList != null && !classList.isEmpty()){
                 dto.setClassId(classList.get(0).getId());
             }
-            //dto.setIsTeacher(1);
+            dto.setIsTeacher(1);
         }
         List<AdjustBedStudentPageVo> result = roomBedService.getBedStudetInfo(dto);
         if (result == null) {

+ 2 - 0
src/main/java/com/xjrsoft/module/room/dto/AdjustBedPageDto.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.room.dto;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.xjrsoft.common.page.PageInput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -40,6 +41,7 @@ public class AdjustBedPageDto extends PageInput {
     @ApiModelProperty("寝室id")
     public Long roomId;
 
+    @JsonIgnore
     @ApiModelProperty("是否是班主任(1:是,0:否)")
     public Integer isTeacher;
 

+ 21 - 13
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -581,6 +581,22 @@ public class DataUtil {
         return asJsonObject.get("data").getAsJsonArray();
     }
 
+    public JsonArray getScheduleInfoByClass(String classSerialNo, String startDate, String endDate) throws Exception {
+        JsonParser jsonParser = new JsonParser();
+        String url  = ScheduleUtil.apiUrl + "TimeTable/List";
+        //获取时间戳
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("classSerialNo", classSerialNo);
+        jsonObject.addProperty("startDate", startDate);
+        jsonObject.addProperty("endDate", endDate);
+        String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
+        JsonObject asJsonObject = jsonParser.parse(result).getAsJsonObject();
+        return asJsonObject.get("data").getAsJsonArray();
+    }
+
     /**
      *
      * @param data 接口数据
@@ -649,26 +665,18 @@ public class DataUtil {
 
     public Set<String> insertCourseTableEntiy(JsonArray data, Map<String, String> classroomMap, Map<String, String> coureseMap,
                                   Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap
-            , Long courseReceiveMsgId) {
-
-        String sql = "SELECT CONCAT(schedule_date,class_id,time_number) AS only_key,id FROM course_table";
+            , Long courseReceiveMsgId, String startDate, String endDate) {
+        String sql = "SELECT jianyue_id FROM course_table" +
+                " where schedule_date between '" + startDate + "' and '" + endDate + "'";
         List<Map<String, Object>> oldDataList = SqlRunnerAdapter.db().selectList(sql);
-        Map<String, String> oldDataMap = new HashMap<>();
+        Set<String> serialNos = new HashSet<>();
         for (Map<String, Object> objectMap : oldDataList) {
-            oldDataMap.put(objectMap.get("only_key").toString(), objectMap.get("id").toString());
+            serialNos.add(objectMap.get("jianyue_id").toString());
         }
         Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
         String tableName = "course_table";
         List<Entity> entityList = new ArrayList();
         SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
-        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList("select * from course_table");
-        Set<String> serialNos = new HashSet<>();
-        for (Map<String, Object> objectMap : list) {
-            if(objectMap.get("jianyue_id") == null){
-                continue;
-            }
-            serialNos.add(objectMap.get("jianyue_id").toString());
-        }
         Set<String> teacherIdList = new HashSet<>();
         for (JsonElement jsonElement : data) {
             JsonObject asJsonObject = jsonElement.getAsJsonObject();

+ 10 - 0
src/main/java/com/xjrsoft/module/student/service/impl/StudentChangeRecordServiceImpl.java

@@ -3,6 +3,8 @@ package com.xjrsoft.module.student.service.impl;
 import cn.hutool.db.Entity;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.enums.RoomApplicantTypeEnum;
 import com.xjrsoft.common.enums.StudentChangeTypeEnum;
 import com.xjrsoft.common.enums.StudyStatusEnum;
@@ -57,6 +59,8 @@ public class StudentChangeRecordServiceImpl extends MPJBaseServiceImpl<StudentCh
             setChangeType(StudentChangeTypeEnum.ChangeClass.getCode());
             setUserId(changeClass.getStudentUserId());
             setCreateDate(new Date());
+            setDeleteMark(DeleteMark.NODELETE.getCode());
+            setEnabledMark(EnabledMark.ENABLED.getCode());
             setCreateUserId(changeClass.getCreateUserId());
             setOperateMode(2);
         }};
@@ -88,6 +92,8 @@ public class StudentChangeRecordServiceImpl extends MPJBaseServiceImpl<StudentCh
             setCreateDate(new Date());
             setCreateUserId(Long.parseLong(objectMap.get("create_user_id").toString()));
             setOperateMode(2);
+            setDeleteMark(DeleteMark.NODELETE.getCode());
+            setEnabledMark(EnabledMark.ENABLED.getCode());
         }};
 
         return this.save(record);
@@ -114,6 +120,8 @@ public class StudentChangeRecordServiceImpl extends MPJBaseServiceImpl<StudentCh
             setCreateDate(new Date());
             setCreateUserId(wfRoomApplicant.getCreateUserId());
             setOperateMode(2);
+            setDeleteMark(DeleteMark.NODELETE.getCode());
+            setEnabledMark(EnabledMark.ENABLED.getCode());
         }};
 
         return this.save(record);
@@ -143,6 +151,8 @@ public class StudentChangeRecordServiceImpl extends MPJBaseServiceImpl<StudentCh
             setCreateDate(new Date());
             setCreateUserId(createUserId);
             setOperateMode(operateMode);
+            setDeleteMark(DeleteMark.NODELETE.getCode());
+            setEnabledMark(EnabledMark.ENABLED.getCode());
         }};
 
         return this.save(record);

+ 12 - 3
src/main/resources/mapper/room/RoomBedMapper.xml

@@ -335,7 +335,7 @@
         LEFT JOIN base_grade t9 ON t7.grade_id = t9.id
         left join xjr_user t10 on t8.teacher_id = t10.id
         WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
-        <if test="dto.isEmptyRoom != null">
+        <if test="dto.isTeacher == null and dto.isEmptyRoom != null">
             <if test="dto.isEmptyRoom == 1">
                 and t2.bed_count = (SELECT COUNT(*) FROM room_bed WHERE delete_mark = 0 AND student_user_id IS NULL AND room_id = t2.id)
             </if>
@@ -358,12 +358,21 @@
         <if test="dto.floorNumber != null">
             and t2.floor_number = #{dto.floorNumber}
         </if>
-        <if test="dto.classId != null">
-            AND t2.id IN (
+        <if test="dto.classId != null and dto.isTeacher != null and dto.isTeacher == 1">
+            AND (t2.id IN (
             SELECT DISTINCT c1.room_id FROM room_bed c1
             INNER JOIN base_student_school_roll c2 ON c1.student_user_id = c2.user_id
             WHERE c2.class_id = #{dto.classId}
             )
+            <if test="dto.isEmptyRoom != null">
+                <if test="dto.isEmptyRoom == 1">
+                    or t2.bed_count = (SELECT COUNT(*) FROM room_bed WHERE delete_mark = 0 AND student_user_id IS NULL AND room_id = t2.id)
+                </if>
+                <if test="dto.isEmptyRoom == 0">
+                    or t2.bed_count != (SELECT COUNT(*) FROM room_bed WHERE delete_mark = 0 AND student_user_id IS NULL AND room_id = t2.id)
+                </if>
+            </if>
+            )
         </if>
         <if test="dto.buildId != null">
             and t3.id = #{dto.buildId}

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

@@ -113,7 +113,7 @@ class JianyuekbScheduleTaskTest {
 
                 String endDate = endTime.format(formatter);
                 //获取课表并存到数据库
-                JsonArray scheduleInfo = dataUtil.getScheduleInfoByGrade(eduYearSerialNo, startDate, endDate);
+                JsonArray scheduleInfo = dataUtil.getScheduleInfoByClass(eduYearSerialNo, startDate, endDate);
                 allScheduleInfo.addAll(scheduleInfo);
             }
 
@@ -167,7 +167,7 @@ class JianyuekbScheduleTaskTest {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null);
+        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null, null, null);
         dataUtil.insertClassTime(scheduleInfo);
     }
 

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

@@ -282,7 +282,7 @@ class JianyuekbScheduleTaskTest2 {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId);
+        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId, null, null);
         sendMsg(techerIds, courseReceiveMsgId);
         dataUtil.insertClassTime(scheduleInfo);
     }

+ 107 - 0
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest3.java

@@ -0,0 +1,107 @@
+package com.xjrsoft.module.job;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.XjrSoftApplication;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.module.schedule.util.DataUtil;
+import com.xjrsoft.module.schedule.util.ScheduleUtil;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * @author dzx
+ * @date 2025/2/20
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = XjrSoftApplication.class)
+class JianyuekbScheduleTaskTest3 {
+
+
+    @Test
+    void test() throws Exception {
+        String startDate = "2025-02-24";
+        String endDate = "2025-03-02";
+        String classSerialNo = "CLA000001422";
+        String url  = ScheduleUtil.apiUrl + "TimeTable/List";
+        JsonObject pageJson = new JsonObject();
+        pageJson.addProperty("classSerialNo", classSerialNo);
+        pageJson.addProperty("startDate", startDate);
+        pageJson.addProperty("endDate", endDate);
+        JsonParser parser = new JsonParser();
+
+        long timestamp = System.currentTimeMillis();
+        String sign = ScheduleUtil.createSign(timestamp);
+
+
+        String doPost = ScheduleUtil.doPost(url, pageJson.toString(), sign, timestamp);
+        System.out.println(doPost);
+    }
+
+    @Test
+    void test1() throws Exception {
+        DataUtil dataUtil = new DataUtil();
+        String startDate = "2025-02-24";
+        String endDate = "2025-03-02";
+        String classSerialNo = "CLA000001422";
+        JsonArray scheduleInfo = dataUtil.getScheduleInfoByClass(classSerialNo, startDate, endDate);
+        doExecute(scheduleInfo, startDate, endDate);
+    }
+
+
+    void doExecute(JsonArray scheduleInfo, String startDate, String endDate){
+        String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
+        List<Map<String, Object>> query = SqlRunnerAdapter.db().selectList(sql);
+        Set<String> tables = new HashSet<>();
+        for (Map<String, Object> jianyueData : query) {
+            tables.add(jianyueData.get("table_name").toString());
+        }
+        sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
+        Map<String, Map<String, String>> dataMap = new HashMap<>();
+        for (String table : tables) {
+            Map<String, String> tableData = new HashMap<>();
+            for (Map<String, Object> jianyueData : list) {
+                if(!table.equals(jianyueData.get("table_name").toString())){
+                    continue;
+                }
+                tableData.put(jianyueData.get("jianyue_id").toString(), jianyueData.get("source_id").toString());
+            }
+            dataMap.put(table, tableData);
+        }
+        DataUtil dataUtil = new DataUtil();
+        //获取年级
+        String tableName = "base_grade";
+//            Map<String, Long> gradeMap = dataMap.get(tableName);
+        //获取学期
+        tableName = "base_semester";
+        Map<String, String> semesterMap = dataMap.get(tableName);
+        //获取课程
+        tableName = "base_course_subject";
+        Map<String, String> courseMap = dataMap.get(tableName);
+        //获取教职工
+        tableName = "base_teacher";
+        Map<String, String> teacherMap = dataMap.get(tableName);
+        //获取行政班
+        tableName = "base_class";
+        Map<String, String> classMap = dataMap.get(tableName);
+
+        tableName = "base_classroom";
+        Map<String, String> classroomMap = dataMap.get(tableName);
+
+        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null, startDate, endDate);
+        dataUtil.insertClassTime(scheduleInfo);
+    }
+
+}