From 914b1d75949af61aec63db0668bb604e7edae84f Mon Sep 17 00:00:00 2001 From: guo Date: Wed, 6 Mar 2024 20:22:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E8=BD=A6=E8=BE=86bug?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/HikvisionReservationCarInfo.java | 30 ++++ .../com/zhgd/xmgl/call/HikvisionCall.java | 141 +++++++++++------- 2 files changed, 118 insertions(+), 53 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/base/HikvisionReservationCarInfo.java diff --git a/src/main/java/com/zhgd/xmgl/base/HikvisionReservationCarInfo.java b/src/main/java/com/zhgd/xmgl/base/HikvisionReservationCarInfo.java new file mode 100644 index 000000000..f0b766965 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/base/HikvisionReservationCarInfo.java @@ -0,0 +1,30 @@ +package com.zhgd.xmgl.base; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class HikvisionReservationCarInfo { + + @JsonProperty("parkSyscode") + private String parkSyscode; + @JsonProperty("plateNo") + private String plateNo; + @JsonProperty("resvState") + private Long resvState; + @JsonProperty("resvWay") + private Long resvWay; + @JsonProperty("allowTimes") + private Long allowTimes; + @JsonProperty("isCharge") + private Long isCharge; + @JsonProperty("startTime") + private String startTime; + @JsonProperty("endTime") + private String endTime; + @JsonProperty("pageNo") + private Long pageNo; + @JsonProperty("pageSize") + private Long pageSize; + +} diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 6e355d0a9..9d34ecfbe 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -1,12 +1,12 @@ package com.zhgd.xmgl.call; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.google.gson.JsonArray; import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.xmgl.base.*; import com.zhgd.xmgl.modules.basicdata.entity.HikvisionRequestRetry; @@ -583,34 +583,33 @@ public class HikvisionCall { jo.put("vehicleIds", list); HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); - deleteReservationCarInfo(carInfo); + deleteReservationCarInfo(carInfo, project); } /** * 取消车位预约 * * @param carInfo + * @param project */ - private void deleteReservationCarInfo(CarInfo carInfo) { - Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, carInfo.getProjectSn())); - if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { - return; + private void deleteReservationCarInfo(CarInfo carInfo, Project project) { + try { + final String ARTEMIS_PATH = "/artemis"; + final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion"; + String host = "https://" + project.getArtemisConfigHost(); + JSONArray reservationCarInfoList = getReservationCarInfoList(carInfo, project); + if (reservationCarInfoList != null) { + for (int i = 0; i < reservationCarInfoList.size(); i++) { + JSONObject jsonObject = reservationCarInfoList.getJSONObject(i); + String reserveOrderNo = jsonObject.getString("reserveOrderNo"); + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("reserveOrderNo", reserveOrderNo); + HikvisionUtil.doPost(host, path, jsonObject1.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + } + } + } catch (Exception e) { + e.printStackTrace(); } - JSONArray parkList = getParkList(project); - if (parkList != null && parkList.size() > 0) { - JSONObject jo = parkList.getJSONObject(0); - String parkIndexCode = jo.getString("parkIndexCode"); - - } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion"; - String host = "https://" + project.getArtemisConfigHost(); - JSONObject jo = new JSONObject(); - JsonArray array = new JsonArray(); - String body = array.toString(); - array.add(carInfo.getId()); - jo.put("vehicleIds", array); - HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } @@ -618,23 +617,41 @@ public class HikvisionCall { * 查询预约记录v2 * * @param carInfo + * @param project */ - private void getReservationCarInfoList(CarInfo carInfo) { - Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getProjectSn, carInfo.getProjectSn())); - if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { - return; - } - + private JSONArray getReservationCarInfoList(CarInfo carInfo, Project project) { final String ARTEMIS_PATH = "/artemis"; final String path = ARTEMIS_PATH + "/api/pms/v2/reserveRecord/page"; String host = "https://" + project.getArtemisConfigHost(); - JSONObject jo = new JSONObject(); - JsonArray array = new JsonArray(); - String body = array.toString(); - array.add(carInfo.getId()); - jo.put("vehicleIds", array); - HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + HikvisionReservationCarInfo info = getHikvisionReservationCarInfoObj(carInfo, project); + String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(info), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + try { + JSONObject jsonObjectData = HikvisionUtil.getJSONObjectData(rs); + return jsonObjectData.getJSONArray("list"); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + private HikvisionReservationCarInfo getHikvisionReservationCarInfoObj(CarInfo carInfo, Project project) { + JSONArray parkList = getParkList(project); + HikvisionReservationCarInfo hikvisionReservationCarInfo = new HikvisionReservationCarInfo(); + if (parkList != null && parkList.size() > 0) { + JSONObject jo = parkList.getJSONObject(0); + String parkIndexCode = jo.getString("parkIndexCode"); + hikvisionReservationCarInfo.setParkSyscode(parkIndexCode); + hikvisionReservationCarInfo.setPlateNo(carInfo.getCarNumber()); + } + //hikvisionReservationCarInfo.setResvState(); + //hikvisionReservationCarInfo.setResvWay(); + //hikvisionReservationCarInfo.setAllowTimes(); + //hikvisionReservationCarInfo.setIsCharge(); + //hikvisionReservationCarInfo.setStartTime(); + //hikvisionReservationCarInfo.setEndTime(); + hikvisionReservationCarInfo.setPageNo(1L); + hikvisionReservationCarInfo.setPageSize(999L); + return hikvisionReservationCarInfo; } @@ -940,31 +957,49 @@ public class HikvisionCall { * @param carInfo */ public void reservationCar(Project project, CarInfo carInfo) { - if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { - return; + try { + //临时车辆预约 + if (Objects.equals(carInfo.getCarModuleType(), 2)) { + final String ARTEMIS_PATH = "/artemis"; + final String path = ARTEMIS_PATH + "/api/pms/v2/parkingSpace/reservations/addition"; + String host = "https://" + project.getArtemisConfigHost(); + ParkReservation parkReservation = getParkReservation(project, carInfo); + if (parkReservation != null) { + HikvisionUtil.doPost(host, path, JSON.toJSONString(parkReservation), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); + } + } else { + //删除预约车辆 + deleteReservationCarInfo(carInfo, project); + } + } catch (Exception e) { + e.printStackTrace(); } - final String ARTEMIS_PATH = "/artemis"; - final String path = ARTEMIS_PATH + "/api/pms/v2/parkingSpace/reservations/addition"; - String host = "https://" + project.getArtemisConfigHost(); - ParkReservation parkReservation = getParkReservation(project, carInfo); - HikvisionUtil.doPost(host, path, JSON.toJSONString(parkReservation), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); } private ParkReservation getParkReservation(Project project, CarInfo carInfo) { - WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId()); - ParkReservation parkReservation = new ParkReservation(); - parkReservation.setParkSyscode(null); - parkReservation.setPlateNo(carInfo.getCarNumber()); - if (workerInfo != null) { - parkReservation.setPhoneNo(workerInfo.getPhoneNumber()); - parkReservation.setOwner(workerInfo.getWorkerName()); + JSONArray parkList = getParkList(project); + if (parkList != null && parkList.size() > 0) { + JSONObject jo = parkList.getJSONObject(0); + String parkIndexCode = jo.getString("parkIndexCode"); + WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId()); + ParkReservation parkReservation = new ParkReservation(); + parkReservation.setParkSyscode(parkIndexCode); + parkReservation.setPlateNo(carInfo.getCarNumber()); + if (workerInfo != null) { + parkReservation.setPhoneNo(workerInfo.getPhoneNumber()); + parkReservation.setOwner(workerInfo.getWorkerName()); + } + parkReservation.setAllowTimes(Convert.toLong(carInfo.getEntryAndExitPermit())); + parkReservation.setIsCharge("0"); + parkReservation.setStartTime(DateUtil.format(carInfo.getReserveStartTime(), "yyyy-MM-dd'T'HH:mm:ss") + "+08:00"); + parkReservation.setEndTime(DateUtil.format(carInfo.getReserveEndTime(), "yyyy-MM-dd'T'HH:mm:ss") + "+08:00"); + return parkReservation; } - parkReservation.setAllowTimes(Long.valueOf(carInfo.getEntryAndExitPermit())); - parkReservation.setIsCharge("0"); - parkReservation.setResvWay(null); - parkReservation.setStartTime(DateUtil.format(carInfo.getReserveStartTime(), "yyyy-MM-ddTHH:mm:ss+Z")); - parkReservation.setEndTime(DateUtil.format(carInfo.getReserveEndTime(), "yyyy-MM-ddTHH:mm:ss+Z")); - return parkReservation; + return null; + } + + public static void main(String[] args) { + System.out.println(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss+'Z'")); } /**