bug修改

This commit is contained in:
guoshengxiong 2024-04-17 20:35:49 +08:00
parent 1cd35fdc6e
commit 7812e57209
3 changed files with 45 additions and 52 deletions

View File

@ -92,7 +92,7 @@ public class AsyncHikvision {
@Async
public void addCarInfoForHikvision(CarInfo carInfo) {
try {
hikvisionCall.addCarInfoFromHttp(carInfo);
hikvisionCall.addCarInfoFromHikvision(carInfo);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForCar(carInfo, e, "添加");
@ -109,9 +109,9 @@ public class AsyncHikvision {
}
@Async
public void editCarInfoForHikvision(CarInfo carInfo) {
public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) {
try {
hikvisionCall.editCarInfoForHikvision(carInfo);
hikvisionCall.editCarInfoForHikvision(carInfo, old);
} catch (Exception e) {
log.error("海康:", e);
sendNoticeForCar(carInfo, e, "编辑");

View File

@ -1005,27 +1005,34 @@ public class HikvisionCall {
*
* @param carInfo
*/
public void addCarInfoFromHttp(CarInfo carInfo) throws Exception {
public void addCarInfoFromHikvision(CarInfo carInfo) throws Exception {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, carInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
//固定车
addCarInfoFromHttp(carInfo, project);
//绑定固定的群组
JSONArray ja = categorySearch(project);
String categoryCode = getFixedCarGroupName(ja);
if (StringUtils.isNotBlank(categoryCode)) {
carCategoryBind(project, 1, categoryCode, String.valueOf(carInfo.getId()), carInfo);
}
addFixedCar(carInfo, project);
} else if (Objects.equals(carInfo.getCarModuleType(), 2)) {
reservationCar(project, carInfo);
}
ifReservationCar(project, carInfo);
}
private void addCarInfoFromHttp(CarInfo carInfo, Project project) throws Exception {
private void addFixedCar(CarInfo carInfo, Project project) throws Exception {
//固定车
addCarInfoFromHikvision(carInfo, project);
//绑定固定的群组
JSONArray ja = categorySearch(project);
String categoryCode = getFixedCarGroupName(ja);
if (StringUtils.isBlank(categoryCode)) {
throw new OpenAlertException("获取固定车的categoryCode失败");
}
if (StringUtils.isNotBlank(categoryCode)) {
carCategoryBindOrNot(project, 1, categoryCode, String.valueOf(carInfo.getId()), carInfo);
}
}
private void addCarInfoFromHikvision(CarInfo carInfo, Project project) throws Exception {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/add";
String host = "https://" + project.getArtemisConfigHost();
@ -1149,35 +1156,16 @@ public class HikvisionCall {
* 编辑车辆
*
* @param carInfo
* @param old
*/
public void editCarInfoForHikvision(CarInfo carInfo) throws Exception {
public void editCarInfoForHikvision(CarInfo carInfo, CarInfo old) throws Exception {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, carInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
//固定车需要添加群组
String rs = getCarInfoListFromHttp(carInfo.getCarNumber(), project);
JSONObject dJo = HikvisionUtil.getJSONObjectData(rs);
if (dJo != null) {
Integer total = dJo.getInteger("total");
if (total > 0) {
editCarInfoFromHttp(carInfo, project);
} else {
addCarInfoFromHttp(carInfo, project);
}
}
//绑定车辆群组
ifBindGroup(project, 1, carInfo);
} else if (Objects.equals(carInfo.getCarModuleType(), 2)) {
//解绑车辆群组
ifBindGroup(project, 2, carInfo);
deleteCarInfoForHikvision(carInfo, project);
}
//预约车辆
ifReservationCar(project, carInfo);
//先删除再新增
deleteCarInfoForHikvision(old);
addCarInfoFromHikvision(carInfo);
}
private void editCarInfoFromHttp(CarInfo carInfo, Project project) throws Exception {
@ -1189,12 +1177,13 @@ public class HikvisionCall {
sendNoticeForCarInfo("更新车辆白名单到海康isc", rs, carInfo);
}
private void ifBindGroup(Project project, int operation, CarInfo carInfo) throws Exception {
private void bindCarOrNot(Project project, int operation, CarInfo carInfo) throws Exception {
JSONArray ja = categorySearch(project);
String categoryCode = getFixedCarGroupName(ja);
if (StringUtils.isBlank(categoryCode)) {
carCategoryBind(project, operation, categoryCode, String.valueOf(carInfo.getId()), carInfo);
throw new OpenAlertException("获取固定车的categoryCode失败");
}
carCategoryBindOrNot(project, operation, categoryCode, String.valueOf(carInfo.getId()), carInfo);
}
/**
@ -1225,8 +1214,8 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
bindCarOrNot(project, 2, carInfo);
deleteCarInfoForHikvision(carInfo, project);
deleteReservationCarInfo(carInfo, project);
}
@ -1260,6 +1249,12 @@ public class HikvisionCall {
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("reserveOrderNo", reserveOrderNo);
String rs = HikvisionUtil.doPost(host, path, jsonObject1.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
JSONObject rsJo = JSON.parseObject(rs);
String code = rsJo.getString("code");
if (Objects.equals(code, "0x02e33900")) {
//reservation record not existed or overdued
return;
}
sendNoticeForCarInfo("取消车位预约到海康isc", rs, carInfo);
}
}
@ -1642,14 +1637,11 @@ public class HikvisionCall {
* @param project
* @param carInfo
*/
public void ifReservationCar(Project project, CarInfo carInfo) throws Exception {
public void reservationCar(Project project, CarInfo carInfo) throws Exception {
//删除预约车辆
deleteReservationCarInfo(carInfo, project);
//临时车辆预约
if (Objects.equals(carInfo.getCarModuleType(), 2)) {
reservationCarFromHttp(project, carInfo);
}
reservationCarFromHttp(project, carInfo);
}
private void reservationCarFromHttp(Project project, CarInfo carInfo) throws Exception {
@ -1743,7 +1735,7 @@ public class HikvisionCall {
* @param vehicleIds
* @param carInfo
*/
public void carCategoryBind(Project project, Integer operation, String categoryCode, String vehicleIds, CarInfo carInfo) throws Exception {
public void carCategoryBindOrNot(Project project, Integer operation, String categoryCode, String vehicleIds, CarInfo carInfo) throws Exception {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
@ -1756,9 +1748,9 @@ public class HikvisionCall {
jo.put("categoryCode", categoryCode);
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
if (Objects.equals(operation, 1)) {
sendNoticeForCarInfo("绑定固定车辆群组到海康isc", rs, carInfo);
sendNoticeForCarInfo("绑定" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo);
} else if (Objects.equals(operation, 2)) {
sendNoticeForCarInfo("解绑固定车辆群组到海康isc", rs, carInfo);
sendNoticeForCarInfo("解绑" + FIXED_CAR_GROUP_NAME + "到海康isc", rs, carInfo);
}
}

View File

@ -105,10 +105,11 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
if (count > 0) {
throw new OpenAlertException(MessageUtil.get("carNumberExistErr"));
}
CarInfo old = carInfoMapper.selectById(carInfo.getId());
carInfoMapper.updateById(carInfo);
//同步海康
asyncHikvision.editCarInfoForHikvision(carInfo);
asyncHikvision.editCarInfoForHikvision(carInfo, old);
}
@Override