车辆修改

This commit is contained in:
guoshengxiong 2024-05-29 18:01:42 +08:00
parent 753321e26e
commit 147e5bbbcb
2 changed files with 74 additions and 52 deletions

View File

@ -982,45 +982,71 @@ public class HikvisionCall {
}
private void sendNoticeAndSetStatusForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate) {
boolean callSuc = HikvisionUtil.isSuccess(rs);
sendNoticeAndSetStatusForCarInfo(title, rs, carInfo, type, operate, callSuc);
sendNoticeAndSetStatusForCarInfo(title, rs, carInfo, type, operate, null);
}
public void sendNoticeAndSetStatusForCarInfo(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 success) {
String msg;
boolean success = false;
if (callSuc) {
msg = "同步成功,车牌号码:" + carInfo.getCarNumber();
title += "成功";
success = true;
} else {
if (success == null) {
boolean callSuc = HikvisionUtil.isSuccess(rs);
success = false;
JSONObject jo = JSONObject.parseObject(rs);
String code = jo.getString("code");
if (Objects.equals(code, "0x00072202")) {
msg = "同步成功,车牌号码:" + carInfo.getCarNumber();
title += "成功";
success = true;
} else if (Objects.equals(code, "0x02e33900")) {
String msg1 = jo.getString("msg");
if (Objects.equals(msg1, "reservation record not existed or overdued!")) {
if (callSuc) {
JSONObject dataJo = jo.getJSONObject("data");
Optional<JSONArray> fOp = Optional.ofNullable(dataJo).map(o -> o.getJSONArray("failures"));
if (fOp.isPresent() && fOp.get().size() != 0) {
if ("0x00052102".equals(fOp.get().getJSONObject(0).getString("code"))) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因车辆绑定的人员在isc不存在";
title += "失败";
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += "失败";
}
} else {
msg = "同步成功,车牌号码:" + carInfo.getCarNumber();
title += "成功";
success = true;
}
} else {
if (Objects.equals(code, "0x00072202")) {
msg = "同步成功,车牌号码:" + carInfo.getCarNumber();
title += "成功";
success = true;
} else if (Objects.equals(code, "0x02e33900")) {
String msg1 = jo.getString("msg");
if (Objects.equals(msg1, "reservation record not existed or overdued!")) {
msg = "同步成功,车牌号码:" + carInfo.getCarNumber();
title += "成功";
success = true;
} else if (Objects.equals(msg1, "Car reservation failed! The plateNo has reserved in the parking!")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆预约记录已存在";
title += "失败";
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += "失败";
}
} else if (Objects.equals(code, "0x02e33400")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆属于黑名单内不能下发预约车";
title += "失败";
} else if (Objects.equals(code, "0x00072003")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车牌格式不正确!";
title += "失败";
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += "失败";
}
} else if (Objects.equals(code, "0x02e33400")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆属于黑名单内不能下发预约车";
title += "失败";
} else if (Objects.equals(code, "0x00072003")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车牌格式不正确!";
title += "失败";
}
} else {
if (success) {
msg = "同步成功,车牌号码:" + carInfo.getCarNumber();
title += "成功";
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += "失败";
}
}
if (success) {
updateSuccessStatusByNow(carInfo.getProjectSn(), carInfo.getId(), type, operate, ThreadLocalUtil.getNotNull().getDate("now"), null);
} else {

View File

@ -84,7 +84,8 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
@Override
@DistributedLock(keyPrefix = "car_info:", key = "#c.carNumber", tryLok = true, lockTime = 0)
public void addCarInfo(CarInfo c) {
checkTime(c);
c.setCarNumber(c.getCarNumber().toUpperCase(Locale.ROOT));
validTime(c);
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CarInfo::getProjectSn, c.getProjectSn())
.eq(CarInfo::getCarNumber, c.getCarNumber());
@ -99,22 +100,19 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
if (project == null) {
return;
}
carInfoMapper.update(null, new LambdaUpdateWrapper<CarInfo>()
.set(CarInfo::getIsBlack, c.getIsBlack())
.eq(CarInfo::getId, old.getId())
);
old.setIsBlack(c.getIsBlack());
CarInfo updateCar = new CarInfo();
BeanUtil.copyProperties(c, updateCar);
updateCar.setId(old.getId());
updateCar.setReserveStartTime(old.getReserveStartTime());
updateCar.setReserveEndTime(old.getReserveEndTime());
carInfoMapper.updateById(updateCar);
if (c.getIsBlack() == 1) {
asyncHikvision.deleteCarInfoForHikvision(old, true);
} else {
if (old.getIsBlack() == 1) {
deleteOrUpdateCar(project, old, true);
if (old.getIsBlack() == 0 && DateUtil.compare(old.getReserveStartTime(), now) < 0 && DateUtil.compare(old.getReserveEndTime(), now) > 0) {
log.info("车辆在有效期内,不需要更新,车牌号:{}", c.getCarNumber());
} 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, old, true);
}
}
} else {
@ -125,7 +123,7 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
}
}
private void checkTime(CarInfo c) {
private void validTime(CarInfo c) {
if (isReservationType(c) && DateUtil.compare(c.getReserveEndTime(), new Date()) < 0) {
throw new OpenAlertException("预约时间已过期");
}
@ -167,7 +165,10 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
if (notEqTime || mustUpdate) {
car.setReserveEndTime(fit.getReserveEndTime());
car.setReserveStartTime(fit.getReserveStartTime());
this.editCarInfo(car);
CarInfo insertCar = new CarInfo();
BeanUtil.copyProperties(fit, insertCar);
insertCar.setId(car.getId());
this.editCarInfo(insertCar);
}
} else {
deleteCar(car);
@ -176,7 +177,8 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
@Override
public void editCarInfo(CarInfo carInfo) {
checkTime(carInfo);
carInfo.setCarNumber(carInfo.getCarNumber().toUpperCase(Locale.ROOT));
validTime(carInfo);
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn())
.eq(CarInfo::getCarNumber, carInfo.getCarNumber())
@ -196,20 +198,14 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
.eq(CarInfo::getId, carInfo.getId()));
if (isReservationType(old)) {
boolean notEqTime = DateUtil.compare(carInfo.getReserveStartTime(), old.getReserveStartTime()) != 0 || DateUtil.compare(carInfo.getReserveEndTime(), old.getReserveEndTime()) != 0;
if (notEqTime) {
CarInfoApprovalFlow flow = new CarInfoApprovalFlow();
BeanUtil.copyProperties(carInfo, flow);
carInfoApprovalFlowMapper.update(null, new LambdaUpdateWrapper<CarInfoApprovalFlow>()
.set(CarInfoApprovalFlow::getReserveStartTime, carInfo.getReserveStartTime())
.set(CarInfoApprovalFlow::getReserveEndTime, carInfo.getReserveEndTime())
.set(CarInfoApprovalFlow::getCarNumber, carInfo.getCarNumber())
.eq(CarInfoApprovalFlow::getReserveStartTime, old.getReserveStartTime())
.eq(CarInfoApprovalFlow::getReserveEndTime, old.getReserveEndTime())
.eq(CarInfoApprovalFlow::getCarNumber, old.getCarNumber())
.eq(CarInfoApprovalFlow::getProjectSn, old.getProjectSn())
);
}
CarInfoApprovalFlow flow = new CarInfoApprovalFlow();
BeanUtil.copyProperties(carInfo, flow);
carInfoApprovalFlowMapper.update(flow, new LambdaUpdateWrapper<CarInfoApprovalFlow>()
.eq(CarInfoApprovalFlow::getReserveStartTime, old.getReserveStartTime())
.eq(CarInfoApprovalFlow::getReserveEndTime, old.getReserveEndTime())
.eq(CarInfoApprovalFlow::getCarNumber, old.getCarNumber())
.eq(CarInfoApprovalFlow::getProjectSn, old.getProjectSn())
);
}
//同步海康