isc的bug修改
This commit is contained in:
parent
7b0fa14af4
commit
ea2acf105b
@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user