Browse Source

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

大数据与最优化研究所 1 year ago
parent
commit
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.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 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 {
 public class SqlRunnerAdapter implements ISqlRunner, Closeable {
 
 
@@ -367,12 +364,21 @@ public class SqlRunnerAdapter implements ISqlRunner, Closeable {
      * @return
      * @return
      */
      */
     public Map<String, Object> dynamicSelectOne(String tableName, Entity where) {
     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);
         SQL sql = new SQL().FROM(tableName);
         List<String> args = new ArrayList<>();
         List<String> args = new ArrayList<>();
         int i = 0;
         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条件
         // 循环where条件
@@ -386,6 +392,7 @@ public class SqlRunnerAdapter implements ISqlRunner, Closeable {
             args.add(strValue);
             args.add(strValue);
             i++;
             i++;
         }
         }
+
         return this.selectOne(sql.toString(), args.toArray());
         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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.enums.OutInStatusEnum;
 import com.xjrsoft.common.enums.StudyStatusEnum;
 import com.xjrsoft.common.enums.StudyStatusEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsVo;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsVo;
 import com.xjrsoft.module.attendance.vo.VisitorInfoVo;
 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.concat.service.IXjrUserService;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
 import com.xjrsoft.module.outint.entity.CarOutInRecord;
 import com.xjrsoft.module.outint.entity.CarOutInRecord;
@@ -115,7 +117,7 @@ public class StatisticsController {
                             .le(CarOutInRecord::getRecordTime, endTime)
                             .le(CarOutInRecord::getRecordTime, endTime)
                             .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
                             .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", endTime.toLocalDate())
                             .ge(dto.getTimePeriod() == 2 && amEndTime != null, CarOutInRecord::getRecordTime, amEndTime)
                             .ge(dto.getTimePeriod() == 2 && amEndTime != null, CarOutInRecord::getRecordTime, amEndTime)
-                            .eq(CarOutInRecord::getStatus, 0)
+                            .eq(CarOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
                             .orderByAsc(CarOutInRecord::getRecordTime)
                             .orderByAsc(CarOutInRecord::getRecordTime)
             );
             );
 
 
@@ -165,10 +167,11 @@ public class StatisticsController {
         MPJLambdaWrapper<XjrUser> queryWrapper = MPJWrappers.<XjrUser>lambdaJoin()
         MPJLambdaWrapper<XjrUser> queryWrapper = MPJWrappers.<XjrUser>lambdaJoin()
                 .disableSubLogicDel()
                 .disableSubLogicDel()
                 .distinct()
                 .distinct()
-                .eq(ObjectUtil.isNotNull(dto.getGradeId()), BaseStudentSchoolRoll::getGradeId, dto.getGradeId())
+                .eq(ObjectUtil.isNotNull(dto.getGradeId()), BaseClass::getGradeId, dto.getGradeId())
                 .eq(BaseStudentSchoolRoll::getArchivesStatus, "FB2901")
                 .eq(BaseStudentSchoolRoll::getArchivesStatus, "FB2901")
                 .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
                 .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
                 .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, XjrUser::getId)
                 .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, XjrUser::getId)
+                .innerJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
                 .innerJoin(BaseStudent.class, BaseStudent::getUserId, XjrUser::getId);
                 .innerJoin(BaseStudent.class, BaseStudent::getUserId, XjrUser::getId);
         long allCount = xjrUserService.count(queryWrapper);
         long allCount = xjrUserService.count(queryWrapper);
 
 
@@ -191,9 +194,15 @@ public class StatisticsController {
             }
             }
 
 
             List<StudentOutInRecord> outInRecords = studentOutInRecordService.list(
             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());
             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;
 package com.xjrsoft.module.attendance.controller;
 
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -75,11 +76,23 @@ public class StudentStatisticsController {
     private final IBaseClassService classService;
     private final IBaseClassService classService;
     private final IHolidayDateService holidayDateService;
     private final IHolidayDateService holidayDateService;
     private final IAttendanceRuleCategoryService ruleCategoryService;
     private final IAttendanceRuleCategoryService ruleCategoryService;
-
+    private final IBaseClassService baseClassService;
     @GetMapping(value = "/class-statistics")
     @GetMapping(value = "/class-statistics")
     @ApiOperation(value="班级考勤统计")
     @ApiOperation(value="班级考勤统计")
     @SaCheckPermission("statistics:detail")
     @SaCheckPermission("statistics:detail")
     public RT<PageOutput<ClassStatisticsVo>> classStatistics(@Valid AttendanceStatisticDto dto){
     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);
         Page<ClassStatisticsVo> attendancePage = classService.getAttendancePage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         List<Long> classIds = new ArrayList<>();
         List<Long> classIds = new ArrayList<>();
         for (ClassStatisticsVo record : attendancePage.getRecords()) {
         for (ClassStatisticsVo record : attendancePage.getRecords()) {
@@ -172,6 +185,17 @@ public class StudentStatisticsController {
     @ApiOperation(value="学生考勤")
     @ApiOperation(value="学生考勤")
     @SaCheckPermission("statistics:detail")
     @SaCheckPermission("statistics:detail")
     public RT<PageOutput<StudentStatisticsPageVo>> studentDetails(@Valid StudentDetailsDto dto){
     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<>();
         MPJLambdaWrapper<User> queryUser = new MPJLambdaWrapper<>();
         queryUser.disableSubLogicDel().distinct()
         queryUser.disableSubLogicDel().distinct()
                 .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
                 .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
@@ -260,10 +284,7 @@ public class StudentStatisticsController {
     @SaCheckPermission("statistics:detail")
     @SaCheckPermission("statistics:detail")
     public RT<PageOutput<ClassStatisticsVo>> classHistory(@Valid AttendanceStatisticDto dto){
     public RT<PageOutput<ClassStatisticsVo>> classHistory(@Valid AttendanceStatisticDto dto){
         Page<ClassStatisticsVo> attendancePage = classService.getAttendancePage(new Page<>(dto.getLimit(), dto.getSize()), 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())){
         if(dto.getStartTime() != null && !"".equals(dto.getStartTime()) && dto.getEndTime() != null && !"".equals(dto.getEndTime())){
             DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE;
             DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE;
             LocalDateTime startTime = LocalDate.parse(dto.getStartTime(), formatter).atTime(0, 0, 0);
             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();
                 TeacherOutInRecordDto outInDto = new TeacherOutInRecordDto();
                 outInDto.setQueryDate(startTime.toLocalDate());
                 outInDto.setQueryDate(startTime.toLocalDate());
-                outInDto.setRecordTime(startTime);
+                outInDto.setRecordTime(endTime);
                 outInDto.setStatus(OutInStatusEnum.enter.getCode());
                 outInDto.setStatus(OutInStatusEnum.enter.getCode());
                 outInDto.setUserId(record.getUserId());
                 outInDto.setUserId(record.getUserId());
                 List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);
                 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.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.entity.BaseGrade;
 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.organization.entity.Department;
 import com.xjrsoft.module.personnel.entity.CarMessageApply;
 import com.xjrsoft.module.personnel.entity.CarMessageApply;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 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";
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and status = 1";
         List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, CarMessageApply.class);
         List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, CarMessageApply.class);
         String apiPath = "/api/resource/v1/vehicle/batch/add";
         String apiPath = "/api/resource/v1/vehicle/batch/add";
@@ -483,19 +484,18 @@ public class DataUtil {
         JsonArray dataArray = new JsonArray();
         JsonArray dataArray = new JsonArray();
         String result = null;
         String result = null;
         int clientId = 1;
         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;
                 continue;
             }
             }
 
 
             JsonObject paramJson = new JsonObject();
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("clientId", clientId);
             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;
             int vehicleTypeNum;
-            switch (carMessageApply.getVehicleType()) {
+            switch (carMap.get("vehicle_type").toString()) {
                 case "小型车":
                 case "小型车":
                     vehicleTypeNum = 1;
                     vehicleTypeNum = 1;
                     break;
                     break;
@@ -510,19 +510,18 @@ public class DataUtil {
                     break;
                     break;
             }
             }
             paramJson.addProperty("vehicleType", vehicleTypeNum);
             paramJson.addProperty("vehicleType", vehicleTypeNum);
-            clientMap.put(clientId, carMessageApply.getId());
+            clientMap.put(clientId, Long.parseLong(carMap.get("id").toString()));
             dataArray.add(paramJson);
             dataArray.add(paramJson);
             clientId++;
             clientId++;
         }
         }
         result = apiUtil.doPost(apiPath, dataArray.toString(), tagMap, null);
         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();
             JsonObject paramJsonTime = new JsonObject();
             paramJsonTime.addProperty("parkSyscode", "c69f2a7c48a74216bcab7d65f24d4a09");
             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);
             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 com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
+import org.springframework.transaction.annotation.Transactional;
 
 
 import java.sql.Types;
 import java.sql.Types;
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 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;
 import java.util.concurrent.atomic.AtomicInteger;
 
 
 
 
@@ -37,8 +35,10 @@ public class OutInRecordUtil {
         SqlRunnerAdapter.db().insert(sql);
         SqlRunnerAdapter.db().insert(sql);
 
 
         String updSql = "UPDATE attendance_user_relation SET " +
         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);
         SqlRunnerAdapter.db().update(updSql);
     }
     }
 
 
@@ -51,8 +51,10 @@ public class OutInRecordUtil {
         SqlRunnerAdapter.db().insert(sql);
         SqlRunnerAdapter.db().insert(sql);
 
 
         String updSql = "UPDATE attendance_user_relation SET " +
         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);
         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,
     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 phoneValue = (phone != null && !phone.equals("null")) ? phone : "";
         String nameValue = (name != null && !name.equals("null")) ? name : "";
         String nameValue = (name != null && !name.equals("null")) ? name : "";
         String photoValue = (facePhoto != null && !facePhoto.equals("null")) ? facePhoto : "";
         String photoValue = (facePhoto != null && !facePhoto.equals("null")) ? facePhoto : "";
@@ -95,16 +97,20 @@ public class OutInRecordUtil {
         if(carMessageApplyId != 0){
         if(carMessageApplyId != 0){
             String selectTable = "car_message_apply";
             String selectTable = "car_message_apply";
             Entity selectWhere = Entity.create(selectTable);
             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);
             Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(selectTable, selectWhere);
             Long userId = Long.parseLong(objectMap.get("user_id").toString());
             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 attendanceStatus = discernTeacherStatus(recordTimeDate, status, userId);
 
 
             String updSql = "UPDATE attendance_user_relation SET " +
             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);
             SqlRunnerAdapter.db().update(updSql);
         }
         }
     }
     }
