车辆修改

This commit is contained in:
guoshengxiong 2024-05-29 14:16:17 +08:00
parent 269ed1dbe1
commit 59a999825b
7 changed files with 98 additions and 78 deletions

View File

@ -139,14 +139,18 @@ public class AsyncHikvision {
public void addCarInfoForHikvision(CarInfo carInfo) { public void addCarInfoForHikvision(CarInfo carInfo) {
Date now = new Date(); Date now = new Date();
if (Objects.equals(carInfo.getCarModuleType(), 1)) { if (carInfo.getIsBlack() == 1) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now)); deleteCarInfoForHikvision(carInfo, true);
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now)); } else {
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) { if (Objects.equals(carInfo.getCarModuleType(), 1)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
}
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.addCarInfoForHikvisionAsyc(carInfo, now);
} }
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(carInfo.getIsBlack() == 1 ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.addCarInfoForHikvisionAsyc(carInfo, now);
} }
@Async("carInfoExecutor") @Async("carInfoExecutor")
@ -196,14 +200,18 @@ public class AsyncHikvision {
public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) { public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) {
Date now = new Date(); Date now = new Date();
if (Objects.equals(carInfo.getCarModuleType(), 1)) { if (carInfo.getIsBlack() == 1) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(2).setWhoId(carInfo.getId()).setCreateDate(now)); deleteCarInfoForHikvision(carInfo, true);
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now)); } else {
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) { if (Objects.equals(carInfo.getCarModuleType(), 1)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(2).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
}
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, old, now);
} }
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(carInfo.getIsBlack() == 1 ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, old, now);
} }
@Async("carInfoExecutor") @Async("carInfoExecutor")
@ -217,20 +225,20 @@ public class AsyncHikvision {
} }
} }
public void deleteCarInfoForHikvision(CarInfo carInfo) { public void deleteCarInfoForHikvision(CarInfo carInfo, boolean isSetBlack) {
Date now = new Date(); Date now = new Date();
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now)); xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(isSetBlack ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, now); asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, now, isSetBlack);
} }
@Async("carInfoExecutor") @Async("carInfoExecutor")
public void deleteCarInfoForHikvisionAsync(CarInfo carInfo, Date now) { public void deleteCarInfoForHikvisionAsync(CarInfo carInfo, Date now, boolean isSetBlack) {
try { try {
ThreadLocalUtil.addInKey("now", now); ThreadLocalUtil.addInKey("now", now);
hikvisionCall.deleteCarInfoForHikvision(carInfo); hikvisionCall.deleteCarInfoForHikvision(carInfo, isSetBlack);
} catch (Exception e) { } catch (Exception e) {
log.error("海康:", e); log.error("海康:", e);
sendNoticeForCar(carInfo, e, "删除"); sendNoticeForCar(carInfo, e, "删除");

View File

@ -881,7 +881,7 @@ public class HikvisionCall {
// deleteWorkerFromHttp(deleteWorker, project); // deleteWorkerFromHttp(deleteWorker, project);
// } // }
String rs = doAddWorkerFromHttp(workerInfo, project); String rs = doAddWorkerFromHttp(workerInfo, project);
sendNoticeForWorker("添加人员到海康isc", rs, workerInfo, 1, 1); sendNoticeAndSetStatusForWorker("添加人员到海康isc", rs, workerInfo, 1, 1);
} }
public String doAddWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public String doAddWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
@ -944,7 +944,7 @@ public class HikvisionCall {
public void editWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public void editWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
String rs = doEditWorkerFromHttp(workerInfo, project); String rs = doEditWorkerFromHttp(workerInfo, project);
sendNoticeForWorker("更新人员到海康isc", rs, workerInfo, 1, 2); sendNoticeAndSetStatusForWorker("更新人员到海康isc", rs, workerInfo, 1, 2);
} }
public String doEditWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public String doEditWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
@ -966,7 +966,7 @@ public class HikvisionCall {
String fieldAcquisitionUrl = workerInfo.getFieldAcquisitionUrl(); String fieldAcquisitionUrl = workerInfo.getFieldAcquisitionUrl();
if (StringUtils.isNotBlank(fieldAcquisitionUrl)) { if (StringUtils.isNotBlank(fieldAcquisitionUrl)) {
String rs = doAddWorkerFace(workerInfo, project); String rs = doAddWorkerFace(workerInfo, project);
sendNoticeForWorker("添加人员照片到海康isc", rs, workerInfo, 2, 1); sendNoticeAndSetStatusForWorker("添加人员照片到海康isc", rs, workerInfo, 2, 1);
} }
} }
@ -981,12 +981,12 @@ public class HikvisionCall {
return rs; return rs;
} }
private void sendNoticeForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate) { private void sendNoticeAndSetStatusForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate) {
boolean callSuc = HikvisionUtil.isSuccess(rs); boolean callSuc = HikvisionUtil.isSuccess(rs);
sendNoticeForCarInfo(title, rs, carInfo, type, operate, callSuc); sendNoticeAndSetStatusForCarInfo(title, rs, carInfo, type, operate, callSuc);
} }
public void sendNoticeForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate, boolean callSuc) { public void sendNoticeAndSetStatusForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate, boolean callSuc) {
String msg; String msg;
boolean success = false; boolean success = false;
if (callSuc) { if (callSuc) {
@ -1013,7 +1013,7 @@ public class HikvisionCall {
} else if (Objects.equals(code, "0x02e33400")) { } else if (Objects.equals(code, "0x02e33400")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆属于黑名单内不能下发预约车"; msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆属于黑名单内不能下发预约车";
title += "失败"; title += "失败";
} else if (Objects.equals(code, "0x00072003")) { } else if (Objects.equals(code, "0x00072003")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车牌格式不正确!"; msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车牌格式不正确!";
title += "失败"; title += "失败";
} else { } else {
@ -1056,7 +1056,7 @@ public class HikvisionCall {
} }
} }
private void sendNoticeForWorker(String title, String rs, WorkerInfo workerInfo, int type, int operate) { private void sendNoticeAndSetStatusForWorker(String title, String rs, WorkerInfo workerInfo, int type, int operate) {
boolean callSuc = HikvisionUtil.isSuccess(rs); boolean callSuc = HikvisionUtil.isSuccess(rs);
String msg = ""; String msg = "";
String noticeType = "23"; String noticeType = "23";
@ -1121,7 +1121,7 @@ public class HikvisionCall {
} }
} }
public void updateAllFailStatusIfNullByNow(String projectSn, Long whoId, Integer type, Date now) { public void updateAllFailStatusIfNullByNow(String projectSn, Long whoId, Integer bigType, Date now) {
xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper<XzHikvisionSync>() xzHikvisionSyncMapper.update(null, new LambdaUpdateWrapper<XzHikvisionSync>()
.set(XzHikvisionSync::getIsSuccess, 0) .set(XzHikvisionSync::getIsSuccess, 0)
.isNull(XzHikvisionSync::getIsSuccess) .isNull(XzHikvisionSync::getIsSuccess)
@ -1129,7 +1129,7 @@ public class HikvisionCall {
.eq(XzHikvisionSync::getWhoId, whoId) .eq(XzHikvisionSync::getWhoId, whoId)
.eq(XzHikvisionSync::getCreateDate, now) .eq(XzHikvisionSync::getCreateDate, now)
); );
updateTotalStatus(projectSn, whoId, type, now); updateTotalStatus(projectSn, whoId, bigType, now);
} }
public void updateFailStatusByNow(String projectSn, Long whoId, Integer type, Date now, String deviceSn) { public void updateFailStatusByNow(String projectSn, Long whoId, Integer type, Date now, String deviceSn) {
@ -1172,7 +1172,7 @@ public class HikvisionCall {
updateTotalStatus(projectSn, whoId, type, now); updateTotalStatus(projectSn, whoId, type, now);
} }
private void updateTotalStatus(String projectSn, Long whoId, Integer type, Date now) { private void updateTotalStatus(String projectSn, Long whoId, Integer bigType, Date now) {
List<XzHikvisionSync> xzHikvisionSyncs = xzHikvisionSyncMapper.selectList(new LambdaQueryWrapper<XzHikvisionSync>() List<XzHikvisionSync> xzHikvisionSyncs = xzHikvisionSyncMapper.selectList(new LambdaQueryWrapper<XzHikvisionSync>()
.eq(XzHikvisionSync::getProjectSn, projectSn) .eq(XzHikvisionSync::getProjectSn, projectSn)
.eq(XzHikvisionSync::getWhoId, whoId) .eq(XzHikvisionSync::getWhoId, whoId)
@ -1188,7 +1188,7 @@ public class HikvisionCall {
} else { } else {
sendSuccessStatus = 3; sendSuccessStatus = 3;
} }
if (type >= 4) { if (bigType >= 4) {
carInfoMapper.update(null, new LambdaUpdateWrapper<CarInfo>() carInfoMapper.update(null, new LambdaUpdateWrapper<CarInfo>()
.eq(CarInfo::getId, whoId) .eq(CarInfo::getId, whoId)
.set(CarInfo::getSendSuccessStatus, sendSuccessStatus) .set(CarInfo::getSendSuccessStatus, sendSuccessStatus)
@ -1218,7 +1218,7 @@ public class HikvisionCall {
jo.put("faceId", workerFaceId); jo.put("faceId", workerFaceId);
jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + workerInfo.getFieldAcquisitionUrl()))); jo.put("faceData", Base64Util.convertFileToBase64(PathUtil.reviseSlash(basePath + "/" + workerInfo.getFieldAcquisitionUrl())));
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForWorker("更新人员照片到海康isc", rs, workerInfo, 2, 2); sendNoticeAndSetStatusForWorker("更新人员照片到海康isc", rs, workerInfo, 2, 2);
} else { } else {
addWorkerFace(workerInfo, project); addWorkerFace(workerInfo, project);
} }
@ -1241,7 +1241,7 @@ public class HikvisionCall {
public void deleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public void deleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
String rs = doDeleteWorkerFromHttp(workerInfo, project); String rs = doDeleteWorkerFromHttp(workerInfo, project);
sendNoticeForWorker("删除人员到海康isc", rs, workerInfo, 1, 3); sendNoticeAndSetStatusForWorker("删除人员到海康isc", rs, workerInfo, 1, 3);
} }
public String doDeleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception { public String doDeleteWorkerFromHttp(WorkerInfo workerInfo, Project project) throws Exception {
@ -1260,7 +1260,7 @@ public class HikvisionCall {
if (CollUtil.isNotEmpty(workerFaceIds)) { if (CollUtil.isNotEmpty(workerFaceIds)) {
for (String workerFaceId : workerFaceIds) { for (String workerFaceId : workerFaceIds) {
JSONObject rsJo = sendDeleteWorkerFace(project, workerFaceId); JSONObject rsJo = sendDeleteWorkerFace(project, workerFaceId);
sendNoticeForWorker("删除人员图片到海康isc", rsJo.toJSONString(), workerInfo, 2, 3); sendNoticeAndSetStatusForWorker("删除人员图片到海康isc", rsJo.toJSONString(), workerInfo, 2, 3);
} }
} }
} }
@ -1369,7 +1369,6 @@ public class HikvisionCall {
return; return;
} }
if (carInfo.getIsBlack() == 0) { if (carInfo.getIsBlack() == 0) {
//车辆布防
handleAlarmCar(project, carInfo); handleAlarmCar(project, carInfo);
} }
@ -1384,15 +1383,10 @@ public class HikvisionCall {
deleteFixedCarForHikvision(carInfo, project); deleteFixedCarForHikvision(carInfo, project);
saveReservationCar(project, carInfo); saveReservationCar(project, carInfo);
} }
if (carInfo.getIsBlack() == 1) {
//车辆布防
handleAlarmCar(project, carInfo);
}
} }
/** /**
* 车辆布防 * 车辆取消布防/布防
* *
* @param project * @param project
* @param carInfo * @param carInfo
@ -1416,20 +1410,20 @@ public class HikvisionCall {
addJo.put("driverPhone", c.getDriverTelephone()); addJo.put("driverPhone", c.getDriverTelephone());
addJo.put("plateNo", carInfo.getCarNumber()); addJo.put("plateNo", carInfo.getCarNumber());
JSONObject rs = addAlarmCarForHttp(project, addJo); JSONObject rs = addAlarmCarForHttp(project, addJo);
sendNoticeForCarInfo("车辆布防黑名单到海康isc", rs.toJSONString(), carInfo, 7, null); sendNoticeAndSetStatusForCarInfo("车辆布防黑名单到海康isc", rs.toJSONString(), carInfo, 7, null);
} else { } else {
sendNoticeForCarInfo("车辆取消布防取消黑名单到海康isc", null, carInfo, 7, null, true); sendNoticeAndSetStatusForCarInfo("车辆取消布防取消黑名单到海康isc", null, carInfo, 7, null, true);
} }
} else { } else {
if (carInfo.getIsBlack() == 1) { if (carInfo.getIsBlack() == 1) {
sendNoticeForCarInfo("车辆布防黑名单到海康isc", null, carInfo, 7, null, true); sendNoticeAndSetStatusForCarInfo("车辆布防黑名单到海康isc", null, carInfo, 7, null, true);
} else { } else {
JSONObject joOne = listJa.getJSONObject(0); JSONObject joOne = listJa.getJSONObject(0);
String alarmSyscode = joOne.getString("alarmSyscode"); String alarmSyscode = joOne.getString("alarmSyscode");
JSONObject deleteJo = new JSONObject(); JSONObject deleteJo = new JSONObject();
deleteJo.put("alarmSyscodes", alarmSyscode); deleteJo.put("alarmSyscodes", alarmSyscode);
JSONObject rs = this.deletionAlarmCarForHttp(project, deleteJo); JSONObject rs = this.deletionAlarmCarForHttp(project, deleteJo);
sendNoticeForCarInfo("车辆取消布防取消黑名单到海康isc", rs.toJSONString(), carInfo, 7, null); sendNoticeAndSetStatusForCarInfo("车辆取消布防取消黑名单到海康isc", rs.toJSONString(), carInfo, 7, null);
} }
} }
} else { } else {
@ -1442,9 +1436,9 @@ public class HikvisionCall {
private void failAlarmNotice(CarInfo carInfo) { private void failAlarmNotice(CarInfo carInfo) {
if (carInfo.getIsBlack() == 1) { if (carInfo.getIsBlack() == 1) {
sendNoticeForCarInfo("车辆布防黑名单到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false); sendNoticeAndSetStatusForCarInfo("车辆布防黑名单到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false);
} else { } else {
sendNoticeForCarInfo("车辆取消布防取消黑名单到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false); sendNoticeAndSetStatusForCarInfo("车辆取消布防取消黑名单到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false);
} }
} }
@ -1550,7 +1544,7 @@ public class HikvisionCall {
ArrayList<HikvisionCarInfo> list = new ArrayList<>(); ArrayList<HikvisionCarInfo> list = new ArrayList<>();
list.add(hikvisionCarInfo); list.add(hikvisionCarInfo);
String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForCarInfo("添加车辆白名单到海康isc", rs, carInfo, 4, 1); sendNoticeAndSetStatusForCarInfo("添加车辆白名单到海康isc", rs, carInfo, 4, 1);
} }
/** /**
@ -1683,7 +1677,7 @@ public class HikvisionCall {
} }
if (!Objects.equals(carInfo.getCarNumber(), old.getCarNumber())) { if (!Objects.equals(carInfo.getCarNumber(), old.getCarNumber())) {
//删除旧的车辆数据 //删除旧的车辆数据
deleteCarInfoForHikvision(old); deleteCarInfoForHikvision(old, false);
} }
saveCarInfoFromHikvision(carInfo); saveCarInfoFromHikvision(carInfo);
} }
@ -1701,7 +1695,7 @@ public class HikvisionCall {
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo); HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo);
String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(hikvisionCarInfo), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(hikvisionCarInfo), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForCarInfo("更新车辆白名单到海康isc", rs, carInfo, 4, 2); sendNoticeAndSetStatusForCarInfo("更新车辆白名单到海康isc", rs, carInfo, 4, 2);
} }
/** /**
@ -1739,8 +1733,9 @@ public class HikvisionCall {
* 删除车辆 * 删除车辆
* *
* @param carInfo * @param carInfo
* @param isSetBlack
*/ */
public void deleteCarInfoForHikvision(CarInfo carInfo) throws Exception { public void deleteCarInfoForHikvision(CarInfo carInfo, boolean isSetBlack) throws Exception {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, carInfo.getProjectSn())); Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, carInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
@ -1751,7 +1746,7 @@ public class HikvisionCall {
deleteReservationCarFromHttp(carInfo, project); deleteReservationCarFromHttp(carInfo, project);
CarInfo c = new CarInfo(); CarInfo c = new CarInfo();
BeanUtil.copyProperties(carInfo, c); BeanUtil.copyProperties(carInfo, c);
c.setIsBlack(0); c.setIsBlack(isSetBlack ? 1 : 0);
handleAlarmCar(project, c); handleAlarmCar(project, c);
} }
@ -1761,7 +1756,9 @@ public class HikvisionCall {
if (oldCarInfo != null) { if (oldCarInfo != null) {
log.info("海康存在车辆,车牌号:{}", oldCarInfo.getString("plateNo")); log.info("海康存在车辆,车牌号:{}", oldCarInfo.getString("plateNo"));
String rs = deleteCarInfoByIdFromHttp(oldCarInfo.getString("vehicleId"), project); String rs = deleteCarInfoByIdFromHttp(oldCarInfo.getString("vehicleId"), project);
sendNoticeForCarInfo("删除车辆白名单到海康isc", rs, carInfo, 4, 3); sendNoticeAndSetStatusForCarInfo("删除车辆白名单到海康isc", rs, carInfo, 4, 3);
} else {
sendNoticeAndSetStatusForCarInfo("删除车辆白名单到海康isc", null, carInfo, 4, 3, true);
} }
} }
@ -1812,19 +1809,17 @@ public class HikvisionCall {
final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion"; final String path = ARTEMIS_PATH + "/api/pms/v1/parkingSpace/reservations/deletion";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
JSONArray reservationCarInfoList = getReservationCarInfoList(carInfo, project); JSONArray reservationCarInfoList = getReservationCarInfoList(carInfo, project);
if (reservationCarInfoList != null) { 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);
String reserveOrderNo = jsonObject.getString("reserveOrderNo"); String reserveOrderNo = jsonObject.getString("reserveOrderNo");
JSONObject jsonObject1 = new JSONObject(); JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("reserveOrderNo", reserveOrderNo); jsonObject1.put("reserveOrderNo", reserveOrderNo);
String rs = HikvisionUtil.doPost(host, path, jsonObject1.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, jsonObject1.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
JSONObject rsJo = JSON.parseObject(rs); sendNoticeAndSetStatusForCarInfo("取消车位预约到海康isc", rs, carInfo, 6, 3);
String code = rsJo.getString("code");
sendNoticeForCarInfo("取消车位预约到海康isc", rs, carInfo, 6, 3);
} }
} else { } else {
updateSuccessStatusByNow(carInfo.getProjectSn(), carInfo.getId(), 6, 3, ThreadLocalUtil.getNotNull().getDate("now"), null); sendNoticeAndSetStatusForCarInfo("取消车位预约到海康isc", null, carInfo, 6, 3, true);
} }
} }
@ -2201,7 +2196,7 @@ public class HikvisionCall {
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
ParkReservation parkReservation = getParkReservation(project, carInfo); ParkReservation parkReservation = getParkReservation(project, carInfo);
String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(parkReservation), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, JSON.toJSONString(parkReservation), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
sendNoticeForCarInfo("添加预约车辆到海康isc", rs, carInfo, 6, 1); sendNoticeAndSetStatusForCarInfo("添加预约车辆到海康isc", rs, carInfo, 6, 1);
} }
private ParkReservation getParkReservation(Project project, CarInfo carInfo) throws Exception { private ParkReservation getParkReservation(Project project, CarInfo carInfo) throws Exception {
@ -2314,9 +2309,9 @@ public class HikvisionCall {
jo.put("categoryCode", categoryCode); jo.put("categoryCode", categoryCode);
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
if (Objects.equals(operation, 1)) { if (Objects.equals(operation, 1)) {
sendNoticeForCarInfo("绑定" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 1); sendNoticeAndSetStatusForCarInfo("绑定" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 1);
} else if (Objects.equals(operation, 2)) { } else if (Objects.equals(operation, 2)) {
sendNoticeForCarInfo("解绑" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 3); sendNoticeAndSetStatusForCarInfo("解绑" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo, 5, 3);
} }
} }

View File

@ -23,7 +23,7 @@ public interface ICarInfoService extends IService<CarInfo> {
void addCarInfo(CarInfo carInfo); void addCarInfo(CarInfo carInfo);
void deleteOrUpdateCar(Project project, CarInfo carInfo); void deleteOrUpdateCar(Project project, CarInfo car, boolean mustUpdate);
void editCarInfo(CarInfo carInfo); void editCarInfo(CarInfo carInfo);

View File

@ -88,9 +88,9 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>(); QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CarInfo::getProjectSn, c.getProjectSn()) queryWrapper.lambda().eq(CarInfo::getProjectSn, c.getProjectSn())
.eq(CarInfo::getCarNumber, c.getCarNumber()); .eq(CarInfo::getCarNumber, c.getCarNumber());
CarInfo carInfo = carInfoMapper.selectOne(queryWrapper); CarInfo old = carInfoMapper.selectOne(queryWrapper);
if (carInfo != null) { if (old != null) {
if (Objects.equals(carInfo.getCarModuleType(), 1)) { if (Objects.equals(old.getCarModuleType(), 1)) {
throw new OpenAlertException("该车辆已添加,请勿重复添加!"); throw new OpenAlertException("该车辆已添加,请勿重复添加!");
} }
addCarInfoForApprovalFlowIf(c); addCarInfoForApprovalFlowIf(c);
@ -99,12 +99,24 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
if (project == null) { if (project == null) {
return; return;
} }
if (DateUtil.compare(carInfo.getReserveStartTime(), now) < 0 && DateUtil.compare(carInfo.getReserveEndTime(), now) > 0) { carInfoMapper.update(null, new LambdaUpdateWrapper<CarInfo>()
log.info("车辆在有效期内,不需要更新,车牌号:{}", c.getCarNumber()); .set(CarInfo::getIsBlack, c.getIsBlack())
asyncHikvision.handleAlarmCarForHikvision(carInfo); .eq(CarInfo::getId, old.getId())
return; );
old.setIsBlack(c.getIsBlack());
if (c.getIsBlack() == 1) {
asyncHikvision.deleteCarInfoForHikvision(old, true);
} else {
if (old.getIsBlack() == 1) {
deleteOrUpdateCar(project, old, true);
} else {
if (DateUtil.compare(old.getReserveStartTime(), now) < 0 && DateUtil.compare(old.getReserveEndTime(), now) > 0) {
log.info("车辆在有效期内,不需要更新,车牌号:{}", c.getCarNumber());
} else {
deleteOrUpdateCar(project, old, false);
}
}
} }
deleteOrUpdateCar(project, carInfo);
} else { } else {
carInfoMapper.insert(c); carInfoMapper.insert(c);
addCarInfoForApprovalFlowIf(c); addCarInfoForApprovalFlowIf(c);
@ -128,6 +140,7 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
if (isReservationType(c)) { if (isReservationType(c)) {
CarInfoApprovalFlow flow = new CarInfoApprovalFlow(); CarInfoApprovalFlow flow = new CarInfoApprovalFlow();
BeanUtil.copyProperties(c, flow); BeanUtil.copyProperties(c, flow);
flow.setIsBlack(0);
carInfoApprovalFlowMapper.insert(flow); carInfoApprovalFlowMapper.insert(flow);
} }
} }
@ -137,9 +150,10 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
* *
* @param project * @param project
* @param car * @param car
* @param mustUpdate
*/ */
@Override @Override
public void deleteOrUpdateCar(Project project, CarInfo car) { public void deleteOrUpdateCar(Project project, CarInfo car, boolean mustUpdate) {
log.info("删除/更新过期或未来的车辆,并下发新的预约时间的车辆到海康,车牌号:{}", car.getCarNumber()); log.info("删除/更新过期或未来的车辆,并下发新的预约时间的车辆到海康,车牌号:{}", car.getCarNumber());
CarInfoApprovalFlow fit = carInfoApprovalFlowMapper.selectOne(new LambdaQueryWrapper<CarInfoApprovalFlow>() CarInfoApprovalFlow fit = carInfoApprovalFlowMapper.selectOne(new LambdaQueryWrapper<CarInfoApprovalFlow>()
.eq(CarInfoApprovalFlow::getCarNumber, car.getCarNumber()) .eq(CarInfoApprovalFlow::getCarNumber, car.getCarNumber())
@ -150,7 +164,7 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
); );
if (fit != null) { if (fit != null) {
boolean notEqTime = DateUtil.compare(car.getReserveStartTime(), fit.getReserveStartTime()) != 0 || DateUtil.compare(car.getReserveEndTime(), fit.getReserveEndTime()) != 0; boolean notEqTime = DateUtil.compare(car.getReserveStartTime(), fit.getReserveStartTime()) != 0 || DateUtil.compare(car.getReserveEndTime(), fit.getReserveEndTime()) != 0;
if (notEqTime) { if (notEqTime || mustUpdate) {
car.setReserveEndTime(fit.getReserveEndTime()); car.setReserveEndTime(fit.getReserveEndTime());
car.setReserveStartTime(fit.getReserveStartTime()); car.setReserveStartTime(fit.getReserveStartTime());
this.editCarInfo(car); this.editCarInfo(car);
@ -276,14 +290,14 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
} else { } else {
deleteFromApprovalFlowIf(carInfo); deleteFromApprovalFlowIf(carInfo);
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1)); Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
deleteOrUpdateCar(project, carInfo); deleteOrUpdateCar(project, carInfo, false);
} }
} }
private void deleteCar(CarInfo carInfo) { private void deleteCar(CarInfo carInfo) {
carInfoMapper.deleteById(carInfo.getId()); carInfoMapper.deleteById(carInfo.getId());
//同步海康 //同步海康
asyncHikvision.deleteCarInfoForHikvision(carInfo); asyncHikvision.deleteCarInfoForHikvision(carInfo, false);
} }
private void deleteFromApprovalFlowIf(CarInfo carInfo) { private void deleteFromApprovalFlowIf(CarInfo carInfo) {

View File

@ -193,7 +193,7 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
} else if (xzHikvisionSync.getOperate() == 2) { } else if (xzHikvisionSync.getOperate() == 2) {
hikvisionCall.editCarInfoForHikvision(carInfo, carInfo); hikvisionCall.editCarInfoForHikvision(carInfo, carInfo);
} else if (xzHikvisionSync.getOperate() == 3) { } else if (xzHikvisionSync.getOperate() == 3) {
hikvisionCall.deleteCarInfoForHikvision(carInfo); hikvisionCall.deleteCarInfoForHikvision(carInfo, false);
} }
} else { } else {
WorkerInfo workerInfo = workerInfoMapper.selectById(whoId); WorkerInfo workerInfo = workerInfoMapper.selectById(whoId);

View File

@ -41,12 +41,15 @@ public class CarInfoTask {
public void deleteOrUpdateExpiredCar() { public void deleteOrUpdateExpiredCar() {
//删除过期 //删除过期
carInfoApprovalFlowMapper.delete(new LambdaQueryWrapper<CarInfoApprovalFlow>() carInfoApprovalFlowMapper.delete(new LambdaQueryWrapper<CarInfoApprovalFlow>()
.lt(CarInfoApprovalFlow::getReserveEndTime, DateUtil.now())); .lt(CarInfoApprovalFlow::getReserveEndTime, DateUtil.now())
.eq(CarInfoApprovalFlow::getIsBlack, 0)
);
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1)); List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
for (Project project : projects) { for (Project project : projects) {
//过期或者未来车 //过期或者未来车
List<CarInfo> cars = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>() List<CarInfo> cars = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
.ne(CarInfo::getCarModuleType, 1) .ne(CarInfo::getCarModuleType, 1)
.eq(CarInfo::getIsBlack, 0)
.eq(CarInfo::getProjectSn, project.getProjectSn()) .eq(CarInfo::getProjectSn, project.getProjectSn())
.and(w -> w.lt(CarInfo::getReserveEndTime, DateUtil.now()).or().gt(CarInfo::getReserveStartTime, DateUtil.now())) .and(w -> w.lt(CarInfo::getReserveEndTime, DateUtil.now()).or().gt(CarInfo::getReserveStartTime, DateUtil.now()))
); );
@ -54,7 +57,7 @@ public class CarInfoTask {
return; return;
} }
for (CarInfo carInfo : cars) { for (CarInfo carInfo : cars) {
carInfoService.deleteOrUpdateCar(project, carInfo); carInfoService.deleteOrUpdateCar(project, carInfo, false);
} }
} }

View File

@ -90,7 +90,7 @@ public class ExamTask {
carInfoService.removeByIds(carInfos.stream().map(c -> c.getId()).collect(Collectors.toSet())); carInfoService.removeByIds(carInfos.stream().map(c -> c.getId()).collect(Collectors.toSet()));
for (CarInfo carInfo : carInfos) { for (CarInfo carInfo : carInfos) {
//同步海康 //同步海康
asyncHikvision.deleteCarInfoForHikvision(carInfo); asyncHikvision.deleteCarInfoForHikvision(carInfo, false);
} }
} }
} }