فهرست منبع

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

大数据与最优化研究所 1 سال پیش
والد
کامیت
f4509c4402

+ 14 - 7
src/main/java/com/xjrsoft/common/mybatis/SqlRunnerAdapter.java

@@ -25,10 +25,7 @@ import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 
 public class SqlRunnerAdapter implements ISqlRunner, Closeable {
 
@@ -367,12 +364,21 @@ public class SqlRunnerAdapter implements ISqlRunner, Closeable {
      * @return
      */
     public Map<String, Object> dynamicSelectOne(String tableName, Entity where) {
+        if (where == null) {
+            throw new IllegalArgumentException("Where entity cannot be null");
+        }
+
         SQL sql = new SQL().FROM(tableName);
         List<String> args = new ArrayList<>();
         int i = 0;
-        // 查询列
-        for (String field : where.getFieldNames()) {
-            sql.SELECT(field);
+
+        Set<String> fieldNames = where.getFieldNames();
+        if (fieldNames != null && !fieldNames.isEmpty()) {
+            for (String field : fieldNames) {
+                sql.SELECT(field);
+            }
+        } else {
+            sql.SELECT("*"); // 如果没有指定字段,选择所有字段
         }
 
         // 循环where条件
@@ -386,6 +392,7 @@ public class SqlRunnerAdapter implements ISqlRunner, Closeable {
             args.add(strValue);
             i++;
         }
+
         return this.selectOne(sql.toString(), args.toArray());
     }
 

+ 14 - 5
src/main/java/com/xjrsoft/module/attendance/controller/StatisticsController.java

@@ -5,12 +5,14 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.enums.OutInStatusEnum;
 import com.xjrsoft.common.enums.StudyStatusEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsVo;
 import com.xjrsoft.module.attendance.vo.VisitorInfoVo;
+import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.concat.service.IXjrUserService;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
 import com.xjrsoft.module.outint.entity.CarOutInRecord;
@@ -115,7 +117,7 @@ public class StatisticsController {
                             .le(CarOutInRecord::getRecordTime, endTime)
                             .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
                             .ge(dto.getTimePeriod() == 2 && amEndTime != null, CarOutInRecord::getRecordTime, amEndTime)
-                            .eq(CarOutInRecord::getStatus, 0)
+                            .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
                             .orderByAsc(CarOutInRecord::getRecordTime)
             );
 
@@ -165,10 +167,11 @@ public class StatisticsController {
         MPJLambdaWrapper<XjrUser> queryWrapper = MPJWrappers.<XjrUser>lambdaJoin()
                 .disableSubLogicDel()
                 .distinct()
-                .eq(ObjectUtil.isNotNull(dto.getGradeId()), BaseStudentSchoolRoll::getGradeId, dto.getGradeId())
+                .eq(ObjectUtil.isNotNull(dto.getGradeId()), BaseClass::getGradeId, dto.getGradeId())
                 .eq(BaseStudentSchoolRoll::getArchivesStatus, "FB2901")
                 .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
                 .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, XjrUser::getId)
+                .innerJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
                 .innerJoin(BaseStudent.class, BaseStudent::getUserId, XjrUser::getId);
         long allCount = xjrUserService.count(queryWrapper);
 
@@ -191,9 +194,15 @@ public class StatisticsController {
             }
 
             List<StudentOutInRecord> outInRecords = studentOutInRecordService.list(
-                    new QueryWrapper<StudentOutInRecord>().lambda()
-                            .between(StudentOutInRecord::getRecordTime, startTime, endTime)
-                            .eq(StudentOutInRecord::getStatus, 1)
+                    new MPJLambdaWrapper<StudentOutInRecord>()
+                            .select(StudentOutInRecord.class, x -> VoToColumnUtil.fieldsToColumns(StudentOutInRecord.class).contains(x.getProperty()))
+                            .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, StudentOutInRecord::getUserId)
+                            .innerJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
+                            .le(StudentOutInRecord::getRecordTime, endTime)
+                            .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
+                            .eq(StudentOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
+                            .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
+                            .eq(ObjectUtil.isNotNull(dto.getGradeId()), BaseClass::getGradeId, dto.getGradeId())
             );
             //实到人数
             Set<Long> collect = outInRecords.stream().map(StudentOutInRecord::getUserId).collect(Collectors.toSet());

+ 26 - 5
src/main/java/com/xjrsoft/module/attendance/controller/StudentStatisticsController.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.attendance.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -75,11 +76,23 @@ public class StudentStatisticsController {
     private final IBaseClassService classService;
     private final IHolidayDateService holidayDateService;
     private final IAttendanceRuleCategoryService ruleCategoryService;
-
+    private final IBaseClassService baseClassService;
     @GetMapping(value = "/class-statistics")
     @ApiOperation(value="班级考勤统计")
     @SaCheckPermission("statistics:detail")
     public RT<PageOutput<ClassStatisticsVo>> classStatistics(@Valid AttendanceStatisticDto dto){
+
+        List<String> roleList = StpUtil.getRoleList();
+        long teacherId = StpUtil.getLoginIdAsLong();
+        List<BaseClass> classList = baseClassService.list(
+                new QueryWrapper<BaseClass>().lambda().eq(BaseClass::getTeacherId, teacherId)
+        );
+        if(roleList.size() == 2 && roleList.contains("CLASSTE") && roleList.contains("TEACHER")){
+            if(classList != null && !classList.isEmpty()){
+                dto.setClassId(classList.get(0).getId());
+            }
+        }
+        
         Page<ClassStatisticsVo> attendancePage = classService.getAttendancePage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         List<Long> classIds = new ArrayList<>();
         for (ClassStatisticsVo record : attendancePage.getRecords()) {
@@ -172,6 +185,17 @@ public class StudentStatisticsController {
     @ApiOperation(value="学生考勤")
     @SaCheckPermission("statistics:detail")
     public RT<PageOutput<StudentStatisticsPageVo>> studentDetails(@Valid StudentDetailsDto dto){
+        List<String> roleList = StpUtil.getRoleList();
+        long teacherId = StpUtil.getLoginIdAsLong();
+        List<BaseClass> classList = baseClassService.list(
+                new QueryWrapper<BaseClass>().lambda().eq(BaseClass::getTeacherId, teacherId)
+        );
+        if(roleList.size() == 2 && roleList.contains("CLASSTE") && roleList.contains("TEACHER")){
+            if(classList != null && !classList.isEmpty()){
+                dto.setClassId(classList.get(0).getId());
+            }
+        }
+
         MPJLambdaWrapper<User> queryUser = new MPJLambdaWrapper<>();
         queryUser.disableSubLogicDel().distinct()
                 .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
@@ -260,10 +284,7 @@ public class StudentStatisticsController {
     @SaCheckPermission("statistics:detail")
     public RT<PageOutput<ClassStatisticsVo>> classHistory(@Valid AttendanceStatisticDto dto){
         Page<ClassStatisticsVo> attendancePage = classService.getAttendancePage(new Page<>(dto.getLimit(), dto.getSize()), dto);
-        List<Long> classIds = new ArrayList<>();
-        for (ClassStatisticsVo record : attendancePage.getRecords()) {
-            classIds.add(record.getId());
-        }
+        List<Long> classIds = attendancePage.getRecords().stream().map(ClassStatisticsVo::getId).collect(Collectors.toList());
         if(dto.getStartTime() != null && !"".equals(dto.getStartTime()) && dto.getEndTime() != null && !"".equals(dto.getEndTime())){
             DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE;
             LocalDateTime startTime = LocalDate.parse(dto.getStartTime(), formatter).atTime(0, 0, 0);

+ 1 - 1
src/main/java/com/xjrsoft/module/attendance/controller/TeacherStatisticsController.java

@@ -175,7 +175,7 @@ public class TeacherStatisticsController {
                 }
                 TeacherOutInRecordDto outInDto = new TeacherOutInRecordDto();
                 outInDto.setQueryDate(startTime.toLocalDate());
-                outInDto.setRecordTime(startTime);
+                outInDto.setRecordTime(endTime);
                 outInDto.setStatus(OutInStatusEnum.enter.getCode());
                 outInDto.setUserId(record.getUserId());
                 List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);

+ 12 - 13
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -8,6 +8,7 @@ import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
 import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.personnel.entity.CarMessageApply;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
@@ -464,7 +465,7 @@ public class DataUtil {
     }
 
     /*同步车辆数据*/
-    public Map<Long, String> insertCar(String tableName, Map<String, String> tableData, FaceImportMapper faceImportMapper) {
+    public Map<Long, String> insertCar(String tableName, Map<String, String> tableData, HikvisionDataMapper hikvisionDataMapper) {
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and status = 1";
         List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, CarMessageApply.class);
         String apiPath = "/api/resource/v1/vehicle/batch/add";
@@ -483,19 +484,18 @@ public class DataUtil {
         JsonArray dataArray = new JsonArray();
         String result = null;
         int clientId = 1;
-        for (Map<String, Object> carMessageApplyMap : dataList) {
-            CarMessageApply carMessageApply = SqlRunnerAdapterUtil.convertMapToEntity(carMessageApplyMap, CarMessageApply.class);
-            if(existingPlates.contains(carMessageApply.getId() + "")){
+        for (Map<String, Object> carMap : dataList) {
+            if(existingPlates.contains(carMap.get("id") + "")){
                 continue;
             }
 
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("clientId", clientId);
-            paramJson.addProperty("plateNo", carMessageApply.getCarNumber().trim());
-            paramJson.addProperty("personId", faceImportMapper.GetHikvisonPersonId(carMessageApply.getId().toString()));
+            paramJson.addProperty("plateNo", carMap.get("car_number").toString());
+            paramJson.addProperty("personId", hikvisionDataMapper.getTeacherHikvisionId(Long.parseLong(carMap.get("user_id").toString())));
 
             int vehicleTypeNum;
-            switch (carMessageApply.getVehicleType()) {
+            switch (carMap.get("vehicle_type").toString()) {
                 case "小型车":
                     vehicleTypeNum = 1;
                     break;
@@ -510,19 +510,18 @@ public class DataUtil {
                     break;
             }
             paramJson.addProperty("vehicleType", vehicleTypeNum);
-            clientMap.put(clientId, carMessageApply.getId());
+            clientMap.put(clientId, Long.parseLong(carMap.get("id").toString()));
             dataArray.add(paramJson);
             clientId++;
         }
         result = apiUtil.doPost(apiPath, dataArray.toString(), tagMap, null);
 
-        for (Map<String, Object> carMessageApplyMap : dataList) {
-            CarMessageApply carMessageApply = SqlRunnerAdapterUtil.convertMapToEntity(carMessageApplyMap, CarMessageApply.class);
+        for (Map<String, Object> carMap : dataList) {
             JsonObject paramJsonTime = new JsonObject();
             paramJsonTime.addProperty("parkSyscode", "c69f2a7c48a74216bcab7d65f24d4a09");
-            paramJsonTime.addProperty("plateNo", carMessageApply.getCarNumber().trim());
-            paramJsonTime.addProperty("startTime", String.valueOf(carMessageApply.getStartTime()));
-            paramJsonTime.addProperty("endTime", String.valueOf(carMessageApply.getEndTime()));
+            paramJsonTime.addProperty("plateNo", carMap.get("car_number").toString());
+            paramJsonTime.addProperty("startTime", carMap.get("start_time").toString());
+            paramJsonTime.addProperty("endTime", carMap.get("end_time").toString());
             apiUtil.doPost(apiPathTime, String.valueOf(paramJsonTime), tagMap, null);
         }
 

+ 22 - 16
src/main/java/com/xjrsoft/module/hikvision/util/OutInRecordUtil.java

@@ -12,16 +12,14 @@ import com.xjrsoft.module.attendance.entity.AttendanceRuleDetails;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.sql.Types;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 
 
@@ -37,8 +35,10 @@ public class OutInRecordUtil {
         SqlRunnerAdapter.db().insert(sql);
 
         String updSql = "UPDATE attendance_user_relation SET " +
-                "attendance_status = '" + attendanceStatus + "', attendance_time = '" + recordTime + "' " +
-                "WHERE user_id = '" + userId + "', attendance_mode = '人脸' AND delete_mark = 0";
+                "attendance_status = '" + attendanceStatus + "', " +
+                "attendance_time = '" + recordTime + "', " +
+                "attendance_mode = '人脸' " +
+                "WHERE user_id = '" + userId + "' AND delete_mark = 0";
         SqlRunnerAdapter.db().update(updSql);
     }
 
@@ -51,8 +51,10 @@ public class OutInRecordUtil {
         SqlRunnerAdapter.db().insert(sql);
 
         String updSql = "UPDATE attendance_user_relation SET " +
-                "attendance_status = '" + attendanceStatus + "', attendance_time = '" + recordTime + "' " +
-                "WHERE user_id = '" + userId + "', attendance_mode = '人脸' AND delete_mark = 0";
+                "attendance_status = '" + attendanceStatus + "', " +
+                "attendance_time = '" + recordTime + "', " +
+                "attendance_mode = '人脸' " +
+                "WHERE user_id = '" + userId + "' AND delete_mark = 0";
         SqlRunnerAdapter.db().update(updSql);
     }
 
@@ -65,7 +67,7 @@ public class OutInRecordUtil {
     }
 
     private void vehicleInsertRecord(Long carMessageApplyId, String recordTime, int releaseReason, int category, String facePhoto, int status, String planNo, String crossRecordSyscode,
-                                     int releaseResult, int releaseWay, int vehicleType, String phone, String name){
+                                    int releaseResult, int releaseWay, int vehicleType, String phone, String name){
         String phoneValue = (phone != null && !phone.equals("null")) ? phone : "";
         String nameValue = (name != null && !name.equals("null")) ? name : "";
         String photoValue = (facePhoto != null && !facePhoto.equals("null")) ? facePhoto : "";
@@ -95,16 +97,20 @@ public class OutInRecordUtil {
         if(carMessageApplyId != 0){
             String selectTable = "car_message_apply";
             Entity selectWhere = Entity.create(selectTable);
-            selectWhere.set("car_message_apply_id", carMessageApplyId);
-            selectWhere.set("plan_no", planNo);
+            selectWhere.set("id", carMessageApplyId);
+            selectWhere.set("car_number", planNo);
             Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(selectTable, selectWhere);
             Long userId = Long.parseLong(objectMap.get("user_id").toString());
-            LocalDateTime recordTimeDate = LocalDateTime.parse(recordTime);
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime recordTimeDate = LocalDateTime.parse(recordTime, formatter);
             String attendanceStatus = discernTeacherStatus(recordTimeDate, status, userId);
 
             String updSql = "UPDATE attendance_user_relation SET " +
-                    "attendance_status = '" + attendanceStatus + "', attendance_time = '" + recordTime + "' " +
-                    "WHERE user_id = '" + userId + "', attendance_mode = '车辆', car_number = '" + planNo + "' AND delete_mark = 0";
+                    "attendance_status = '" + attendanceStatus + "', " +
+                    "attendance_time = '" + recordTime + "', " +
+                    "attendance_mode = '车辆', " +
+                    "car_number = '" + planNo + "' " +
+                    "WHERE user_id = '" + userId + "' AND delete_mark = 0";
             SqlRunnerAdapter.db().update(updSql);
         }
     }
@@ -430,8 +436,8 @@ public class OutInRecordUtil {
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("pageNo", pageNo.getAndIncrement());
             paramJson.addProperty("pageSize", pageSize);
-//            paramJson.addProperty("startTime", "2024-06-18T00:00:00+08:00");
-//            paramJson.addProperty("endTime", "2024-06-19T16:00:00+08:00");
+//            paramJson.addProperty("startTime", "2024-06-20T00:00:00+08:00");
+//            paramJson.addProperty("endTime", "2024-06-21T16:00:00+08:00");
 
             String response = apiUtil.doPost(apiPath, String.valueOf(paramJson), null);
             JsonElement responseElement = new Gson().fromJson(response, JsonElement.class);

+ 28 - 8
src/main/java/com/xjrsoft/module/job/HikvisionBaseDataTask.java

@@ -4,6 +4,7 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.hikvision.entity.HikvisionData;
+import com.xjrsoft.module.hikvision.mapper.HikvisionDataMapper;
 import com.xjrsoft.module.hikvision.util.DataUtil;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import lombok.extern.slf4j.Slf4j;
@@ -27,11 +28,11 @@ public class HikvisionBaseDataTask {
     @Autowired
     private FaceImportMapper faceImportMapper;
 
+    @Autowired
+    private HikvisionDataMapper hikvisionDataMapper;
+
     @Scheduled(cron = "0 */15 * * * ?")
     public void RefreshConnectionPool() {
-        if(1 == 1){
-            return;
-        }
         String active = SpringUtil.getActiveProfile();
         if(!"prod".equals(active)){
             log.info("非正式环境,无法执行数据推送");
@@ -65,28 +66,47 @@ public class HikvisionBaseDataTask {
             //JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             //推送组织机构
             String tableName = "xjr_department";
-            Map<String, String> department = dataUtil.insertDepartment(tableName, dataMap.get(tableName));
+            Map<String, String> department = new HashMap<>();
+            try {
+                department = dataUtil.insertDepartment(tableName, dataMap.get(tableName));
+            }catch (Exception e){
+                log.info("推送组织机构报错", e);
+            }
             if(department.isEmpty() && dataMap.get(tableName) != null){
                 department = dataMap.get(tableName);
             }
 
+
             //推送教职工
             tableName = "base_teacher";
-            dataUtil.insertTeacher(tableName, dataMap.get(tableName), department);
+            try {
+                dataUtil.insertTeacher(tableName, dataMap.get(tableName), department);
+            }catch (Exception e){
+                log.info("推送教职工报错", e);
+            }
 
             //推送车辆
             String carTableName = "car_message_apply";
             Map<String, String> baseCar = dataMap.get(carTableName);
-            dataUtil.insertCar(carTableName, baseCar, faceImportMapper);
+            try {
+                dataUtil.insertCar(carTableName, baseCar, hikvisionDataMapper);
+            }catch (Exception e){
+                log.info("同步车辆数据报错", e);
+            }
+
 
             tableName = "base_class";
             Map<String, String> baseClass = dataMap.get(tableName);
-            Map<String, String> classes = dataUtil.insertClass(tableName, baseClass);
+            try {
+                dataUtil.insertClass(tableName, baseClass);
+            }catch (Exception e){
+                log.info("同步车辆数据报错", e);
+            }
 
 
             tableName = "base_student";
             Map<String, String> baseStudent = dataMap.get(tableName);
-            Map<String, String> student = dataUtil.insertStudentOne(tableName, baseStudent);
+            dataUtil.insertStudentOne(tableName, baseStudent);
 
             log.info("数据推送完成");
         } catch (Exception e) {

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

@@ -108,7 +108,7 @@ class HikvisionBaseDataTaskTest {
 //
 //        //推送教职工
         tableName = "base_teacher";
-        insertTeacher(tableName, dataMap.get(tableName), department);
+//        insertTeacher(tableName, dataMap.get(tableName), department);
 //
         //推送车辆
 
@@ -124,7 +124,7 @@ class HikvisionBaseDataTaskTest {
 
         tableName = "base_student";
         Map<String, String> baseStudent = dataMap.get(tableName);
-       // Map<String, String> student = insertStudentOne(tableName, baseStudent);
+        Map<String, String> student = insertStudentOne(tableName, baseStudent);
 
 //        selectOrg(use, "base_class");
 
@@ -138,6 +138,11 @@ class HikvisionBaseDataTaskTest {
 //        selectResource(use);
     }
 
+    @Test
+    void testCarInsert() throws Exception {
+        outInRecordUtil.GetVehicleRecord(faceImportMapper);
+    }
+
     public static void selectCar(Db db, String tableName) throws SQLException {
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0";
         List<Department> dataList = db.query(sql, Department.class);
@@ -173,7 +178,7 @@ class HikvisionBaseDataTaskTest {
                 " INNER JOIN base_grade t4 ON t3.grade_id = t4.id" +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" +
                 " AND t3.class_type IS NOT NULL" +
-                " AND t1.name IN ('陆晓峰','李星兴')";
+                " AND t1.name IN ('罗一钦','刘嘉靖')";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         Map<Integer, String> clientMap = new HashMap<>();
 
@@ -382,12 +387,12 @@ class HikvisionBaseDataTaskTest {
 
 
     public Map<String, String> insertTeacher(String tableName, Map<String, String> tableData, Map<String, String> deptMap){
-        String sql = "SELECT distinct t1.id,t1.name,t1.gender,t3.dept_id,t1.birth_date,t1.mobile,t1.email,t1.credential_type,t1.credential_number,t1.user_name FROM xjr_user t1" +
+        String sql = "SELECT distinct t1.id,t1.name,ifnull(t1.gender,'SB10001') as gender,t3.dept_id,t1.birth_date,t1.mobile,t1.email,t1.credential_type,t1.credential_number,t1.user_name FROM xjr_user t1" +
                 " INNER JOIN " + tableName + " t2 ON t1.id = t2.user_id" +
                 " INNER JOIN xjr_user_dept_relation t3 ON t1.id = t3.user_id" +
                 " INNER JOIN xjr_department t4 ON t3.dept_id = t4.id " +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t4.delete_mark = 0" +
-                " AND t1.name = '李江涛'";
+                " AND t1.name = '徐海洋'";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         JsonArray paramArray = new JsonArray();
         Map<Integer, String> clientMap = new HashMap<>();
@@ -406,7 +411,7 @@ class HikvisionBaseDataTaskTest {
             paramJson.addProperty("birthday", objectMap.get("birth_date")==null?"":objectMap.get("birth_date").toString());
             paramJson.addProperty("personType", 1);
 
-            int gender;
+            int gender = 1;
             switch (objectMap.get("gender").toString()) {
                 case "SB10001":
                     gender = 1;