@@ -430,8 +436,8 @@ public class OutInRecordUtil {
             JsonObject paramJson = new JsonObject();
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("pageNo", pageNo.getAndIncrement());
             paramJson.addProperty("pageNo", pageNo.getAndIncrement());
             paramJson.addProperty("pageSize", pageSize);
             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);
             String response = apiUtil.doPost(apiPath, String.valueOf(paramJson), null);
             JsonElement responseElement = new Gson().fromJson(response, JsonElement.class);
             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.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
 import com.xjrsoft.module.hikvision.entity.HikvisionData;
 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.hikvision.util.DataUtil;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -27,11 +28,11 @@ public class HikvisionBaseDataTask {
     @Autowired
     @Autowired
     private FaceImportMapper faceImportMapper;
     private FaceImportMapper faceImportMapper;
 
 
+    @Autowired
+    private HikvisionDataMapper hikvisionDataMapper;
+
     @Scheduled(cron = "0 */15 * * * ?")
     @Scheduled(cron = "0 */15 * * * ?")
     public void RefreshConnectionPool() {
     public void RefreshConnectionPool() {
-        if(1 == 1){
-            return;
-        }
         String active = SpringUtil.getActiveProfile();
         String active = SpringUtil.getActiveProfile();
         if(!"prod".equals(active)){
         if(!"prod".equals(active)){
             log.info("非正式环境,无法执行数据推送");
             log.info("非正式环境,无法执行数据推送");
@@ -65,28 +66,47 @@ public class HikvisionBaseDataTask {
             //JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             //JsonArray schoolDistrictData = dataUtil.getSchoolDistrictData();
             //推送组织机构
             //推送组织机构
             String tableName = "xjr_department";
             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){
             if(department.isEmpty() && dataMap.get(tableName) != null){
                 department = dataMap.get(tableName);
                 department = dataMap.get(tableName);
             }
             }
 
 
+
             //推送教职工
             //推送教职工
             tableName = "base_teacher";
             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";
             String carTableName = "car_message_apply";
             Map<String, String> baseCar = dataMap.get(carTableName);
             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";
             tableName = "base_class";
             Map<String, String> baseClass = dataMap.get(tableName);
             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";
             tableName = "base_student";
             Map<String, String> baseStudent = dataMap.get(tableName);
             Map<String, String> baseStudent = dataMap.get(tableName);
-            Map<String, String> student = dataUtil.insertStudentOne(tableName, baseStudent);
+            dataUtil.insertStudentOne(tableName, baseStudent);
 
 
             log.info("数据推送完成");
             log.info("数据推送完成");
         } catch (Exception e) {
         } catch (Exception e) {

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

@@ -108,7 +108,7 @@ class HikvisionBaseDataTaskTest {
 //
 //
 //        //推送教职工
 //        //推送教职工
         tableName = "base_teacher";
         tableName = "base_teacher";
-        insertTeacher(tableName, dataMap.get(tableName), department);
+//        insertTeacher(tableName, dataMap.get(tableName), department);
 //
 //
         //推送车辆
         //推送车辆
 
 
@@ -124,7 +124,7 @@ class HikvisionBaseDataTaskTest {
 
 
         tableName = "base_student";
         tableName = "base_student";
         Map<String, String> baseStudent = dataMap.get(tableName);
         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");
 //        selectOrg(use, "base_class");
 
 
@@ -138,6 +138,11 @@ class HikvisionBaseDataTaskTest {
 //        selectResource(use);
 //        selectResource(use);
     }
     }
 
 
+    @Test
+    void testCarInsert() throws Exception {
+        outInRecordUtil.GetVehicleRecord(faceImportMapper);
+    }
+
     public static void selectCar(Db db, String tableName) throws SQLException {
     public static void selectCar(Db db, String tableName) throws SQLException {
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0";
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0";
         List<Department> dataList = db.query(sql, Department.class);
         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" +
                 " INNER JOIN base_grade t4 ON t3.grade_id = t4.id" +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" +
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" +
                 " AND t3.class_type IS NOT NULL" +
                 " 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);
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         Map<Integer, String> clientMap = new HashMap<>();
         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){
     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 " + tableName + " t2 ON t1.id = t2.user_id" +
                 " INNER JOIN xjr_user_dept_relation t3 ON t1.id = t3.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 " +
                 " 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" +
                 " 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);
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         JsonArray paramArray = new JsonArray();
         JsonArray paramArray = new JsonArray();
         Map<Integer, String> clientMap = new HashMap<>();
         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("birthday", objectMap.get("birth_date")==null?"":objectMap.get("birth_date").toString());
             paramJson.addProperty("personType", 1);
             paramJson.addProperty("personType", 1);
 
 
-            int gender;
+            int gender = 1;
             switch (objectMap.get("gender").toString()) {
             switch (objectMap.get("gender").toString()) {
                 case "SB10001":
                 case "SB10001":
                     gender = 1;
                     gender = 1;