Procházet zdrojové kódy

教师考勤调整

dzx před 1 rokem
rodič
revize
e8c47967a9

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

@@ -21,6 +21,7 @@ import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
 import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.outint.dto.TeacherOutInRecordDto;
 import com.xjrsoft.module.outint.entity.CarOutInRecord;
 import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
 import com.xjrsoft.module.outint.service.ICarOutInRecordService;
@@ -172,14 +173,12 @@ public class TeacherStatisticsController {
                     record.setStatus(teacherLeave.getLeaveReason());
                     continue;
                 }
-                List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.list(
-                    new MPJLambdaWrapper<TeacherOutInRecord>()
-                            .le(TeacherOutInRecord::getRecordTime, startTime)
-                            .eq(TeacherOutInRecord::getStatus, OutInStatusEnum.enter.getCode())
-                            .eq("DATE_FORMAT(record_time, '%Y-%m-%d')", startTime.toLocalDate())
-                            .eq(TeacherOutInRecord::getUserId, record.getUserId())
-                            .orderByAsc(TeacherOutInRecord::getRecordTime)
-                );
+                TeacherOutInRecordDto outInDto = new TeacherOutInRecordDto();
+                outInDto.setQueryDate(startTime.toLocalDate());
+                outInDto.setRecordTime(startTime);
+                outInDto.setStatus(OutInStatusEnum.enter.getCode());
+                outInDto.setUserId(record.getUserId());
+                List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.getListByParam(outInDto);
                 if(!outInRecords.isEmpty()){
                     TeacherOutInRecord outInRecord = outInRecords.get(0);
                     if(outInRecord != null){

+ 43 - 0
src/main/java/com/xjrsoft/module/outint/dto/TeacherOutInRecordDto.java

@@ -0,0 +1,43 @@
+package com.xjrsoft.module.outint.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+
+/**
+* @title: 教师出入记录分页查询入参
+* @Author dzx
+* @Date: 2024-05-14
+* @Version 1.0
+*/
+@Data
+public class TeacherOutInRecordDto implements Serializable {
+    /**
+     * 记录开始时间
+     */
+    @ApiModelProperty("海康记录时间")
+    private LocalDateTime recordTime;
+
+    /**
+     * 过车方向
+     */
+    @ApiModelProperty("进出状态(0:进 1:出)")
+    private  Integer status;
+    /**
+     * 用户id
+     */
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+
+    /**
+     * 记录开始时间
+     */
+    @ApiModelProperty("查询日期")
+    private LocalDate queryDate;
+
+}

+ 5 - 0
src/main/java/com/xjrsoft/module/outint/mapper/TeacherOutInRecordMapper.java

@@ -1,8 +1,12 @@
 package com.xjrsoft.module.outint.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.outint.dto.TeacherOutInRecordDto;
 import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
 * @title: 教师出入记录
@@ -13,4 +17,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface TeacherOutInRecordMapper extends MPJBaseMapper<TeacherOutInRecord> {
 
+    List<TeacherOutInRecord> getListByParam(@Param("dto") TeacherOutInRecordDto dto);
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/outint/service/ITeacherOutInRecordService.java

@@ -1,7 +1,11 @@
 package com.xjrsoft.module.outint.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.outint.dto.TeacherOutInRecordDto;
 import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
 * @title: 教师出入记录
@@ -11,4 +15,6 @@ import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
 */
 
 public interface ITeacherOutInRecordService extends MPJBaseService<TeacherOutInRecord> {
+
+    List<TeacherOutInRecord> getListByParam(TeacherOutInRecordDto dto);
 }

+ 7 - 0
src/main/java/com/xjrsoft/module/outint/service/impl/TeacherOutInRecordServiceImpl.java

@@ -1,12 +1,15 @@
 package com.xjrsoft.module.outint.service.impl;
 
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.outint.dto.TeacherOutInRecordDto;
 import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
 import com.xjrsoft.module.outint.mapper.TeacherOutInRecordMapper;
 import com.xjrsoft.module.outint.service.ITeacherOutInRecordService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
 * @title: 教师出入记录
 * @Author dzx
@@ -16,4 +19,8 @@ import org.springframework.stereotype.Service;
 @Service
 @AllArgsConstructor
 public class TeacherOutInRecordServiceImpl extends MPJBaseServiceImpl<TeacherOutInRecordMapper, TeacherOutInRecord> implements ITeacherOutInRecordService {
+    @Override
+    public List<TeacherOutInRecord> getListByParam(TeacherOutInRecordDto dto) {
+        return this.baseMapper.getListByParam(dto);
+    }
 }

+ 15 - 0
src/main/resources/mapper/outin/TeacherOutInRecordMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.outint.mapper.TeacherOutInRecordMapper">
+    <select id="getListByParam" parameterType="com.xjrsoft.module.outint.dto.TeacherOutInRecordDto" resultType="com.xjrsoft.module.outint.entity.TeacherOutInRecord">
+        SELECT * FROM teacher_out_in_record
+        WHERE delete_mark = 0
+        AND #{dto.recordTime} >= record_time
+        AND status = #{dto.status}
+        AND DATE_FORMAT(record_time, '%Y-%m-%d') = #{dto.queryDate}
+        AND user_id = #{dto.userId}
+        ORDER BY record_time ASC
+    </select>
+</mapper>

+ 1 - 0
src/test/java/com/xjrsoft/module/hikvision/util/FaceImportUtilTest.java

@@ -41,6 +41,7 @@ class FaceImportUtilTest {
         List<TeacherFaceProcess> list = teacherFaceProcessService.list(
             new QueryWrapper<TeacherFaceProcess>().lambda()
             .notLike(TeacherFaceProcess::getHikvisionResult, "{\"code\":\"0\",\"msg\":\"success\",")
+                    .orderByAsc(TeacherFaceProcess::getModifyDate)
         );
 
 

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

@@ -76,11 +76,6 @@ class HikvisionBaseDataTaskTest {
     }
 
 
-
-
-
-
-
     @Test
     void test() throws Exception {
         String sql = "SELECT distinct table_name FROM hikvision_data WHERE 1 = 1";
@@ -106,14 +101,14 @@ class HikvisionBaseDataTaskTest {
         }
 //        DataUtil dataUtil = new DataUtil();
         String tableName = "xjr_department";
-//        Map<String, String> department = dataUtil.insertDepartment(use, tableName, dataMap.get(tableName));
-//        if(department.isEmpty() && dataMap.get(tableName) != null){
-//            department = dataMap.get(tableName);
-//        }
+        Map<String, String> department = dataMap.get(tableName);//dataUtil.insertDepartment(use, tableName, dataMap.get(tableName));
+        if(department.isEmpty() && dataMap.get(tableName) != null){
+            department = dataMap.get(tableName);
+        }
 //
 //        //推送教职工
-//        tableName = "base_teacher";
-//        dataUtil.insertTeacher(use, tableName, dataMap.get(tableName), department);
+        tableName = "base_teacher";
+        insertTeacher(tableName, dataMap.get(tableName), department);
 //
         //推送车辆
 
@@ -129,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");
 
@@ -137,7 +132,7 @@ class HikvisionBaseDataTaskTest {
 //        String carTableName = "car_message_apply";
 //        selectCar(use, carTableName);
 
-        outInRecordUtil.GetVehicleRecord(faceImportMapper);
+//        outInRecordUtil.GetVehicleRecord(faceImportMapper);
 //        outInRecordUtil.GetTeacherAndStudentRecords(faceImportMapper);
 ////        selecAllPersonById(use);
 //        selectResource(use);
@@ -177,8 +172,8 @@ class HikvisionBaseDataTaskTest {
                 " INNER JOIN base_class t3 ON t2.class_id = t3.id" +
                 " 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 t3.class_type IS NOT NULL" +
+                " AND t1.name IN ('陆晓峰','李星兴')";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         Map<Integer, String> clientMap = new HashMap<>();
 
@@ -188,7 +183,7 @@ class HikvisionBaseDataTaskTest {
         Map<String, String> header = new HashMap<>();
         header.put("tagId", "insert_student");
 
-        for(int i = 1; i < list.size(); i ++){
+        for(int i = 0; i < list.size(); i ++){
             Map<String, Object> objectMap = list.get(i);
             String apiPath = "/api/resource/v2/person/single/add";
 
@@ -286,16 +281,30 @@ class HikvisionBaseDataTaskTest {
 
 
 
-    void selecAllPersonById(Db db) throws SQLException {
+    @Test
+    void selecAllPersonById() throws SQLException {
         String apiPath = "/api/resource/v2/person/advance/personList";
+
+        String sql = "SELECT * FROM xjr_user WHERE id IN (" +
+                " SELECT source_id FROM hikvision_data WHERE table_name IN( 'base_teacher','base_student')" +
+                " AND hikvision_id LIKE '%-%'" +
+                " )";
+        List<Map<String, Object>> maps = SqlRunnerAdapter.db().selectList(sql);
+        ApiUtil apiUtil = new ApiUtil();
         JsonObject jsonObject = new JsonObject();
         jsonObject.addProperty("pageNo", 1);
         jsonObject.addProperty("pageSize", 500);
-        jsonObject.addProperty("personIds", "654321987655613");
+        jsonObject.addProperty("personName", "胡玉");
+        String result = apiUtil.doPost(apiPath, jsonObject.toString(), null, null);
+        System.out.println(result);
 
 
-        ApiUtil apiUtil = new ApiUtil();
-        String result = apiUtil.doPost(apiPath, jsonObject.toString(), null, null);
+        for (Map<String, Object> map : maps) {
+            String name = map.get("name").toString();
+
+
+        }
+
     }
 
     void selecAllPerson(Db db) throws SQLException {
@@ -371,4 +380,114 @@ class HikvisionBaseDataTaskTest {
         System.out.println(result);
     }
 
+
+    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" +
+                " 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 = '黄文宇'";
+        List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
+        JsonArray paramArray = new JsonArray();
+        Map<Integer, String> clientMap = new HashMap<>();
+        for(int i = 0; i < list.size(); i ++){
+            Map<String, Object> objectMap = list.get(i);
+            if(tableData != null && tableData.containsKey(objectMap.get("id").toString())){
+                //continue;
+            }
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("clientId", i);
+            paramJson.addProperty("personId", objectMap.get("id").toString() + i);
+            paramJson.addProperty("personName", objectMap.get("name").toString());
+            paramJson.addProperty("orgIndexCode", objectMap.get("dept_id").toString());
+            paramJson.addProperty("phoneNo", objectMap.get("mobile")==null?"":objectMap.get("mobile").toString());
+            paramJson.addProperty("jobNo", objectMap.get("user_name").toString());
+            paramJson.addProperty("birthday", objectMap.get("birth_date")==null?"":objectMap.get("birth_date").toString());
+            paramJson.addProperty("personType", 1);
+
+            int gender;
+            switch (objectMap.get("gender").toString()) {
+                case "SB10001":
+                    gender = 1;
+                    break;
+                case "SB10002":
+                    gender = 2;
+                    break;
+                default:
+                    gender = 0;
+                    break;
+            }
+            paramJson.addProperty("gender", gender);
+            paramArray.add(paramJson);
+
+            clientMap.put(i, objectMap.get("id").toString());
+        }
+
+        String apiPath = "/api/resource/v1/person/batch/add";
+        Map<String, String> idMap = new HashMap<>();
+        JsonParser jsonParser = new JsonParser();
+        ApiUtil apiUtil = new ApiUtil();
+        Map<String, String> header = new HashMap<>();
+        header.put("tagId", "insert_teacher");
+
+        String result = apiUtil.doPost(apiPath, paramArray.toString(), null, header);
+        JsonElement parse = jsonParser.parse(result);
+        JsonObject resultJson = parse.getAsJsonObject();
+        if("0".equals(resultJson.get("code").getAsString()) && "success".equals(resultJson.get("msg").getAsString())){
+            JsonArray array = resultJson.get("data").getAsJsonObject().get("successes").getAsJsonArray();
+            for (JsonElement jsonElement : array) {
+                JsonObject jsonObject = jsonElement.getAsJsonObject();
+                idMap.put(clientMap.get(jsonObject.get("clientId").getAsInt()), jsonObject.get("personId").getAsString());
+            }
+        }else{
+
+        }
+        //插入记录表
+
+        insertRecord(tableName, idMap);
+        return idMap;
+    }
+
+    void insertRecord(String tableName, Map<?, String> idsMap){
+        if (idsMap.isEmpty()) {
+            return;
+        }
+        for (var entry : idsMap.entrySet()) {
+            var sourceId = entry.getKey();
+            String sql = "INSERT INTO hikvision_data(create_date, table_name, source_id, hikvision_id) " +
+                    "VALUES(now(), '" + tableName + "', '" + sourceId + "', '" + entry.getValue() + "')";
+            SqlRunnerAdapter.db().insert(sql);
+        }
+    }
+
+
+    @Test
+    void deletePerson() throws SQLException {
+        String sql = "SELECT * FROM xjr_user WHERE id IN (\n" +
+                "SELECT source_id FROM hikvision_data WHERE table_name IN( 'base_teacher','base_student')\n" +
+                "AND hikvision_id LIKE '%-%'\n" +
+                "AND hikvision_id NOT IN('14954805813957-14','14954812448325-19','14954812339909-17','14954812392774-18')\n" +
+                ") AND id NOT IN ('14954807016389', '14954806910277')\n";
+        List<Map<String, Object>> maps = SqlRunnerAdapter.db().selectList(sql);
+
+
+        String apiPath = "/api/resource/v1/person/batch/delete";
+        JsonObject paramJson = new JsonObject();
+        JsonArray personIds = new JsonArray();
+        for (Map<String, Object> map : maps) {
+
+            personIds.add(map.get("id").toString());
+        }
+        paramJson.add("personIds", personIds);
+
+        ApiUtil apiUtil = new ApiUtil();
+
+        Map<String, String> header = new HashMap<>();
+        header.put("tagId", "delete_teacher");
+        String result = apiUtil.doPost(apiPath, paramJson.toString(), null, header);
+
+        System.out.println(result);
+    }
+
 }