isc的bug修改

This commit is contained in:
guo 2024-03-11 15:35:01 +08:00
parent 7b0fa14af4
commit ea2acf105b
2 changed files with 172 additions and 28 deletions

View File

@ -55,7 +55,7 @@ public class AsyncHikvision {
@Async @Async
public void addCarInfoForHikvision(CarInfo carInfo) { public void addCarInfoForHikvision(CarInfo carInfo) {
try { try {
hikvisionCall.addCarInfoForHikvision(carInfo); hikvisionCall.addCarInfoFromHttp(carInfo);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -48,6 +48,8 @@ import java.util.concurrent.CompletableFuture;
@RestController @RestController
@RequestMapping("/xmgl/hikvision") @RequestMapping("/xmgl/hikvision")
public class HikvisionCall { public class HikvisionCall {
private static String FIXED_CAR_GROUP_NAME = "固定车永久通行";
@Value("${upload.image.url.prefix:}") @Value("${upload.image.url.prefix:}")
private String imageUrlPrefix; private String imageUrlPrefix;
@Value("${basePath:}") @Value("${basePath:}")
@ -77,6 +79,7 @@ public class HikvisionCall {
@Lazy @Lazy
private CarInfoMapper carInfoMapper; private CarInfoMapper carInfoMapper;
@ApiOperation(value = "海康事件回调", notes = "海康事件回调", httpMethod = "POST") @ApiOperation(value = "海康事件回调", notes = "海康事件回调", httpMethod = "POST")
@PostMapping(value = "/eventCallback") @PostMapping(value = "/eventCallback")
public Result eventCallback(@ApiIgnore @RequestBody JSONObject jsonObject) { public Result eventCallback(@ApiIgnore @RequestBody JSONObject jsonObject) {
@ -284,6 +287,20 @@ public class HikvisionCall {
return null; return null;
} }
/**
* 查询车辆分类
*
* @return
*/
@GetMapping("/categorySearch")
public Result categorySearch() {
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, "B717CB992D054A878FDAFB4A5C169947"));
String svrIndex = null;
String platePicUrl = null;
categorySearch(project);
return null;
}
/** /**
* 获取车辆颜色 * 获取车辆颜色
* *
@ -385,6 +402,10 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
addWorkerFromHttp(workerInfo, project);
}
private void addWorkerFromHttp(WorkerInfo workerInfo, Project project) {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/person/single/add"; final String path = ARTEMIS_PATH + "/api/resource/v2/person/single/add";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
@ -441,11 +462,7 @@ public class HikvisionCall {
} }
JSONObject wiJo = getWorkerInfo(workerInfo, project); JSONObject wiJo = getWorkerInfo(workerInfo, project);
if (wiJo != null) { if (wiJo != null) {
final String ARTEMIS_PATH = "/artemis"; editWorkerFromHttp(workerInfo, project);
final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
String host = "https://" + project.getArtemisConfigHost();
String body = getWorkerJson(workerInfo);
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
editWorkerFace(workerInfo, project); editWorkerFace(workerInfo, project);
} else { } else {
@ -453,6 +470,14 @@ public class HikvisionCall {
} }
} }
private void editWorkerFromHttp(WorkerInfo workerInfo, Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/single/update";
String host = "https://" + project.getArtemisConfigHost();
String body = getWorkerJson(workerInfo);
HikvisionUtil.doPost(host, path, body, null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/** /**
* 添加人脸 * 添加人脸
* *
@ -506,6 +531,10 @@ public class HikvisionCall {
} }
deleteWorkerFace(workerInfo, project); deleteWorkerFace(workerInfo, project);
deleteWorkerFromHttp(workerInfo, project);
}
private void deleteWorkerFromHttp(WorkerInfo workerInfo, Project project) {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/batch/delete"; final String path = ARTEMIS_PATH + "/api/resource/v1/person/batch/delete";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
@ -596,11 +625,27 @@ public class HikvisionCall {
* *
* @param carInfo * @param carInfo
*/ */
public void addCarInfoForHikvision(CarInfo carInfo) { public void addCarInfoFromHttp(CarInfo carInfo) {
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;
} }
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()));
}
}
ifReservationCar(project, carInfo);
}
private void addCarInfoFromHttp(CarInfo carInfo, Project project) {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/add"; final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/add";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
@ -608,8 +653,6 @@ public class HikvisionCall {
ArrayList<HikvisionCarInfo> list = new ArrayList<>(); ArrayList<HikvisionCarInfo> list = new ArrayList<>();
list.add(hikvisionCarInfo); list.add(hikvisionCarInfo);
HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
reservationCar(project, carInfo);
} }
private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) { private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) {
@ -719,14 +762,56 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
addCarInfoFromHttp(carInfo, project);
//固定车需要添加群组
editCarInfoFromHttp(carInfo, project);
//绑定车辆群组
ifBindGroup(project, 1, carInfo);
} else if (Objects.equals(carInfo.getCarModuleType(), 2)) {
//解绑车辆群组
ifBindGroup(project, 2, carInfo);
deleteCarInfoForHikvision(carInfo, project);
}
//预约车辆
ifReservationCar(project, carInfo);
}
private void editCarInfoFromHttp(CarInfo carInfo, Project project) {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/single/update"; final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/single/update";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo); HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo);
HikvisionUtil.doPost(host, path, JSON.toJSONString(hikvisionCarInfo), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); HikvisionUtil.doPost(host, path, JSON.toJSONString(hikvisionCarInfo), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
//预约车辆 private void ifBindGroup(Project project, int operation, CarInfo carInfo) {
reservationCar(project, carInfo); JSONArray ja = categorySearch(project);
String categoryCode = getFixedCarGroupName(ja);
if (StringUtils.isBlank(categoryCode)) {
carCategoryBind(project, operation, categoryCode, String.valueOf(carInfo.getId()));
}
}
/**
* 获取固定车的categoryCode
*
* @param ja
*/
private String getFixedCarGroupName(JSONArray ja) {
if (ja != null) {
for (int i = 0; i < ja.size(); i++) {
JSONObject jo = ja.getJSONObject(i);
String categoryName = jo.getString("categoryName");
if (Objects.equals(categoryName, FIXED_CAR_GROUP_NAME)) {
return jo.getString("categoryCode");
}
}
}
return null;
} }
/** /**
@ -739,6 +824,12 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) { if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return; return;
} }
deleteCarInfoForHikvision(carInfo, project);
deleteReservationCarInfo(carInfo, project);
}
private void deleteCarInfoForHikvision(CarInfo carInfo, Project project) {
final String ARTEMIS_PATH = "/artemis"; final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/delete"; final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/delete";
String host = "https://" + project.getArtemisConfigHost(); String host = "https://" + project.getArtemisConfigHost();
@ -747,8 +838,6 @@ public class HikvisionCall {
list.add(String.valueOf(carInfo.getId())); list.add(String.valueOf(carInfo.getId()));
jo.put("vehicleIds", list); jo.put("vehicleIds", list);
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()); HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
deleteReservationCarInfo(carInfo, project);
} }
/** /**
@ -1121,31 +1210,33 @@ public class HikvisionCall {
* @param project * @param project
* @param carInfo * @param carInfo
*/ */
public void reservationCar(Project project, CarInfo carInfo) { public void ifReservationCar(Project project, CarInfo carInfo) {
try { try {
//删除预约车辆
deleteReservationCarInfo(carInfo, project);
//临时车辆预约 //临时车辆预约
if (Objects.equals(carInfo.getCarModuleType(), 2)) { if (Objects.equals(carInfo.getCarModuleType(), 2)) {
final String ARTEMIS_PATH = "/artemis"; reservationCarFromHttp(project, carInfo);
final String path = ARTEMIS_PATH + "/api/pms/v2/parkingSpace/reservations/addition";
String host = "https://" + project.getArtemisConfigHost();
ParkReservation parkReservation = getParkReservation(project, carInfo);
if (parkReservation != null) {
HikvisionUtil.doPost(host, path, JSON.toJSONString(parkReservation), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
} else {
//删除预约车辆
deleteReservationCarInfo(carInfo, project);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
private void reservationCarFromHttp(Project project, CarInfo carInfo) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v2/parkingSpace/reservations/addition";
String host = "https://" + project.getArtemisConfigHost();
ParkReservation parkReservation = getParkReservation(project, carInfo);
if (parkReservation != null) {
HikvisionUtil.doPost(host, path, JSON.toJSONString(parkReservation), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
}
private ParkReservation getParkReservation(Project project, CarInfo carInfo) { private ParkReservation getParkReservation(Project project, CarInfo carInfo) {
JSONArray parkList = getParkList(project); String parkIndexCode = getProjectParkCode(project);
if (parkList != null && parkList.size() > 0) { if (StringUtils.isNotBlank(parkIndexCode)) {
JSONObject jo = parkList.getJSONObject(0);
String parkIndexCode = jo.getString("parkIndexCode");
WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId()); WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId());
ParkReservation parkReservation = new ParkReservation(); ParkReservation parkReservation = new ParkReservation();
parkReservation.setParkSyscode(parkIndexCode); parkReservation.setParkSyscode(parkIndexCode);
@ -1163,6 +1254,23 @@ public class HikvisionCall {
return null; return null;
} }
/**
* 获取项目名称的停车场的parkIndexCode
*
* @param project
* @return
*/
public String getProjectParkCode(Project project) {
JSONArray parkList = getParkList(project);
if (parkList != null && parkList.size() > 0) {
JSONObject jo = parkList.getJSONObject(0);
if (Objects.equals(jo.getString("parkName"), project.getProjectName())) {
return jo.getString("parkIndexCode");
}
}
return null;
}
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss+'Z'")); System.out.println(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss+'Z'"));
} }
@ -1200,4 +1308,40 @@ public class HikvisionCall {
}); });
return fileName; return fileName;
} }
/**
* 车辆群组管理
*
* @param project
* @param operation 绑定操作类型1绑定2解绑
* @param categoryCode 车辆分类标识
* @param vehicleIds
*/
public void carCategoryBind(Project project, Integer operation, String categoryCode, String vehicleIds) {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/car/categoryBind";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
jo.put("vehicleIds", vehicleIds);
jo.put("operation", operation);
jo.put("categoryCode", categoryCode);
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
/**
* 查询车辆分类
*/
public JSONArray categorySearch(Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/car/category/search";
String host = "https://" + project.getArtemisConfigHost();
JSONObject jo = new JSONObject();
String rs = HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
return HikvisionUtil.getJSONArrayData(rs);
}
} }