Explorar o código

Merge branch 'dev' of https://git.yingcaibx.com/tl/api into dev

# Conflicts:
#	src/main/java/com/xjrsoft/module/outint/controller/CarOutInRecordController.java
#	src/main/java/com/xjrsoft/module/outint/entity/CarOutInRecord.java
#	src/main/java/com/xjrsoft/module/outint/vo/CarOutInRecordPageVo.java
DESKTOP-USV654P\pc hai 9 meses
pai
achega
6d3ae5802d

+ 26 - 0
src/main/java/com/xjrsoft/config/HikvisionConfig.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: dzx
+ * @Date: 2024年5月30日
+ */
+@Data
+@Component
+@ConfigurationProperties("xjrsoft.hikvision")
+public class HikvisionConfig {
+
+    private String host;
+
+    private String appKey;
+
+    private String appSecret;
+
+    private String peopleUrl;
+
+    private String carUrl;
+
+}

+ 0 - 2
src/main/java/com/xjrsoft/module/attendance/controller/StatisticsController.java

@@ -5,7 +5,6 @@ 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.ArchivesStatusEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsVo;
@@ -131,7 +130,6 @@ public class StatisticsController {
         MPJLambdaWrapper<XjrUser> queryWrapper = MPJWrappers.<XjrUser>lambdaJoin()
                 .disableSubLogicDel()
                 .distinct()
-                .eq(BaseStudentSchoolRoll::getArchivesStatus, ArchivesStatusEnum.FB2901.getCode())
                 .eq(ObjectUtil.isNotNull(dto.getGradeId()), BaseStudentSchoolRoll::getGradeId, dto.getGradeId())
                 .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
                 .innerJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, XjrUser::getId)

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

@@ -92,7 +92,7 @@ public class TeacherStatisticsController {
             List<TeacherOutInRecord> outInRecords = teacherOutInRecordService.list(
                     new QueryWrapper<TeacherOutInRecord>().lambda()
                             .between(TeacherOutInRecord::getRecordTime, startTime, endTime)
-                            .eq(TeacherOutInRecord::getStatus, 0)
+                            .eq(TeacherOutInRecord::getStatus, 1)
                             .orderByAsc(TeacherOutInRecord::getRecordTime)
             );
             Map<Long, TeacherOutInRecord> outInMap = new HashMap<>();
@@ -114,7 +114,6 @@ public class TeacherStatisticsController {
                     }else{
                         record.setStatus("缺勤");
                     }
-
                 }
             }
         }

+ 5 - 3
src/main/java/com/xjrsoft/module/hikvision/util/EventController.java

@@ -7,6 +7,7 @@ import com.google.gson.JsonObject;
 import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.DatasourceUtil;
+import com.xjrsoft.config.HikvisionConfig;
 import com.xjrsoft.module.system.controller.AuthorizeController;
 import com.xjrsoft.module.teacher.mapper.FaceImportMapper;
 import io.swagger.annotations.Api;
