Bladeren bron

Merge branch 'pre'

dzx 1 jaar geleden
bovenliggende
commit
63aa65426f

+ 3 - 0
src/main/java/com/xjrsoft/common/utils/SqlRunnerAdapterUtil.java

@@ -1,6 +1,8 @@
 package com.xjrsoft.common.utils;
 
 import java.lang.reflect.Field;
+import java.sql.Time;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -97,4 +99,5 @@ public class SqlRunnerAdapterUtil {
 
         return dataList.toArray(new Integer[dataList.size()]);
     }
+
 }

+ 17 - 17
src/main/java/com/xjrsoft/module/attendance/entity/AttendanceRuleDetails.java

@@ -10,7 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.time.LocalTime;
+import java.sql.Time;
 import java.util.Date;
 
 
@@ -114,12 +114,12 @@ public class AttendanceRuleDetails implements Serializable {
     * 上午上学时间
     */
     @ApiModelProperty("上午上学时间")
-    private LocalTime amStartTime;
+    private Time amStartTime;
     /**
     * 上午放学时间
     */
     @ApiModelProperty("上午放学时间")
-    private LocalTime amEndTime;
+    private Time amEndTime;
     /**
     * 上午迟到旷课分钟数
     */
@@ -134,12 +134,12 @@ public class AttendanceRuleDetails implements Serializable {
     * 上午为节假日前一天时上学时间
     */
     @ApiModelProperty("上午为节假日前一天时上学时间")
-    private LocalTime amHolidaysStartTime;
+    private Time amHolidaysStartTime;
     /**
     * 上午为节假日前一天时放学时间
     */
     @ApiModelProperty("上午为节假日前一天时放学时间")
-    private LocalTime amHolidaysEndTime;
+    private Time amHolidaysEndTime;
     /**
     * 下午是否启用(1:是 0:否)
     */
@@ -149,12 +149,12 @@ public class AttendanceRuleDetails implements Serializable {
     * 下午上学时间
     */
     @ApiModelProperty("下午上学时间")
-    private LocalTime pmStartTime;
+    private Time pmStartTime;
     /**
     * 下午放学时间
     */
     @ApiModelProperty("下午放学时间")
-    private LocalTime pmEndTime;
+    private Time pmEndTime;
     /**
     * 下午迟到旷课分钟数
     */
@@ -169,12 +169,12 @@ public class AttendanceRuleDetails implements Serializable {
     * 下午为节假日前一天时上学时间
     */
     @ApiModelProperty("下午为节假日前一天时上学时间")
-    private LocalTime pmHolidaysStartTime;
+    private Time pmHolidaysStartTime;
     /**
     * 下午为节假日前一天时放学时间
     */
     @ApiModelProperty("下午为节假日前一天时放学时间")
-    private LocalTime pmHolidaysEndTime;
+    private Time pmHolidaysEndTime;
     /**
     * 晚上是否启用(1:是 0:否)
     */
@@ -184,12 +184,12 @@ public class AttendanceRuleDetails implements Serializable {
     * 晚上上学时间
     */
     @ApiModelProperty("晚上上学时间")
-    private LocalTime eveningStartTime;
+    private Time eveningStartTime;
     /**
     * 晚上放学时间
     */
     @ApiModelProperty("晚上放学时间")
-    private LocalTime eveningEndTime;
+    private Time eveningEndTime;
     /**
     * 晚上迟到旷课分钟数
     */
@@ -204,12 +204,12 @@ public class AttendanceRuleDetails implements Serializable {
     * 晚上为节假日前一天时上学时间
     */
     @ApiModelProperty("晚上为节假日前一天时上学时间")
-    private LocalTime eveningHolidaysStartTime;
+    private Time eveningHolidaysStartTime;
     /**
     * 晚上为节假日前一天时放学时间
     */
     @ApiModelProperty("晚上为节假日前一天时放学时间")
-    private LocalTime eveningHolidaysEndTime;
+    private Time eveningHolidaysEndTime;
     /**
     * 考勤规则(attendance_rule_category)
     */
@@ -221,14 +221,14 @@ public class AttendanceRuleDetails implements Serializable {
     private Integer holidaysLastDayInOut;
 
     @ApiModelProperty("返校上学时间")
-    private LocalTime returnStartTime;
+    private Time returnStartTime;
 
     @ApiModelProperty("返校放学时间")
-    private LocalTime returnEndTime;
+    private Time returnEndTime;
 
     @ApiModelProperty("节假日迟到旷课时间")
-    private Integer holidaysLateMinutes;
+    private Time holidaysLateMinutes;
 
     @ApiModelProperty("为节假日前一天时放学时间")
-    private LocalTime holidaysEndTime;
+    private Time holidaysEndTime;
 }

+ 9 - 0
src/main/java/com/xjrsoft/module/attendance/entity/AttendanceUserRelation.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 
@@ -91,4 +92,12 @@ public class AttendanceUserRelation implements Serializable {
     private Long attendanceRuleCategoryId;
 
 
+    @ApiModelProperty("考勤状态")
+    private String attendanceStatus;
+
+
+    @ApiModelProperty("最新考勤时间")
+    private LocalDateTime attendanceTime;
+
+
 }

+ 56 - 30
src/main/java/com/xjrsoft/module/hikvision/util/OutInRecordUtil.java

@@ -34,6 +34,11 @@ public class OutInRecordUtil {
                 "VALUES(now(), '"  + userId + "', '" + recordTime + "', '" +
                 photoValue + "', '" + eventId + "', '" +status + "',0,1,'" + attendanceStatus + "')";
         SqlRunnerAdapter.db().insert(sql);
+
+        String updSql = "UPDATE attendance_user_relation SET " +
+                "attendance_status = '" + attendanceStatus + "', attendance_time = '" + recordTime + "' " +
+                "WHERE user_id = '" + userId + "' AND delete_mark = 0";
+        SqlRunnerAdapter.db().update(updSql);
     }
 
     private void studentInsertRecord(Long userId, Long teacherId, Long classId, String facePhoto, String recordTime, int status, String eventId, String attendanceStatus){
@@ -43,6 +48,11 @@ public class OutInRecordUtil {
                 "VALUES(now(), '" + userId + "', '" + teacherId + "', '" +
                 classId + "', '" + photoValue + "', '" + recordTime + "', '" + eventId + "', '" + status + "',0,1,'" + attendanceStatus + "')";
         SqlRunnerAdapter.db().insert(sql);
+
+        String updSql = "UPDATE attendance_user_relation SET " +
+                "attendance_status = '" + attendanceStatus + "', attendance_time = '" + recordTime + "' " +
+                "WHERE user_id = '" + userId + "' AND delete_mark = 0";
+        SqlRunnerAdapter.db().update(updSql);
     }
 
 
@@ -80,6 +90,22 @@ public class OutInRecordUtil {
 
         SqlRunnerAdapter.db().dynamicInsert(tableName, where);
 
+        //车辆入库后,判定教师考情状态
+        if(carMessageApplyId != 0){
+            String selectTable = "car_message_apply";
+            Entity selectWhere = Entity.create(tableName);
+            selectWhere.set("car_message_apply_id", carMessageApplyId);
+            selectWhere.set("plan_no", planNo);
+            Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(selectTable, selectWhere);
+            Long userId = Long.parseLong(objectMap.get("user_id").toString());
+            LocalDateTime recordTimeDate = LocalDateTime.parse(recordTime);
+            String attendanceStatus = discernTeacherStatus(recordTimeDate, status, userId);
+
+            String updSql = "UPDATE attendance_user_relation SET " +
+                    "attendance_status = '" + attendanceStatus + "', attendance_time = '" + recordTime + "' " +
+                    "WHERE user_id = '" + userId + "' AND delete_mark = 0";
+            SqlRunnerAdapter.db().update(updSql);
+        }
     }
 
     public void GetTeacherAndStudentRecords(FaceImportMapper faceImportMapper) throws ParseException {
@@ -175,20 +201,20 @@ public class OutInRecordUtil {
                 } else {
                     LocalDateTime amStartTime = null, amEndTime = null, pmStartTime = null, pmEndTime = null, eveningStartTime = null, eveningEndTime = null;
                     if (ruleDetails.getAmStatus() != null && ruleDetails.getAmStatus() == 1) {
-                        amStartTime = recordTime.withHour(ruleDetails.getAmStartTime().getHour())
-                                .withMinute(ruleDetails.getAmStartTime().getMinute())
-                                .withSecond(ruleDetails.getAmStartTime().getSecond());
-                        amEndTime = recordTime.withHour(ruleDetails.getAmEndTime().getHour())
-                                .withMinute(ruleDetails.getAmEndTime().getMinute())
-                                .withSecond(ruleDetails.getAmEndTime().getSecond());
+                        amStartTime = recordTime.withHour(ruleDetails.getAmStartTime().toLocalTime().getHour())
+                                .withMinute(ruleDetails.getAmStartTime().toLocalTime().getMinute())
+                                .withSecond(ruleDetails.getAmStartTime().toLocalTime().getSecond());
+                        amEndTime = recordTime.withHour(ruleDetails.getAmEndTime().toLocalTime().getHour())
+                                .withMinute(ruleDetails.getAmEndTime().toLocalTime().getMinute())
+                                .withSecond(ruleDetails.getAmEndTime().toLocalTime().getSecond());
                     }
                     if (ruleDetails.getPmStatus() != null && ruleDetails.getPmStatus() == 1) {
-                        pmStartTime = recordTime.withHour(ruleDetails.getPmStartTime().getHour())
-                                .withMinute(ruleDetails.getPmStartTime().getMinute())
-                                .withSecond(ruleDetails.getPmStartTime().getSecond());
-                        pmEndTime = recordTime.withHour(ruleDetails.getPmEndTime().getHour())
-                                .withMinute(ruleDetails.getPmEndTime().getMinute())
-                                .withSecond(ruleDetails.getPmEndTime().getSecond());
+                        pmStartTime = recordTime.withHour(ruleDetails.getPmStartTime().toLocalTime().getHour())
+                                .withMinute(ruleDetails.getPmStartTime().toLocalTime().getMinute())
+                                .withSecond(ruleDetails.getPmStartTime().toLocalTime().getSecond());
+                        pmEndTime = recordTime.withHour(ruleDetails.getPmEndTime().toLocalTime().getHour())
+                                .withMinute(ruleDetails.getPmEndTime().toLocalTime().getMinute())
+                                .withSecond(ruleDetails.getPmEndTime().toLocalTime().getSecond());
                     }
                     if (status == 0) {//出
                         if (recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)) {
@@ -229,28 +255,28 @@ public class OutInRecordUtil {
             }else{
                 LocalDateTime amStartTime = null, amEndTime = null, pmStartTime = null, pmEndTime = null, eveningStartTime = null, eveningEndTime = null;
                 if(ruleDetails.getAmStatus() != null && ruleDetails.getAmStatus() == 1){
-                    amStartTime = recordTime.withHour(ruleDetails.getAmStartTime().getHour())
-                            .withMinute(ruleDetails.getAmStartTime().getMinute())
-                            .withSecond(ruleDetails.getAmStartTime().getSecond());
-                    amEndTime = recordTime.withHour(ruleDetails.getAmEndTime().getHour())
-                            .withMinute(ruleDetails.getAmEndTime().getMinute())
-                            .withSecond(ruleDetails.getAmEndTime().getSecond());
+                    amStartTime = recordTime.withHour(ruleDetails.getAmStartTime().toLocalTime().getHour())
+                            .withMinute(ruleDetails.getAmStartTime().toLocalTime().getMinute())
+                            .withSecond(ruleDetails.getAmStartTime().toLocalTime().getSecond());
+                    amEndTime = recordTime.withHour(ruleDetails.getAmEndTime().toLocalTime().getHour())
+                            .withMinute(ruleDetails.getAmEndTime().toLocalTime().getMinute())
+                            .withSecond(ruleDetails.getAmEndTime().toLocalTime().getSecond());
                 }
                 if(ruleDetails.getPmStatus() != null && ruleDetails.getPmStatus() == 1){
-                    pmStartTime = recordTime.withHour(ruleDetails.getPmStartTime().getHour())
-                            .withMinute(ruleDetails.getPmStartTime().getMinute())
-                            .withSecond(ruleDetails.getPmStartTime().getSecond());
-                    pmEndTime = recordTime.withHour(ruleDetails.getPmEndTime().getHour())
-                            .withMinute(ruleDetails.getPmEndTime().getMinute())
-                            .withSecond(ruleDetails.getPmEndTime().getSecond());
+                    pmStartTime = recordTime.withHour(ruleDetails.getPmStartTime().toLocalTime().getHour())
+                            .withMinute(ruleDetails.getPmStartTime().toLocalTime().getMinute())
+                            .withSecond(ruleDetails.getPmStartTime().toLocalTime().getSecond());
+                    pmEndTime = recordTime.withHour(ruleDetails.getPmEndTime().toLocalTime().getHour())
+                            .withMinute(ruleDetails.getPmEndTime().toLocalTime().getMinute())
+                            .withSecond(ruleDetails.getPmEndTime().toLocalTime().getSecond());
                 }
                 if(ruleDetails.getEveningStatus() != null && ruleDetails.getEveningStatus() == 1){
-                    eveningStartTime = recordTime.withHour(ruleDetails.getEveningStartTime().getHour())
-                            .withMinute(ruleDetails.getEveningStartTime().getMinute())
-                            .withSecond(ruleDetails.getEveningStartTime().getSecond());
-                    eveningEndTime = recordTime.withHour(ruleDetails.getEveningEndTime().getHour())
-                            .withMinute(ruleDetails.getEveningEndTime().getMinute())
-                            .withSecond(ruleDetails.getEveningEndTime().getSecond());
+                    eveningStartTime = recordTime.withHour(ruleDetails.getEveningStartTime().toLocalTime().getHour())
+                            .withMinute(ruleDetails.getEveningStartTime().toLocalTime().getMinute())
+                            .withSecond(ruleDetails.getEveningStartTime().toLocalTime().getSecond());
+                    eveningEndTime = recordTime.withHour(ruleDetails.getEveningEndTime().toLocalTime().getHour())
+                            .withMinute(ruleDetails.getEveningEndTime().toLocalTime().getMinute())
+                            .withSecond(ruleDetails.getEveningEndTime().toLocalTime().getSecond());
                 }
                 if(status == 0){//出
                     if(recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)){

+ 14 - 3
src/main/java/com/xjrsoft/module/job/AttenDanceWarnNoticeTask.java

@@ -12,6 +12,8 @@ import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
 import com.xjrsoft.module.concat.service.IXjrUserService;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
 import com.xjrsoft.module.organization.service.IWeChatService;
+import com.xjrsoft.module.outint.service.IStudentOutInRecordService;
+import com.xjrsoft.module.outint.service.ITeacherOutInRecordService;
 import com.xjrsoft.module.system.entity.WechatMessageLog;
 import com.xjrsoft.module.system.service.IWechatMessageLogService;
 import com.xjrsoft.module.teacher.entity.XjrUser;
@@ -84,6 +86,11 @@ public class AttenDanceWarnNoticeTask {
             allTodyRule.put(userRelation.getUserId(), ruleDetailsMap.get(userRelation.getAttendanceRuleCategoryId()));
         }
 
+        Map<Long, AttendanceUserRelation> allUserStatus = new HashMap<>();
+        for (AttendanceUserRelation userRelation : relationList) {
+            allUserStatus.put(userRelation.getUserId(), userRelation);
+        }
+
         //判断所有当前时间下,哪几条规则需要进行提醒
         Map<Long, Integer> ruleDetailsJudgeMap = judgeExecuteNotice(now, ruleDetailsList);
 
@@ -106,6 +113,10 @@ public class AttenDanceWarnNoticeTask {
             if(status == 0){
                 continue;
             }
+            AttendanceUserRelation userRelation = allUserStatus.get(xjrUser.getId());
+            if(userRelation.getAttendanceTime().toLocalDate().isEqual(now.toLocalDate())){
+
+            }
 
             WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
             weChatSendMessageDto.setUserId(xjrUser.getOpenId());
@@ -152,7 +163,7 @@ public class AttenDanceWarnNoticeTask {
             if(ruleDetails.getIsAllowInOutSchool() != null && ruleDetails.getIsAllowInOutSchool() != 1
                     && ruleDetails.getIsAttendance() != null && ruleDetails.getIsAttendance() == 1){
                 if(ruleDetails.getAmStartTime() != null){
-                    LocalDateTime amStartTime = judgeTime.with(ruleDetails.getAmStartTime());
+                    LocalDateTime amStartTime = judgeTime.with(ruleDetails.getAmStartTime().toLocalTime());
                     long amBetween = ChronoUnit.MINUTES.between(judgeTime, amStartTime);
                     if(amBetween == ruleDetails.getAgoMinutes()){
                         result.put(ruleDetails.getId(), - 1);
@@ -161,7 +172,7 @@ public class AttenDanceWarnNoticeTask {
                     }
                 }
                 if(ruleDetails.getPmStartTime() != null){
-                    LocalDateTime pmStartTime = judgeTime.with(ruleDetails.getPmStartTime());
+                    LocalDateTime pmStartTime = judgeTime.with(ruleDetails.getPmStartTime().toLocalTime());
                     long pmBetween = ChronoUnit.MINUTES.between(judgeTime, pmStartTime);
                     if(pmBetween == ruleDetails.getAgoMinutes()){
                         result.put(ruleDetails.getId(), - 1);
@@ -171,7 +182,7 @@ public class AttenDanceWarnNoticeTask {
                 }
 
                 if(ruleDetails.getEveningStartTime() != null){
-                    LocalDateTime eveningStartTime = judgeTime.with(ruleDetails.getEveningStartTime());
+                    LocalDateTime eveningStartTime = judgeTime.with(ruleDetails.getEveningStartTime().toLocalTime());
                     long eveningBetween = ChronoUnit.MINUTES.between(judgeTime, eveningStartTime);
                     if(eveningBetween == ruleDetails.getAgoMinutes()){
                         result.put(ruleDetails.getId(), - 1);

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

@@ -274,16 +274,16 @@ public class AttendanceMessageTask {
             if(ruleDetail.getIsAllowInOutSchool() != null && ruleDetail.getIsAllowInOutSchool() == 1
                     && ruleDetail.getIsAttendance() != null && ruleDetail.getIsAttendance() == 1){
                 if(ruleDetail.getAmStartTime() != null){
-                    LocalDateTime amStartTime = now.with(ruleDetail.getAmStartTime());
+                    LocalDateTime amStartTime = now.with(ruleDetail.getAmStartTime().toLocalTime());
                     result.add(amStartTime);
                 }
                 if(ruleDetail.getPmStartTime() != null){
-                    LocalDateTime pmStartTime = now.with(ruleDetail.getPmStartTime());
+                    LocalDateTime pmStartTime = now.with(ruleDetail.getPmStartTime().toLocalTime());
                     result.add(pmStartTime);
                 }
 
                 if(ruleDetail.getEveningStartTime() != null){
-                    LocalDateTime eveningStartTime = now.with(ruleDetail.getEveningStartTime());
+                    LocalDateTime eveningStartTime = now.with(ruleDetail.getEveningStartTime().toLocalTime());
                     result.add(eveningStartTime);
                 }
             }

+ 2 - 2
src/main/java/com/xjrsoft/module/job/JianyuekbBaseDataTask.java

@@ -38,8 +38,8 @@ public class JianyuekbBaseDataTask {
             List<Map<String, Object>> query = SqlRunnerAdapter.db().selectList(sql, JianyueData.class);
             Set<String> tables = new HashSet<>();
             for (Map<String, Object> queryMap : query) {
-                JianyueData jianyueData = SqlRunnerAdapterUtil.convertMapToEntity(queryMap, JianyueData.class);
-                tables.add(jianyueData.getTableName());
+                String[] strings = SqlRunnerAdapterUtil.convertMapToStringArray(queryMap);
+                tables.add(strings[0]);
             }
             sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
             List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, JianyueData.class);

+ 1 - 1
src/main/resources/application.yml

@@ -5,7 +5,7 @@ server:
 spring:
   # 环境 dev|pre|prod
   profiles:
-    active: prod
+    active: dev
   # jackson时间格式化
   jackson:
     time-zone: GMT+8

+ 60 - 10
src/test/java/com/xjrsoft/module/hikvision/util/OutInRecordUtilTest2.java

@@ -1,17 +1,15 @@
 package com.xjrsoft.module.hikvision.util;
 
-import cn.hutool.core.util.IdUtil;
-import cn.hutool.db.Entity;
 import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
+import com.xjrsoft.module.attendance.entity.AttendanceRuleDetails;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 
 import java.time.LocalDateTime;
-import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
-import static org.junit.jupiter.api.Assertions.*;
-
 /**
  * @author dzx
  * @date 2024/6/17
@@ -20,11 +18,63 @@ import static org.junit.jupiter.api.Assertions.*;
 class OutInRecordUtilTest2 {
     @Test
     void test(){
-        String tableName = "table_25505";
-        Entity where = Entity.create(tableName);
-        where.set("id", IdUtil.getSnowflakeNextId());
-        where.set("ming_chen5366", "2024年6月17日08:44:06");
-        SqlRunnerAdapter.db().dynamicInsert(tableName, where);
+        LocalDateTime recentlyTime = LocalDateTime.now().withHour(8).withMinute(5).withSecond(0).withNano(0);
+        discernTeacherStatus(recentlyTime, 0 , 1793924355747000321L);
+
+    }
 
+    String discernTeacherStatus(LocalDateTime recordTime, int status, Long userId){
+        String attendanceStatus = "";
+        String dayOfWeek = recordTime.getDayOfWeek().name();
+        String sql = "SELECT t2.* FROM attendance_rule_category t1" +
+                " INNER JOIN attendance_rule_details t2 ON t1.id = t2.attendance_rule_category_id" +
+                " INNER JOIN attendance_user_relation t3 ON t1.id = t3.attendance_rule_category_id" +
+                " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND NOW() BETWEEN start_date AND end_date" +
+                " AND t2.date_type = '" + dayOfWeek + "' and t3.user_id = " + userId;
+        List<Map<String, Object>> ruleDetailsList = SqlRunnerAdapter.db().selectList(sql, AttendanceRuleDetails.class);
+        if(!ruleDetailsList.isEmpty()){
+            AttendanceRuleDetails ruleDetails = SqlRunnerAdapterUtil.convertMapToEntity(ruleDetailsList.get(0), AttendanceRuleDetails.class);
+            if (ruleDetails != null) {
+                if (ruleDetails.getIsAttendance() != null && ruleDetails.getIsAttendance() == 0) {
+                    attendanceStatus = "不考勤";
+                } else {
+                    LocalDateTime amStartTime = null, amEndTime = null, pmStartTime = null, pmEndTime = null, eveningStartTime = null, eveningEndTime = null;
+                    if (ruleDetails.getAmStatus() != null && ruleDetails.getAmStatus() == 1) {
+                        amStartTime = recordTime.withHour(ruleDetails.getAmStartTime().toLocalTime().getHour())
+                                .withMinute(ruleDetails.getAmStartTime().toLocalTime().getMinute())
+                                .withSecond(ruleDetails.getAmStartTime().toLocalTime().getSecond());
+                        amEndTime = recordTime.withHour(ruleDetails.getAmEndTime().toLocalTime().getHour())
+                                .withMinute(ruleDetails.getAmEndTime().toLocalTime().getMinute())
+                                .withSecond(ruleDetails.getAmEndTime().toLocalTime().getSecond());
+                    }
+                    if (ruleDetails.getPmStatus() != null && ruleDetails.getPmStatus() == 1) {
+                        pmStartTime = recordTime.withHour(ruleDetails.getPmStartTime().toLocalTime().getHour())
+                                .withMinute(ruleDetails.getPmStartTime().toLocalTime().getMinute())
+                                .withSecond(ruleDetails.getPmStartTime().toLocalTime().getSecond());
+                        pmEndTime = recordTime.withHour(ruleDetails.getPmEndTime().toLocalTime().getHour())
+                                .withMinute(ruleDetails.getPmEndTime().toLocalTime().getMinute())
+                                .withSecond(ruleDetails.getPmEndTime().toLocalTime().getSecond());
+                    }
+                    if (status == 0) {//出
+                        if (recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)) {
+                            attendanceStatus = "早退";
+                        } else if (recordTime.isBefore(pmEndTime) && recordTime.isAfter(pmStartTime)) {
+                            attendanceStatus = "早退";
+                        } else {
+                            attendanceStatus = "离校";
+                        }
+                    } else {//进
+                        if (recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)) {
+                            attendanceStatus = "迟到";
+                        } else if (recordTime.isBefore(pmEndTime) && recordTime.isAfter(pmStartTime)) {
+                            attendanceStatus = "迟到";
+                        } else {
+                            attendanceStatus = "到校";
+                        }
+                    }
+                }
+            }
+        }
+        return attendanceStatus;
     }
 }

+ 3 - 3
src/test/java/com/xjrsoft/module/job/AttendanceMessageTaskTest.java

@@ -316,16 +316,16 @@ class AttendanceMessageTaskTest {
             if(ruleDetail.getIsAllowInOutSchool() != null && ruleDetail.getIsAllowInOutSchool() == 1
                     && ruleDetail.getIsAttendance() != null && ruleDetail.getIsAttendance() == 1){
                 if(ruleDetail.getAmStartTime() != null){
-                    LocalDateTime amStartTime = now.with(ruleDetail.getAmStartTime());
+                    LocalDateTime amStartTime = now.with(ruleDetail.getAmStartTime().toLocalTime());
                     result.add(amStartTime);
                 }
                 if(ruleDetail.getPmStartTime() != null){
-                    LocalDateTime pmStartTime = now.with(ruleDetail.getPmStartTime());
+                    LocalDateTime pmStartTime = now.with(ruleDetail.getPmStartTime().toLocalTime());
                     result.add(pmStartTime);
                 }
 
                 if(ruleDetail.getEveningStartTime() != null){
-                    LocalDateTime eveningStartTime = now.with(ruleDetail.getEveningStartTime());
+                    LocalDateTime eveningStartTime = now.with(ruleDetail.getEveningStartTime().toLocalTime());
                     result.add(eveningStartTime);
                 }
             }

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

@@ -138,7 +138,7 @@ class HikvisionBaseDataTaskTest {
 //        selectCar(use, carTableName);
 
 //        outInRecordUtil.GetVehicleRecord(use,faceImportMapper);
-        outInRecordUtil.GetTeacherAndStudentRecords(use,faceImportMapper);
+        outInRecordUtil.GetTeacherAndStudentRecords(faceImportMapper);
 ////        selecAllPersonById(use);
 //        selectResource(use);
     }

+ 329 - 376
src/test/java/com/xjrsoft/module/job/JianyuekbBaseDataTaskTest.java

@@ -1,386 +1,339 @@
-//package com.xjrsoft.module.job;
-//
-//import cn.hutool.db.Db;
-//import com.google.gson.JsonArray;
-//import com.google.gson.JsonElement;
-//import com.google.gson.JsonObject;
-//import com.google.gson.JsonParser;
-//import com.xjrsoft.XjrSoftApplication;
-//import com.xjrsoft.common.constant.GlobalConstant;
-//import com.xjrsoft.common.utils.DatasourceUtil;
-//import com.xjrsoft.module.base.entity.BaseClass;
-//import com.xjrsoft.module.base.entity.BaseGrade;
-//import com.xjrsoft.module.schedule.entity.JianyueData;
-//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 javax.sql.DataSource;
-//import java.sql.SQLException;
-//import java.util.HashMap;
-//import java.util.HashSet;
-//import java.util.List;
-//import java.util.Map;
-//import java.util.Set;
-//
-///**
-// * @author dzx
-// * @date 2024/4/30
-// */
-//@RunWith(SpringRunner.class)
-//@SpringBootTest(classes = XjrSoftApplication.class)
-//class JianyuekbBaseDataTaskTest {
-//
-//
-//    @Test
-//    public void RefreshConnectionPool() {
-//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-//        try {
-//            Db use = Db.use(datasource);
-//            String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
-//            List<JianyueData> query = use.query(sql, JianyueData.class);
-//            Set<String> tables = new HashSet<>();
-//            for (JianyueData jianyueData : query) {
-//                tables.add(jianyueData.getTableName());
-//            }
-//            sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
-//            List<JianyueData> list = use.query(sql, JianyueData.class);
-//            Map<String, Map<String, String>> dataMap = new HashMap<>();
-//            for (String table : tables) {
-//                Map<String, String> tableData = new HashMap<>();
-//                for (JianyueData jianyueData : list) {
-//                    if(!table.equals(jianyueData.getTableName())){
-//                        continue;
-//                    }
-//                    tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-//                }
-//                dataMap.put(table, tableData);
-//            }
-//            DataUtil dataUtil = new DataUtil();
-//            //查询校区
-//            String tableName = "xjr_department";
-//            Map<String, String> districtMap = dataUtil.insertSchoolDistrict(use, tableName, dataMap.get(tableName));
-//            if(districtMap.isEmpty() && dataMap.get(tableName) != null){
-//                districtMap = dataMap.get(tableName);
-//            }
-//
-//            //推送年级
-//            JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
-//            tableName = "base_grade";
-//            Map<String, String> grade = dataUtil.insertGrade(use, tableName, districtMap, dataMap.get(tableName));
-//            if(grade.isEmpty() && dataMap.get(tableName) != null){
-//                grade = dataMap.get(tableName);
-//            }
-//
-//            //推送学期
-//            tableName = "base_semester";
-//            dataUtil.insertSemester(use, tableName, dataMap.get(tableName));
-//            //推送标签
-//            tableName = "base_label";
-//            Map<String, String> tagMap = dataUtil.insertCourseTag(use, tableName, dataMap.get(tableName));
-//            if(tagMap.isEmpty() && dataMap.get(tableName) != null){
-//                tagMap = dataMap.get(tableName);
-//            }
-//            //推送课程
-//            tableName = "base_course_subject";
-//            dataUtil.insertCourse(use, tableName, dataMap.get(tableName), tagMap);
-//            //推送教职工
-//            tableName = "base_teacher";
-//            Map<String, String> teacherMap = dataUtil.insertTeacher(use, tableName, dataMap.get(tableName));
-//            if(teacherMap.isEmpty() && dataMap.get(tableName) != null){
-//                teacherMap = dataMap.get(tableName);
-//            }
-//            //推送学生
-//            tableName = "base_student";
-//            dataUtil.insertStudent(use, tableName, grade, dataMap.get(tableName));
-//            //推送教室
-//            tableName = "base_classroom";
-//            Map<String, String> classroomMap = dataUtil.insertClassRoom(use, tableName, schoolDistrictData.get(0).getAsString(), dataMap.get(tableName));
-//            if(classroomMap.isEmpty() && dataMap.get(tableName) != null){
-//                classroomMap = dataMap.get(tableName);
-//            }
-//            //推送行政班,先查询当前学期id
-//            String currenSemeter = dataUtil.getCurrenSemeter();
-//            tableName = "base_class";
-//            dataUtil.insertClass(use, tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
-//
-//        } catch (Exception e) {
-//        }
-//    }
-//
-//    @Test
-//    public void RefreshConnectionPool2() {
-//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-//        try {
-//            Db use = Db.use(datasource);
-//            String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
-//            List<JianyueData> query = use.query(sql, JianyueData.class);
-//            Set<String> tables = new HashSet<>();
-//            for (JianyueData jianyueData : query) {
-//                tables.add(jianyueData.getTableName());
-//            }
-//            sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
-//            List<JianyueData> list = use.query(sql, JianyueData.class);
-//            Map<String, Map<String, String>> dataMap = new HashMap<>();
-//            for (String table : tables) {
-//                Map<String, String> tableData = new HashMap<>();
-//                for (JianyueData jianyueData : list) {
-//                    if(!table.equals(jianyueData.getTableName())){
-//                        continue;
-//                    }
-//                    tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-//                }
-//                dataMap.put(table, tableData);
-//            }
-//            DataUtil dataUtil = new DataUtil();
-//            //查询校区
-//            String tableName = "xjr_department";
-//
-//            //推送年级
-//            JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
-//            tableName = "base_grade";
-//            Map<String, String> grade = dataMap.get(tableName);
-//            //推送教职工
-//            tableName = "base_teacher";
-//            Map<String, String> teacherMap = dataMap.get(tableName);
-//            //推送教室
-//            tableName = "base_classroom";
-//            Map<String, String> classroomMap = dataMap.get(tableName);
-//            //推送行政班,先查询当前学期id
-//            String currenSemeter = dataUtil.getCurrenSemeter();
-//            tableName = "base_class";
-//            dataUtil.insertClass(use, tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
-//
-//        } catch (Exception e) {
-//        }
-//    }
-//
-//    @Test
-//    void test3() throws Exception {
-//        long timestamp = System.currentTimeMillis();
-//        //生成签名
-//        String sign = ScheduleUtil.createSign(timestamp);
-//
-//        System.out.println(timestamp);
-//
-//        System.out.println(sign);
-//    }
-//
-//    @Test
-//    void deleteData() throws Exception {
-//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-//        Db use = Db.use(datasource);
-//
-//        String url  = ScheduleUtil.apiUrl + "Class/page";
-//
-//        JsonObject pageJson = new JsonObject();
-//        pageJson.addProperty("pageSize", 120);
-//        pageJson.addProperty("pageIndex", 1);
-//        JsonParser parser = new JsonParser();
-//
-//
-//        String ids = "[\"CLA000000975\",\"CLA000001011\",\"CLA000000997\",\"CLA000000998\",\"CLA000000999\",\"CLA000001000\",\"CLA000001001\",\"CLA000001002\",\"CLA000001003\",\"CLA000001004\",\"CLA000001005\",\"CLA000000972\",\"CLA000000973\",\"CLA000000974\",\"CLA000000989\",\"CLA000000990\",\"CLA000001007\",\"CLA000001008\",\"CLA000001009\",\"CLA000001010\",\"CLA000001012\",\"CLA000000987\",\"CLA000000988\",\"CLA000000991\",\"CLA000000992\",\"CLA000000993\",\"CLA000000994\",\"CLA000000995\",\"CLA000000980\",\"CLA000000981\",\"CLA000000982\",\"CLA000000983\",\"CLA000000996\",\"CLA000000984\",\"CLA000000985\",\"CLA000000986\",\"CLA000001006\",\"CLA000000977\",\"CLA000000978\",\"CLA000000979\",\"CLA000000976\",\"CLA000001017\",\"CLA000001018\",\"CLA000001057\",\"CLA000001043\",\"CLA000001044\",\"CLA000001045\",\"CLA000001046\",\"CLA000001047\",\"CLA000001048\",\"CLA000001049\",\"CLA000001013\",\"CLA000001014\",\"CLA000001015\",\"CLA000001034\",\"CLA000001052\",\"CLA000001053\",\"CLA000001054\",\"CLA000001055\",\"CLA000001056\",\"CLA000001032\",\"CLA000001033\",\"CLA000001035\",\"CLA000001036\",\"CLA000001037\",\"CLA000001038\",\"CLA000001039\",\"CLA000001040\",\"CLA000001041\",\"CLA000001024\",\"CLA000001025\",\"CLA000001026\",\"CLA000001027\",\"CLA000001028\",\"CLA000001042\",\"CLA000001029\",\"CLA000001030\",\"CLA000001031\",\"CLA000001050\",\"CLA000001051\",\"CLA000001019\",\"CLA000001020\",\"CLA000001021\",\"CLA000001022\",\"CLA000001023\",\"CLA000001016\"]";
-//
-//        JsonArray paramJson = parser.parse(ids).getAsJsonArray();
-//
-//        System.out.println(paramJson.toString());
-//        long timestamp = System.currentTimeMillis();
-//        url  = ScheduleUtil.apiUrl + "class/Del";
-//        String sign = ScheduleUtil.createSign(timestamp);
-//
-//        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-//        System.out.println(doPost);
-//    }
-//
-//    @Test
-//    void updateGrade() throws Exception {
-//        String url  = ScheduleUtil.apiUrl + "EduYear/page";
-//        JsonObject paramJson = new JsonObject();
-//        paramJson.addProperty("pageSize", 40);
-//        paramJson.addProperty("pageIndex", 1);
-//
-//        long timestamp = System.currentTimeMillis();
-//        //生成签名
-//        String sign = ScheduleUtil.createSign(timestamp);
-//
-//        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-//        System.out.println(doPost);
-//
-////        JsonParser parser = new JsonParser();
-////        JsonObject jsonObject = parser.parse(doPost).getAsJsonObject();
-////        JsonArray jsonArray = jsonObject.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
-////
-////        url = ScheduleUtil.apiUrl + "eduyear/update";
-////        for (JsonElement jsonElement : jsonArray) {
-////            JsonObject dataOne = jsonElement.getAsJsonObject();
-////            dataOne.addProperty("schoolDistrictId", "48e0a5ae-6d0b-34dd-f31a-3a12feca72d1");
-////
-////            timestamp = System.currentTimeMillis();
-////            //生成签名
-////            sign = ScheduleUtil.createSign(timestamp);
-////            String result = ScheduleUtil.doPost(url, dataOne.toString(), sign, timestamp);
-////
-////            System.out.println(result);
-////        }
-//    }
-//
-//    @Test
-//    void insertGrade() throws Exception {
-//        String url  = ScheduleUtil.apiUrl + "eduyear/create";
-//        JsonObject paramJson = new JsonObject();
-//        paramJson.addProperty("pageSize", 40);
-//        paramJson.addProperty("pageIndex", 1);
-//
-//        long timestamp = System.currentTimeMillis();
-//        //生成签名
-//        String sign = ScheduleUtil.createSign(timestamp);
-//
-//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-//        Db use = Db.use(datasource);
-//
-//        JsonParser jsonParser = new JsonParser();
-//
-//        Map<String, String> idMap = new HashMap<>();
-//        //删除学生
-//        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'xjr_department'";
-//        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
-//        for (JianyueData jianyueData : gradeList) {
-//            if("48e0a5ae-6d0b-34dd-f31a-3a12feca72d1".equals(jianyueData.getJianyueId())){
-//                continue;
-//            }
-//
-//            sql = "select * from base_grade where delete_mark = 0 and status = 1";
-//            List<BaseGrade> list = use.query(sql, BaseGrade.class);
-//            for (BaseGrade baseGrade : list) {
-//                url = ScheduleUtil.apiUrl + "eduyear/create";
-//                JsonObject dataJson = new JsonObject();
-//                dataJson.addProperty("schoolDistrictId", jianyueData.getJianyueId());
-//                dataJson.addProperty("period", 4);
-//                dataJson.addProperty("startYear", baseGrade.getTitle().replaceAll("年", ""));
-//                dataJson.addProperty("extendId", baseGrade.getId().toString());
-//                dataJson.addProperty("year", 3);
-//
-//                //获取时间戳
-//                timestamp = System.currentTimeMillis();
-//                //生成签名
-//                sign = ScheduleUtil.createSign(timestamp);
-//
-//                String result = ScheduleUtil.doPost(url, dataJson.toString(), sign, timestamp);
-//
-//                JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
-//
-//                idMap.put(jianyueData.getSourceId() + "_" + baseGrade.getId().toString(), resultJson.get("data").getAsString());
-//            }
-//        }
-//        DataUtil dataUtil = new DataUtil();
-//        dataUtil.insertRecord(use, "base_grade", idMap);
-//    }
-//
-//    @Test
-//    void selectSchoolDistrict() throws Exception {
-//        String url  = ScheduleUtil.apiUrl + "SchoolDistrict/page";
-//        JsonObject paramJson = new JsonObject();
-//        paramJson.addProperty("pageSize", 40);
-//        paramJson.addProperty("pageIndex", 1);
-//
-//        long timestamp = System.currentTimeMillis();
-//        //生成签名
-//        String sign = ScheduleUtil.createSign(timestamp);
-//
-//        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-//        System.out.println(doPost);
-//
-//    }
-//
-//    @Test
-//    void updateClass() throws Exception {
-//        String url  = ScheduleUtil.apiUrl + "EduYear/page";
-//        JsonObject paramJson = new JsonObject();
-//        paramJson.addProperty("pageSize", 40);
-//        paramJson.addProperty("pageIndex", 1);
-//
-//        long timestamp = System.currentTimeMillis();
-//        //生成签名
-//        String sign = ScheduleUtil.createSign(timestamp);
-//
-//        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-//
-//
+package com.xjrsoft.module.job;
+
+import cn.hutool.db.Db;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.XjrSoftApplication;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import com.xjrsoft.common.utils.DatasourceUtil;
+import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.schedule.entity.JianyueData;
+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 javax.sql.DataSource;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author dzx
+ * @date 2024/4/30
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = XjrSoftApplication.class)
+class JianyuekbBaseDataTaskTest {
+
+
+    @Test
+    public void RefreshConnectionPool() {
+        try {
+            String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
+            List<Map<String, Object>> query = SqlRunnerAdapter.db().selectList(sql, JianyueData.class);
+            Set<String> tables = new HashSet<>();
+            for (Map<String, Object> queryMap : query) {
+                String[] strings = SqlRunnerAdapterUtil.convertMapToStringArray(queryMap);
+                tables.add(strings[0]);
+            }
+            sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
+            List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, JianyueData.class);
+            Map<String, Map<String, String>> dataMap = new HashMap<>();
+            for (String table : tables) {
+                Map<String, String> tableData = new HashMap<>();
+                for (Map<String, Object> queryMap : list) {
+                    JianyueData jianyueData = SqlRunnerAdapterUtil.convertMapToEntity(queryMap, JianyueData.class);
+                    if(!table.equals(jianyueData.getTableName())){
+                        continue;
+                    }
+                    tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+                }
+                dataMap.put(table, tableData);
+            }
+
+        } catch (Exception e) {
+        }
+    }
+
+    @Test
+    public void RefreshConnectionPool2() {
+        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+        try {
+            Db use = Db.use(datasource);
+            String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";
+            List<JianyueData> query = use.query(sql, JianyueData.class);
+            Set<String> tables = new HashSet<>();
+            for (JianyueData jianyueData : query) {
+                tables.add(jianyueData.getTableName());
+            }
+            sql = "SELECT * FROM jianyue_data WHERE 0 = 0";
+            List<JianyueData> list = use.query(sql, JianyueData.class);
+            Map<String, Map<String, String>> dataMap = new HashMap<>();
+            for (String table : tables) {
+                Map<String, String> tableData = new HashMap<>();
+                for (JianyueData jianyueData : list) {
+                    if(!table.equals(jianyueData.getTableName())){
+                        continue;
+                    }
+                    tableData.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+                }
+                dataMap.put(table, tableData);
+            }
+            DataUtil dataUtil = new DataUtil();
+            //查询校区
+            String tableName = "xjr_department";
+
+            //推送年级
+            JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
+            tableName = "base_grade";
+            Map<String, String> grade = dataMap.get(tableName);
+            //推送教职工
+            tableName = "base_teacher";
+            Map<String, String> teacherMap = dataMap.get(tableName);
+            //推送教室
+            tableName = "base_classroom";
+            Map<String, String> classroomMap = dataMap.get(tableName);
+            //推送行政班,先查询当前学期id
+            String currenSemeter = dataUtil.getCurrenSemeter();
+            tableName = "base_class";
+            dataUtil.insertClass(tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
+
+        } catch (Exception e) {
+        }
+    }
+
+    @Test
+    void test3() throws Exception {
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+
+        System.out.println(timestamp);
+
+        System.out.println(sign);
+    }
+
+    @Test
+    void deleteData() throws Exception {
+        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+        Db use = Db.use(datasource);
+
+        String url  = ScheduleUtil.apiUrl + "Class/page";
+
+        JsonObject pageJson = new JsonObject();
+        pageJson.addProperty("pageSize", 120);
+        pageJson.addProperty("pageIndex", 1);
+        JsonParser parser = new JsonParser();
+
+
+        String ids = "[\"CLA000000975\",\"CLA000001011\",\"CLA000000997\",\"CLA000000998\",\"CLA000000999\",\"CLA000001000\",\"CLA000001001\",\"CLA000001002\",\"CLA000001003\",\"CLA000001004\",\"CLA000001005\",\"CLA000000972\",\"CLA000000973\",\"CLA000000974\",\"CLA000000989\",\"CLA000000990\",\"CLA000001007\",\"CLA000001008\",\"CLA000001009\",\"CLA000001010\",\"CLA000001012\",\"CLA000000987\",\"CLA000000988\",\"CLA000000991\",\"CLA000000992\",\"CLA000000993\",\"CLA000000994\",\"CLA000000995\",\"CLA000000980\",\"CLA000000981\",\"CLA000000982\",\"CLA000000983\",\"CLA000000996\",\"CLA000000984\",\"CLA000000985\",\"CLA000000986\",\"CLA000001006\",\"CLA000000977\",\"CLA000000978\",\"CLA000000979\",\"CLA000000976\",\"CLA000001017\",\"CLA000001018\",\"CLA000001057\",\"CLA000001043\",\"CLA000001044\",\"CLA000001045\",\"CLA000001046\",\"CLA000001047\",\"CLA000001048\",\"CLA000001049\",\"CLA000001013\",\"CLA000001014\",\"CLA000001015\",\"CLA000001034\",\"CLA000001052\",\"CLA000001053\",\"CLA000001054\",\"CLA000001055\",\"CLA000001056\",\"CLA000001032\",\"CLA000001033\",\"CLA000001035\",\"CLA000001036\",\"CLA000001037\",\"CLA000001038\",\"CLA000001039\",\"CLA000001040\",\"CLA000001041\",\"CLA000001024\",\"CLA000001025\",\"CLA000001026\",\"CLA000001027\",\"CLA000001028\",\"CLA000001042\",\"CLA000001029\",\"CLA000001030\",\"CLA000001031\",\"CLA000001050\",\"CLA000001051\",\"CLA000001019\",\"CLA000001020\",\"CLA000001021\",\"CLA000001022\",\"CLA000001023\",\"CLA000001016\"]";
+
+        JsonArray paramJson = parser.parse(ids).getAsJsonArray();
+
+        System.out.println(paramJson.toString());
+        long timestamp = System.currentTimeMillis();
+        url  = ScheduleUtil.apiUrl + "class/Del";
+        String sign = ScheduleUtil.createSign(timestamp);
+
+        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+        System.out.println(doPost);
+    }
+
+    @Test
+    void updateGrade() throws Exception {
+        String url  = ScheduleUtil.apiUrl + "EduYear/page";
+        JsonObject paramJson = new JsonObject();
+        paramJson.addProperty("pageSize", 40);
+        paramJson.addProperty("pageIndex", 1);
+
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+
+        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+        System.out.println(doPost);
+
 //        JsonParser parser = new JsonParser();
 //        JsonObject jsonObject = parser.parse(doPost).getAsJsonObject();
 //        JsonArray jsonArray = jsonObject.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
 //
-//        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
-//        Db use = Db.use(datasource);
-//        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_grade'";
-//        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
-//        Map<String, String> gradeMap = new HashMap<>();
-//        for (JianyueData jianyueData : gradeList) {
-//            gradeMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-//        }
-//
-//        url  = ScheduleUtil.apiUrl + "class/update";
-//        paramJson = new JsonObject();
-//        paramJson.addProperty("pageSize", 200);
-//        paramJson.addProperty("pageIndex", 1);
-//
-//        timestamp = System.currentTimeMillis();
-//        //生成签名
-//        sign = ScheduleUtil.createSign(timestamp);
-//
-//        doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
-//
-//        sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1";
-//        List<BaseClass> dataList = use.query(sql, BaseClass.class);
-//        Map<String, BaseClass> classMap = new HashMap<>();
-//        for (BaseClass baseClass : dataList) {
-//            classMap.put(baseClass.getId().toString(), baseClass);
-//        }
-//
-//        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_class'";
-//        List<JianyueData> classList = use.query(sql, JianyueData.class);
-//        Map<String, BaseClass> classMap2 = new HashMap<>();
-//        Map<String, String> classMap3 = new HashMap<>();
-//        for (JianyueData jianyueData : classList) {
-//            classMap2.put(jianyueData.getJianyueId(), classMap.get(jianyueData.getSourceId()));
-//            classMap3.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-//        }
-//
-//        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_classroom'";
-//        List<JianyueData> classroomList = use.query(sql, JianyueData.class);
-//        Map<String, String> classroomMap = new HashMap<>();
-//        for (JianyueData jianyueData : classroomList) {
-//            classroomMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
-//        }
-//
-//        url  = ScheduleUtil.apiUrl + "class/update";
-//        DataUtil dataUtil = new DataUtil();
-//        String currenSemeter = dataUtil.getCurrenSemeter();
-//
-//        for (BaseClass baseClass : classMap2.values()) {
-//            if(baseClass == null){
-//                continue;
-//            }
-//            paramJson = new JsonObject();
-//            paramJson.addProperty("name", baseClass.getName());
-//
-//            paramJson.addProperty("semesterSerialNo", currenSemeter);
-//            paramJson.addProperty("eduYearSerialNo", gradeMap.get(baseClass.getOrgId() + "_" + baseClass.getGradeId().toString()));
-//            paramJson.addProperty("extendId", baseClass.getId());
-//            paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId().toString()));
-//            paramJson.addProperty("serialNo", classMap3.get(baseClass.getId().toString()));
+//        url = ScheduleUtil.apiUrl + "eduyear/update";
+//        for (JsonElement jsonElement : jsonArray) {
+//            JsonObject dataOne = jsonElement.getAsJsonObject();
+//            dataOne.addProperty("schoolDistrictId", "48e0a5ae-6d0b-34dd-f31a-3a12feca72d1");
 //
 //            timestamp = System.currentTimeMillis();
 //            //生成签名
 //            sign = ScheduleUtil.createSign(timestamp);
-//            String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+//            String result = ScheduleUtil.doPost(url, dataOne.toString(), sign, timestamp);
 //
-//            System.out.println(baseClass.getName() + " -> " + result);
+//            System.out.println(result);
 //        }
-//    }
-//
-//
-//}
+    }
+
+    @Test
+    void insertGrade() throws Exception {
+        String url  = ScheduleUtil.apiUrl + "eduyear/create";
+        JsonObject paramJson = new JsonObject();
+        paramJson.addProperty("pageSize", 40);
+        paramJson.addProperty("pageIndex", 1);
+
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+
+        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+        Db use = Db.use(datasource);
+
+        JsonParser jsonParser = new JsonParser();
+
+        Map<String, String> idMap = new HashMap<>();
+        //删除学生
+        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'xjr_department'";
+        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
+        for (JianyueData jianyueData : gradeList) {
+            if("48e0a5ae-6d0b-34dd-f31a-3a12feca72d1".equals(jianyueData.getJianyueId())){
+                continue;
+            }
+
+            sql = "select * from base_grade where delete_mark = 0 and status = 1";
+            List<BaseGrade> list = use.query(sql, BaseGrade.class);
+            for (BaseGrade baseGrade : list) {
+                url = ScheduleUtil.apiUrl + "eduyear/create";
+                JsonObject dataJson = new JsonObject();
+                dataJson.addProperty("schoolDistrictId", jianyueData.getJianyueId());
+                dataJson.addProperty("period", 4);
+                dataJson.addProperty("startYear", baseGrade.getTitle().replaceAll("年", ""));
+                dataJson.addProperty("extendId", baseGrade.getId().toString());
+                dataJson.addProperty("year", 3);
+
+                //获取时间戳
+                timestamp = System.currentTimeMillis();
+                //生成签名
+                sign = ScheduleUtil.createSign(timestamp);
+
+                String result = ScheduleUtil.doPost(url, dataJson.toString(), sign, timestamp);
+
+                JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+
+                idMap.put(jianyueData.getSourceId() + "_" + baseGrade.getId().toString(), resultJson.get("data").getAsString());
+            }
+        }
+        DataUtil dataUtil = new DataUtil();
+        dataUtil.insertRecord("base_grade", idMap);
+    }
+
+    @Test
+    void selectSchoolDistrict() throws Exception {
+        String url  = ScheduleUtil.apiUrl + "SchoolDistrict/page";
+        JsonObject paramJson = new JsonObject();
+        paramJson.addProperty("pageSize", 40);
+        paramJson.addProperty("pageIndex", 1);
+
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+
+        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+        System.out.println(doPost);
+
+    }
+
+    @Test
+    void updateClass() throws Exception {
+        String url  = ScheduleUtil.apiUrl + "EduYear/page";
+        JsonObject paramJson = new JsonObject();
+        paramJson.addProperty("pageSize", 40);
+        paramJson.addProperty("pageIndex", 1);
+
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+
+        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+
+
+        JsonParser parser = new JsonParser();
+        JsonObject jsonObject = parser.parse(doPost).getAsJsonObject();
+        JsonArray jsonArray = jsonObject.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
+
+        DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
+        Db use = Db.use(datasource);
+        String sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_grade'";
+        List<JianyueData> gradeList = use.query(sql, JianyueData.class);
+        Map<String, String> gradeMap = new HashMap<>();
+        for (JianyueData jianyueData : gradeList) {
+            gradeMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+        }
+
+        url  = ScheduleUtil.apiUrl + "class/update";
+        paramJson = new JsonObject();
+        paramJson.addProperty("pageSize", 200);
+        paramJson.addProperty("pageIndex", 1);
+
+        timestamp = System.currentTimeMillis();
+        //生成签名
+        sign = ScheduleUtil.createSign(timestamp);
+
+        doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+
+        sql = "SELECT * FROM base_class WHERE delete_mark = 0 and is_graduate = 1";
+        List<BaseClass> dataList = use.query(sql, BaseClass.class);
+        Map<String, BaseClass> classMap = new HashMap<>();
+        for (BaseClass baseClass : dataList) {
+            classMap.put(baseClass.getId().toString(), baseClass);
+        }
+
+        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_class'";
+        List<JianyueData> classList = use.query(sql, JianyueData.class);
+        Map<String, BaseClass> classMap2 = new HashMap<>();
+        Map<String, String> classMap3 = new HashMap<>();
+        for (JianyueData jianyueData : classList) {
+            classMap2.put(jianyueData.getJianyueId(), classMap.get(jianyueData.getSourceId()));
+            classMap3.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+        }
+
+        sql = "SELECT * FROM jianyue_data WHERE table_name = 'base_classroom'";
+        List<JianyueData> classroomList = use.query(sql, JianyueData.class);
+        Map<String, String> classroomMap = new HashMap<>();
+        for (JianyueData jianyueData : classroomList) {
+            classroomMap.put(jianyueData.getSourceId(), jianyueData.getJianyueId());
+        }
+
+        url  = ScheduleUtil.apiUrl + "class/update";
+        DataUtil dataUtil = new DataUtil();
+        String currenSemeter = dataUtil.getCurrenSemeter();
+
+        for (BaseClass baseClass : classMap2.values()) {
+            if(baseClass == null){
+                continue;
+            }
+            paramJson = new JsonObject();
+            paramJson.addProperty("name", baseClass.getName());
+
+            paramJson.addProperty("semesterSerialNo", currenSemeter);
+            paramJson.addProperty("eduYearSerialNo", gradeMap.get(baseClass.getOrgId() + "_" + baseClass.getGradeId().toString()));
+            paramJson.addProperty("extendId", baseClass.getId());
+            paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId().toString()));
+            paramJson.addProperty("serialNo", classMap3.get(baseClass.getId().toString()));
+
+            timestamp = System.currentTimeMillis();
+            //生成签名
+            sign = ScheduleUtil.createSign(timestamp);
+            String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+
+            System.out.println(baseClass.getName() + " -> " + result);
+        }
+    }
+
+
+}