车辆修改

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

View File

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