@@ -35,18 +36,19 @@ public class EventController {
     DataSource datasource = DatasourceUtil.getDataSource(GlobalConstant.DEFAULT_DATASOURCE_KEY);
     private final Db use = Db.use(datasource);
     private final FaceImportMapper faceImportMapper;
+    private final HikvisionConfig hikvisionConfig;
 
     @PostMapping("/receiveCar")
     @ApiOperation(value = "接收车辆事件")
     public ResponseEntity<Void> receiveCarEvent(@RequestBody(required = false) String eventData) {
         log.info("Received event data: {}", eventData);
-//        new Thread(() -> {
+        new Thread(() -> {
             try {
                 outInRecordUtil.GetVehicleRecordTest(use, faceImportMapper, eventData);
             } catch (SQLException | ParseException e) {
                 log.error("Error processing event data", e);
             }
-//        }).start();
+        }).start();
 
         // 立即返回HTTP 200 OK响应
         return ResponseEntity.ok().build();
@@ -78,7 +80,7 @@ public class EventController {
         eventList.add(196893); //人脸匹配
 //        eventList.add(771760131); //正常过车
 //        eventList.add(771760134);
-        paramJson.addProperty("eventDest", "http://ff.cf.yingcaibx.com/event/receivePeople");
+        paramJson.addProperty("eventDest", hikvisionConfig.getPeopleUrl());
 //******************************************************************
         paramJson.add("eventTypes", eventList);
 

+ 55 - 55
src/main/java/com/xjrsoft/module/hikvision/util/Out_In_RecordUtil.java

@@ -47,10 +47,11 @@ public class Out_In_RecordUtil {
         db.execute(sql);
     }
 
-    private void vehicleInsertRecord(Db db, Long carMessageApplyId, String recordTime, String releaseReason, int category, String facePhoto, int status, String planNo, String crossRecordSyscode) throws SQLException {
-        String sql = "INSERT INTO car_out_in_record(create_date, car_message_apply_id, record_time, face_photo, status,releaseReason, planNo,crossRecordSyscode,category,delete_mark,enabled_mark) " +
+    private void vehicleInsertRecord(Db db, Long carMessageApplyId, String recordTime, int releaseReason, int category, String facePhoto, int status, String planNo, String crossRecordSyscode, int releaseResult, int releaseWay) throws SQLException {
+        String sql = "INSERT INTO car_out_in_record(create_date, car_message_apply_id, record_time, face_photo, status,release_reason, plan_no, cross_record_syscode, release_result, release_way, category,delete_mark,enabled_mark) " +
                 "VALUES(now(), '"  + carMessageApplyId + "', '" +
-                recordTime + "', '" + facePhoto + "', '" + status + "', '" + releaseReason + "', '" + planNo + "', '" + crossRecordSyscode + "', '" + category  +  "',0,1)";
+                recordTime + "', '" + facePhoto + "', '" + status + "', '" + releaseReason + "', '" + planNo + "', '" +
+                crossRecordSyscode + "', '" + releaseResult + "', '" + releaseWay + "', '" + category  +  "',0,1)";
         db.execute(sql);
     }
 
@@ -355,29 +356,40 @@ public class Out_In_RecordUtil {
 
             String carMessageApplyIdStr = faceImportMapper.GetCarMessageApplyIdByCarNumber(item.get("plateNo").getAsString().trim());
             Long carId = (carMessageApplyIdStr == null || carMessageApplyIdStr.isEmpty()) ? 0 : Long.parseLong(carMessageApplyIdStr);
-            int releaseMode = item.get("releaseMode").isJsonNull() ? null : item.get("releaseMode").getAsInt();
+            String category = null;
+            int categoryInt = 0;
+            if (item.has("carCategory")){
+                category = item.get("carCategory").isJsonNull() ? null : item.get("carCategory").getAsString();
+                switch (category){
+                    case "10":
+                        categoryInt = 0;
+                        break;
+                    case "11":
+                        categoryInt = 1;
+                        break;
+                }
+            }
+
+            int releaseResultInt = 0;
+            if (item.has("releaseResult")){
+                releaseResultInt = item.get("releaseResult").isJsonNull() ? null : item.get("releaseResult").getAsInt();
+            }
+
+            int releaseWayInt = 0;
+            if (item.has("releaseWay")){
+                releaseWayInt = item.get("releaseWay").isJsonNull() ? null : item.get("releaseWay").getAsInt();
+            }
+
+            int releaseReasonInt = 0;
+            if (item.has("releaseReason")){
+                releaseReasonInt = item.get("releaseReason").isJsonNull() ? null : item.get("releaseReason").getAsInt();
+            }
+
             String crossRecordSyscode = item.get("crossRecordSyscode").isJsonNull() ? null : item.get("crossRecordSyscode").getAsString();
             String plateNo = item.get("plateNo").isJsonNull() ? null : item.get("plateNo").getAsString();
             String eventTime = item.get("crossTime").isJsonNull() ? null : ChangeTime(item.get("crossTime").getAsString());
-            int releaseReasonInt = item.get("releaseReason").isJsonNull() ? null : item.get("releaseReason").getAsInt();
-            String releaseReason = null;
-            switch (releaseReasonInt){
-                case 100:
-                    releaseReason = "固定车自动放行";
-                    break;
-                case 101:
-                    releaseReason = "临时车自动放行";
-                    break;
-                case 102:
-                    releaseReason = "预约车自动放行";
-                    break;
-                case 103:
-                    releaseReason = "一户多车自动放行";
-                    break;
-            }
-            int status = item.get("vehicleOut").isJsonNull() ? null : item.get("vehicleOut").getAsInt();
 
-            if(vehicle_id_list.contains(crossRecordSyscode)) continue;
+            int status = item.get("vehicleOut").isJsonNull() ? null : item.get("vehicleOut").getAsInt();
 
             JsonElement facePicUriElement = item.get("facePicUri");
             String facePicUri;
@@ -386,8 +398,11 @@ public class Out_In_RecordUtil {
             } else {
                 facePicUri = ApiUtil.GetRedirectURL(facePicUriElement.getAsString());
             }
-//            System.out.println(GetReserveOrderNo(crossRecordSyscode) + "haha");
-            vehicleInsertRecord(use, carId, eventTime, releaseReason, releaseMode, facePicUri, status, plateNo, crossRecordSyscode);
+            System.out.println(facePicUri + "haha");
+
+            if(vehicle_id_list.contains(crossRecordSyscode)) continue;
+
+            vehicleInsertRecord(use, carId, eventTime, releaseReasonInt, categoryInt, facePicUri, status, plateNo, crossRecordSyscode, releaseResultInt, releaseWayInt);
         }
     }
 
@@ -401,21 +416,6 @@ public class Out_In_RecordUtil {
         return apiUtil.doPost(apiPath, String.valueOf(paramJson), null);
     }
 
-    private String GetReserveOrderNo(String parkSyscode){
-        ApiUtil apiUtil = new ApiUtil();
-        String apiPath = "/api/pms/v2/reserveRecord/page";
-        JsonObject paramJson = new JsonObject();
-        paramJson.addProperty("pageNo", 1);
-        paramJson.addProperty("pageSize", 50);
-
-        String response = apiUtil.doPost(apiPath, String.valueOf(paramJson), null);
-        System.out.println(response + "xixi");
-//        JsonElement responseElement = new Gson().fromJson(response, JsonElement.class);
-//        JsonElement dataList = responseElement.getAsJsonObject().getAsJsonObject("data").getAsJsonArray("list");
-
-        return "123";//dataList.getAsJsonObject().get("reserveOrderNo").getAsString()
-    }
-
     private String ChangeTime(String recordTime) throws ParseException {
         SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
         SimpleDateFormat mysqlFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -468,6 +468,7 @@ public class Out_In_RecordUtil {
 
     public void GetVehicleRecordTest(Db use, FaceImportMapper faceImportMapper, String data) throws SQLException, ParseException {
         if (data != null) {
+            List<String> vehicle_id_list = faceImportMapper.GetVehicleIdList();
             try {
                 JsonObject jsonObject = new Gson().fromJson(data, JsonObject.class);
                 JsonObject paramsObject = jsonObject.getAsJsonObject("params");
@@ -483,30 +484,27 @@ public class Out_In_RecordUtil {
                     Long carId = (carMessageApplyIdStr == null || carMessageApplyIdStr.isEmpty()) ? 0 : Long.parseLong(carMessageApplyIdStr);
                     String eventTime = ChangeTime(dataObject.get("time").getAsString());
 
-                    int releaseMode = 0;
+                    int releaseWayInt = 0;
                     int releaseReasonInt = 0;
+                    int releaseResultInt = 0;
                     JsonObject inResultObject = dataObject.getAsJsonObject("inResult");
                     if (inResultObject != null) {
                         JsonObject rlsResultObject = inResultObject.getAsJsonObject("rlsResult");
-                        if (rlsResultObject != null && rlsResultObject.has("releaseWay")) {
-                            releaseMode = rlsResultObject.get("releaseWay").getAsInt();
+                        if (rlsResultObject != null && rlsResultObject.has("releaseWay") && rlsResultObject.has("releaseReason") && rlsResultObject.has("releaseResult")) {
+                            releaseWayInt = rlsResultObject.get("releaseWay").getAsInt();
                             releaseReasonInt = rlsResultObject.get("releaseReason").getAsInt();
+                            releaseResultInt = rlsResultObject.get("releaseResult").getAsInt();
                         }
                     }
 
-                    String releaseReason = null;
-                    switch (releaseReasonInt){
-                        case 100:
-                            releaseReason = "固定车自动放行";
+                    String carAttributeName = dataObject.get("carAttributeName").getAsString().trim();
+                    int category = -1;
+                    switch (carAttributeName){
+                        case "临时车":
+                            category = 1;
                             break;
-                        case 101:
-                            releaseReason = "临时车自动放行";
-                            break;
-                        case 102:
-                            releaseReason = "预约车自动放行";
-                            break;
-                        case 103:
-                            releaseReason = "一户多车自动放行";
+                        case "固定车":
+                            category = 0;
                             break;
                     }
 
@@ -518,7 +516,9 @@ public class Out_In_RecordUtil {
 
                     int status = eventObject.get("status").getAsInt();
 
-                    vehicleInsertRecord(use, carId, eventTime, releaseReason, releaseMode, ApiUtil.GetRedirectURL(facePicUri), status,carNum,eventIndex);
+                    if (vehicle_id_list.contains(eventIndex)) continue;
+
+                    vehicleInsertRecord(use, carId, eventTime, releaseReasonInt, category, ApiUtil.GetRedirectURL(facePicUri), status, carNum, eventIndex, releaseResultInt, releaseWayInt);
                 }
             } catch (Exception e) {
                 log.info(String.valueOf(e));

+ 2 - 0
src/main/java/com/xjrsoft/module/outint/controller/CarOutInRecordController.java

@@ -66,6 +66,7 @@ public class CarOutInRecordController {
                         .between((ObjectUtil.isNotNull(dto.getStartTime()) && ObjectUtil.isNotNull(dto.getStartTime())), CarOutInRecord::getRecordTime, LocalDateTimeUtil.format(dto.getStartTime(),"yyyy-MM-dd HH:mm:ss"), LocalDateTimeUtil.format(dto.getEndTime(),"yyyy-MM-dd HH:mm:ss"))
                         .eq(ObjectUtil.isNotNull(dto.getCategory()), CarOutInRecord::getCategory, dto.getCategory())
                         .eq(ObjectUtil.isNotNull(dto.getStatus()), CarOutInRecord::getStatus, dto.getStatus())
+
                         .eq(ObjectUtil.isNotNull(dto.getVehicleType()), CarOutInRecord::getVehicleType, dto.getVehicleType())
                         .eq(ObjectUtil.isNotNull(dto.getReleaseReason()), CarOutInRecord::getReleaseReason, dto.getReleaseReason())
                         .eq(ObjectUtil.isNotNull(dto.getReleaseWay()), CarOutInRecord::getReleaseWay, dto.getReleaseWay())
@@ -73,6 +74,7 @@ public class CarOutInRecordController {
                         .like(StrUtil.isNotBlank(dto.getName()), CarOutInRecord::getName,dto.getName())
                         .like(StrUtil.isNotBlank(dto.getPhone()),CarOutInRecord::getPhone,dto.getPhone())
 
+
                         .select(CarOutInRecord::getId)
 
                         .selectAs(CarOutInRecord::getPlanNo,CarOutInRecordPageVo::getPlateNumber)

+ 6 - 7
src/main/java/com/xjrsoft/module/outint/entity/CarOutInRecord.java

@@ -72,8 +72,8 @@ public class CarOutInRecord implements Serializable {
     /**
     * 车辆id(car_message_apply),固定车辆使用
     */
-    @ApiModelProperty("车辆id(car_message_apply),固定车辆使用")
-    private Long carMessageApplyId;
+    @ApiModelProperty("过车唯一id")
+    private String crossRecordSyscode;
     /**
     * 记录时间
     */
@@ -83,7 +83,7 @@ public class CarOutInRecord implements Serializable {
     * 人脸照片
     */
     @ApiModelProperty("人脸照片")
-    private Long facePhoto;
+    private String facePhoto;
     /**
     * 进出状态(0:进 1:出)
     */
@@ -99,13 +99,9 @@ public class CarOutInRecord implements Serializable {
     @ApiModelProperty("考勤状态")
     private String attendanceStatus;
 
-
     @ApiModelProperty("车牌号")
     private String planNo;
 
-    @ApiModelProperty("放行结果")
-    private String releaseResult;
-
     @ApiModelProperty("放行方式")
     private String releaseWay;
     /**
@@ -114,6 +110,9 @@ public class CarOutInRecord implements Serializable {
     @ApiModelProperty("100-固定车放行 101-临时车自动放行 102-预约车自动放行 103-一户多车自动放行")
     private String releaseReason;
 
+    @ApiModelProperty("放行结果")
+    private String releaseResult;
+
     /**
      * 车辆类型
      */

+ 1 - 1
src/main/java/com/xjrsoft/module/student/service/impl/StudentLeaveServiceImpl.java

@@ -99,7 +99,7 @@ public class StudentLeaveServiceImpl extends MPJBaseServiceImpl<StudentLeaveMapp
         List<StudentLeave> leaveList = this.baseMapper.getLeaveList(startTime, endTime);
         Map<Long, StudentLeave> result = new HashMap<>();
         for (StudentLeave studentLeave : leaveList) {
-            result.put(studentLeave.getStudentUserId(), studentLeave);
+            result.put(studentLeave.getClassId(), studentLeave);
         }
         return result;
     }

+ 6 - 0
src/main/resources/application-dev.yml

@@ -141,6 +141,12 @@ xjrsoft:
   ureport:
     account: xjrsoft
     password: 123456
+  hikvision:
+    host: 219.153.208.43:30443
+    appKey: 21350095
+    appSecret: LXi9rE2fm8IfRoLnTA2G
+    people-url: http://ff.cf.yingcaibx.com/event/receivePeople
+    car-url: http://ff.cf.yingcaibx.com/event/receive
   keycloak:
     url: http://192.168.0.221:12829/auth/
     realm: test

+ 6 - 0
src/main/resources/application-pre.yml

@@ -125,6 +125,12 @@ xjrsoft:
   ureport:
     account: xjrsoft
     password: 123456
+  hikvision:
+    host: 219.153.208.43:30443
+    appKey: 21350095
+    appSecret: LXi9rE2fm8IfRoLnTA2G
+    people-url: http://ff.cf.yingcaibx.com/event/receivePeople
+    car-url: http://ff.cf.yingcaibx.com/event/receive
   keycloak:
     url: http://192.168.0.221:12829/auth/
     realm: test

+ 6 - 0
src/main/resources/application-prod.yml

@@ -121,6 +121,12 @@ xjrsoft:
   ureport:
     account: xjrsoft
     password: 123456
+  hikvision:
+    host: 219.153.208.43:30443
+    appKey: 21350095
+    appSecret: LXi9rE2fm8IfRoLnTA2G
+    people-url: https://zhxy.cqtlzjzx.com/event/receivePeople
+    car-url: https://zhxy.cqtlzjzx.com/event/receive
   keycloak:
     url: http://192.168.0.221:12829/auth/
     realm: test

+ 1 - 1
src/main/resources/mapper/teacher/TeacherFaceImportMapper.xml

@@ -103,7 +103,7 @@
     </select>
 
     <select id="GetVehicleIdList" resultType="java.lang.String">
-        SELECT crossRecordSyscode
+        SELECT cross_record_syscode
         FROM car_out_in_record
     </select>
 </mapper>