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
public void addCarInfoForHikvision(CarInfo carInfo) {
try {
hikvisionCall.addCarInfoForHikvision(carInfo);
hikvisionCall.addCarInfoFromHttp(carInfo);
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -48,6 +48,8 @@ import java.util.concurrent.CompletableFuture;
@RestController
@RequestMapping("/xmgl/hikvision")
public class HikvisionCall {
private static String FIXED_CAR_GROUP_NAME = "固定车永久通行";
@Value("${upload.image.url.prefix:}")
private String imageUrlPrefix;
@Value("${basePath:}")
@ -77,6 +79,7 @@ public class HikvisionCall {
@Lazy
private CarInfoMapper carInfoMapper;
@ApiOperation(value = "海康事件回调", notes = "海康事件回调", httpMethod = "POST")
@PostMapping(value = "/eventCallback")
public Result eventCallback(@ApiIgnore @RequestBody JSONObject jsonObject) {
@ -284,6 +287,20 @@ public class HikvisionCall {
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)) {
return;
}
addWorkerFromHttp(workerInfo, project);
}
private void addWorkerFromHttp(WorkerInfo workerInfo, Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v2/person/single/add";
String host = "https://" + project.getArtemisConfigHost();
@ -441,11 +462,7 @@ public class HikvisionCall {
}
JSONObject wiJo = getWorkerInfo(workerInfo, project);
if (wiJo != null) {
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());
editWorkerFromHttp(workerInfo, project);
editWorkerFace(workerInfo, project);
} 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);
deleteWorkerFromHttp(workerInfo, project);
}
private void deleteWorkerFromHttp(WorkerInfo workerInfo, Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/person/batch/delete";
String host = "https://" + project.getArtemisConfigHost();
@ -596,11 +625,27 @@ public class HikvisionCall {
*
* @param carInfo
*/
public void addCarInfoForHikvision(CarInfo carInfo) {
public void addCarInfoFromHttp(CarInfo carInfo) {
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()));
}
}
ifReservationCar(project, carInfo);
}
private void addCarInfoFromHttp(CarInfo carInfo, Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/add";
String host = "https://" + project.getArtemisConfigHost();
@ -608,8 +653,6 @@ public class HikvisionCall {
ArrayList<HikvisionCarInfo> list = new ArrayList<>();
list.add(hikvisionCarInfo);
HikvisionUtil.doPost(host, path, JSON.toJSONString(list), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
reservationCar(project, carInfo);
}
private HikvisionCarInfo getHikvisionCarInfo(CarInfo carInfo) {
@ -719,14 +762,56 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
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 path = ARTEMIS_PATH + "/api/resource/v1/vehicle/single/update";
String host = "https://" + project.getArtemisConfigHost();
HikvisionCarInfo hikvisionCarInfo = getHikvisionCarInfo(carInfo);
HikvisionUtil.doPost(host, path, JSON.toJSONString(hikvisionCarInfo), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
}
//预约车辆
reservationCar(project, carInfo);
private void ifBindGroup(Project project, int operation, CarInfo 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)) {
return;
}
deleteCarInfoForHikvision(carInfo, project);
deleteReservationCarInfo(carInfo, project);
}
private void deleteCarInfoForHikvision(CarInfo carInfo, Project project) {
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/resource/v1/vehicle/batch/delete";
String host = "https://" + project.getArtemisConfigHost();
@ -747,8 +838,6 @@ public class HikvisionCall {
list.add(String.valueOf(carInfo.getId()));
jo.put("vehicleIds", list);
HikvisionUtil.doPost(host, path, jo.toJSONString(), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret());
deleteReservationCarInfo(carInfo, project);
}
/**
@ -1121,31 +1210,33 @@ public class HikvisionCall {
* @param project
* @param carInfo
*/
public void reservationCar(Project project, CarInfo carInfo) {
public void ifReservationCar(Project project, CarInfo carInfo) {
try {
//删除预约车辆
deleteReservationCarInfo(carInfo, project);
//临时车辆预约
if (Objects.equals(carInfo.getCarModuleType(), 2)) {
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());
}
} else {
//删除预约车辆
deleteReservationCarInfo(carInfo, project);
reservationCarFromHttp(project, carInfo);
}
} catch (Exception e) {
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) {
JSONArray parkList = getParkList(project);
if (parkList != null && parkList.size() > 0) {
JSONObject jo = parkList.getJSONObject(0);
String parkIndexCode = jo.getString("parkIndexCode");
String parkIndexCode = getProjectParkCode(project);
if (StringUtils.isNotBlank(parkIndexCode)) {
WorkerInfo workerInfo = workerInfoMapper.selectById(carInfo.getDriverWorkerId());
ParkReservation parkReservation = new ParkReservation();
parkReservation.setParkSyscode(parkIndexCode);
@ -1163,6 +1254,23 @@ public class HikvisionCall {
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) {
System.out.println(DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss+'Z'"));
}
@ -1200,4 +1308,40 @@ public class HikvisionCall {
});
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);
}
}