车辆bug修改

This commit is contained in:
guoshengxiong 2024-07-05 19:31:06 +08:00
parent b160b71b0f
commit 9bc1a5870a
5 changed files with 66 additions and 15 deletions

View File

@ -11,7 +11,7 @@ public class HikvisionReservationCarInfo {
@JsonProperty("plateNo") @JsonProperty("plateNo")
private String plateNo; private String plateNo;
@JsonProperty("resvState") @JsonProperty("resvState")
private Long resvState; private Integer resvState;
@JsonProperty("resvWay") @JsonProperty("resvWay")
private Long resvWay; private Long resvWay;
@JsonProperty("allowTimes") @JsonProperty("allowTimes")
@ -23,7 +23,7 @@ public class HikvisionReservationCarInfo {
@JsonProperty("endTime") @JsonProperty("endTime")
private String endTime; private String endTime;
@JsonProperty("pageNo") @JsonProperty("pageNo")
private Long pageNo; private Integer pageNo;
@JsonProperty("pageSize") @JsonProperty("pageSize")
private Long pageSize; private Long pageSize;

View File

@ -2062,7 +2062,7 @@ public class HikvisionCall {
final String artemisPath = "/artemis"; final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v1/parkingSpace/reservations/deletion"; final String path = artemisPath + "/api/pms/v1/parkingSpace/reservations/deletion";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
JSONArray reservationCarInfoList = HikvisionUtil.getReservationCarInfoDataList(carInfo.getCarNumber(), project); JSONArray reservationCarInfoList = HikvisionUtil.getIscActiveReservationCarList(carInfo.getCarNumber(), project);
if (CollUtil.isNotEmpty(reservationCarInfoList)) { if (CollUtil.isNotEmpty(reservationCarInfoList)) {
for (int i = 0; i < reservationCarInfoList.size(); i++) { for (int i = 0; i < reservationCarInfoList.size(); i++) {
JSONObject jsonObject = reservationCarInfoList.getJSONObject(i); JSONObject jsonObject = reservationCarInfoList.getJSONObject(i);

View File

@ -392,7 +392,7 @@ public class XzHikvisionCompareDataServiceImpl extends ServiceImpl<XzHikvisionCo
jo.put("pageSize", 1); jo.put("pageSize", 1);
rtJo = HikvisionUtil.getBlackCarList(projectInfoBySn, jo); rtJo = HikvisionUtil.getBlackCarList(projectInfoBySn, jo);
} else { } else {
rtJo = HikvisionUtil.getReservationCarInfoList(carInfo.getCarNumber(), projectInfoBySn); rtJo = HikvisionUtil.getReservationCarInfoList(carInfo.getCarNumber(), projectInfoBySn, 1, 0);
} }
if (HikvisionUtil.isSuccess(rtJo)) { if (HikvisionUtil.isSuccess(rtJo)) {
JSONArray list = HikvisionUtil.getJsonObjectData(rtJo).getJSONArray("list"); JSONArray list = HikvisionUtil.getJsonObjectData(rtJo).getJSONArray("list");

View File

@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gexin.fastjson.JSON;
import com.zhgd.redis.lock.RedisRepository; import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.async.AsyncHikvision; import com.zhgd.xmgl.async.AsyncHikvision;
import com.zhgd.xmgl.call.HikvisionCall; import com.zhgd.xmgl.call.HikvisionCall;
@ -201,6 +202,7 @@ public class HikvisionTask {
param.put("parentOrgIndexCode", project.getProjectSn()); param.put("parentOrgIndexCode", project.getProjectSn());
JSONObject rtJo = HikvisionUtil.getSubOrgListByParentOrg(project, param); JSONObject rtJo = HikvisionUtil.getSubOrgListByParentOrg(project, param);
List<EnterpriseInfo> enterpriseInfos = BeanUtil.copyToList(enterpriseInfoService.getEnterpriseInfoList(new MapBuilder<String, Object>().put(Cts.PROJECT_SN, project.getProjectSn()).build()), EnterpriseInfo.class); List<EnterpriseInfo> enterpriseInfos = BeanUtil.copyToList(enterpriseInfoService.getEnterpriseInfoList(new MapBuilder<String, Object>().put(Cts.PROJECT_SN, project.getProjectSn()).build()), EnterpriseInfo.class);
log.info("数据校验我们平台的企业列表:{}", JSON.toJSONString(enterpriseInfos));
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo); JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list"); JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) { if (CollUtil.isEmpty(listJa)) {
@ -251,8 +253,10 @@ public class HikvisionTask {
JSONObject rtJo = HikvisionUtil.getSubOrgListByParentOrg(project, param); JSONObject rtJo = HikvisionUtil.getSubOrgListByParentOrg(project, param);
List<TeamInfo> teamList = teamInfoService.getProjectTeamList(new MapBuilder<String, Object>() List<TeamInfo> teamList = teamInfoService.getProjectTeamList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build()); .put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build());
log.info("数据校验我们平台的班组列表:{}", JSON.toJSONString(teamList));
List<DepartmentInfo> departmentInfoList = departmentInfoMapper.getDepartmentInfoList(new MapBuilder<String, Object>() List<DepartmentInfo> departmentInfoList = departmentInfoMapper.getDepartmentInfoList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build()); .put(Cts.PROJECT_SN, project.getProjectSn()).put(Cts.ENTERPRISE_ID, enterpriseId).build());
log.info("数据校验我们平台的部门列表:{}", JSON.toJSONString(departmentInfoList));
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo); JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list"); JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) { if (CollUtil.isEmpty(listJa)) {
@ -323,6 +327,7 @@ public class HikvisionTask {
.put(type == 2, Cts.DEPARTMENT_ID, orgIndex) .put(type == 2, Cts.DEPARTMENT_ID, orgIndex)
.build()); .build());
List<WorkerInfo> workerInfoList = workerPage.getRecords(); List<WorkerInfo> workerInfoList = workerPage.getRecords();
log.info("数据校验我们平台的人员列表:{}", JSON.toJSONString(workerInfoList));
JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo); JSONObject dataJo = HikvisionUtil.getJsonObjectData(rtJo);
JSONArray listJa = dataJo.getJSONArray("list"); JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) { if (CollUtil.isEmpty(listJa)) {
@ -395,12 +400,13 @@ public class HikvisionTask {
public void compareHikvisionForReservationCar(Project project) throws Exception { public void compareHikvisionForReservationCar(Project project) throws Exception {
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
HikvisionUtil.addPageParamIfAbsent(param); HikvisionUtil.addPageParamIfAbsent(param);
JSONArray listJa = HikvisionUtil.getReservationCarInfoDataList(null, project); JSONArray listJa = HikvisionUtil.getIscActiveReservationCarList(null, project);
List<CarInfo> carInfoList = carInfoService.selectCarList(new MapBuilder<String, Object>() List<CarInfo> carInfoList = carInfoService.selectCarList(new MapBuilder<String, Object>()
.put(Cts.PROJECT_SN, project.getProjectSn()) .put(Cts.PROJECT_SN, project.getProjectSn())
.put(Cts.RESERVATION_TYPE, 1) .put(Cts.RESERVATION_TYPE, 1)
.put("isBlack", 0) .put("isBlack", 0)
.build()); .build());
log.info("数据校验我们平台的临时车列表:{}", JSON.toJSONString(carInfoList));
compareAndAddData(project, listJa, carInfoList, 2); compareAndAddData(project, listJa, carInfoList, 2);
} }

View File

@ -1,5 +1,7 @@
package com.zhgd.xmgl.util; package com.zhgd.xmgl.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
@ -20,6 +22,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/** /**
* 海康接口 * 海康接口
@ -358,24 +364,61 @@ public class HikvisionUtil {
* *
* @param carNumber * @param carNumber
* @param project * @param project
* @param pageNo
* @param resvState
*/ */
public static JSONObject getReservationCarInfoList(String carNumber, Project project) throws Exception { public static JSONObject getReservationCarInfoList(String carNumber, Project project, int pageNo, int resvState) throws Exception {
final String artemisPath = "/artemis"; final String artemisPath = "/artemis";
final String path = artemisPath + "/api/pms/v2/reserveRecord/page"; final String path = artemisPath + "/api/pms/v2/reserveRecord/page";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
HikvisionReservationCarInfo info = getHikvisionReservationCarInfoObj(carNumber, project); HikvisionReservationCarInfo info = getHikvisionReservationCarInfoObj(carNumber, project, pageNo, resvState);
return doPostRtObj(host, path, JSON.toJSONString(info), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); return doPostRtObj(host, path, JSON.toJSONString(info), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
} }
/** /**
* 查询预约记录v2 * 获取isc中预约状态为0已预约3已进场并且车辆在有效期内的预约车查询预约记录v2
* *
* @param carNumber * @param carNumber
* @param project * @param project
*/ */
public static JSONArray getReservationCarInfoDataList(String carNumber, Project project) throws Exception { public static JSONArray getIscActiveReservationCarList(String carNumber, Project project) throws Exception {
JSONObject jo = getReservationCarInfoList(carNumber, project); long total = 0;
return getJsonObjectData(jo).getJSONArray("list"); int pageNo = 0;
JSONArray rt = new JSONArray();
do {
pageNo++;
JSONObject rsJo = getReservationCarInfoList(carNumber, project, pageNo, 0);
JSONObject dataJo = getJsonObjectData(rsJo);
total = dataJo.getInteger("total");
if (CollUtil.isNotEmpty(dataJo.getJSONArray("list"))) {
rt.addAll(dataJo.getJSONArray("list"));
}
} while (total > pageNo * 1000L);
total = 0;
pageNo = 0;
do {
pageNo++;
JSONObject rsJo = getReservationCarInfoList(carNumber, project, pageNo, 3);
JSONObject dataJo = getJsonObjectData(rsJo);
total = dataJo.getInteger("total");
if (CollUtil.isNotEmpty(dataJo.getJSONArray("list"))) {
rt.addAll(dataJo.getJSONArray("list"));
}
} while (total > pageNo * 1000L);
Date date = new Date();
//取有效时间内的车辆并去重车牌号
List<Object> list = rt.stream().filter(o -> {
String startTime = ((JSONObject) o).getString("startTime");
String endTime = ((JSONObject) o).getString("endTime");
return DateUtil.compare(DateUtil.parse(endTime), date) >= 0;
}).filter(distinctByKey(o1 -> ((JSONObject) o1).getString("plateNo"))).collect(Collectors.toList());
return JSONArray.parseArray(JSON.toJSONString(list));
}
private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
} }
/** /**
@ -383,22 +426,24 @@ public class HikvisionUtil {
* *
* @param carNumber * @param carNumber
* @param project * @param project
* @param pageNo
* @param resvState
* @return * @return
* @throws Exception * @throws Exception
*/ */
private static HikvisionReservationCarInfo getHikvisionReservationCarInfoObj(String carNumber, Project project) throws Exception { private static HikvisionReservationCarInfo getHikvisionReservationCarInfoObj(String carNumber, Project project, int pageNo, int resvState) throws Exception {
String projectParkCode = HikvisionUtil.getProjectParkCode(project); String projectParkCode = HikvisionUtil.getProjectParkCode(project);
HikvisionReservationCarInfo hikvisionReservationCarInfo = new HikvisionReservationCarInfo(); HikvisionReservationCarInfo hikvisionReservationCarInfo = new HikvisionReservationCarInfo();
hikvisionReservationCarInfo.setParkSyscode(projectParkCode); hikvisionReservationCarInfo.setParkSyscode(projectParkCode);
hikvisionReservationCarInfo.setPlateNo(carNumber); hikvisionReservationCarInfo.setPlateNo(carNumber);
hikvisionReservationCarInfo.setResvState(0L); hikvisionReservationCarInfo.setResvState(resvState);
//hikvisionReservationCarInfo.setResvWay(); //hikvisionReservationCarInfo.setResvWay();
//hikvisionReservationCarInfo.setAllowTimes(); //hikvisionReservationCarInfo.setAllowTimes();
//hikvisionReservationCarInfo.setIsCharge(); //hikvisionReservationCarInfo.setIsCharge();
//hikvisionReservationCarInfo.setStartTime(); //hikvisionReservationCarInfo.setStartTime();
//hikvisionReservationCarInfo.setEndTime(); //hikvisionReservationCarInfo.setEndTime();
hikvisionReservationCarInfo.setPageNo(1L); hikvisionReservationCarInfo.setPageNo(pageNo);
hikvisionReservationCarInfo.setPageSize(999L); hikvisionReservationCarInfo.setPageSize(1000L);
return hikvisionReservationCarInfo; return hikvisionReservationCarInfo;
} }