车辆和ai预警的海康回调的代码修改
This commit is contained in:
parent
060f40e73b
commit
67634867d1
@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.jeecg.common.execption.OpenPromptException;
|
||||
import com.zhgd.redis.lock.RedisRepository;
|
||||
import com.zhgd.xmgl.async.AsyncAiAnalyse;
|
||||
import com.zhgd.xmgl.base.*;
|
||||
import com.zhgd.xmgl.call.entity.ChargeDeletionParam;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl;
|
||||
@ -29,6 +30,10 @@ import com.zhgd.xmgl.modules.frontier.service.IFrontierProtectionDevAlarmService
|
||||
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
|
||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord;
|
||||
import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareRecord;
|
||||
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareAlarmRecordMapper;
|
||||
import com.zhgd.xmgl.modules.video.mapper.AiAnalyseHardWareRecordMapper;
|
||||
import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareAlarmRecordService;
|
||||
import com.zhgd.xmgl.modules.video.service.IAiAnalyseHardWareRecordService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.*;
|
||||
@ -76,6 +81,12 @@ public class HikvisionCall {
|
||||
@Lazy
|
||||
@Autowired
|
||||
HikvisionCall hikvisionCall;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private AiAnalyseHardWareAlarmRecordMapper aiAnalyseHardWareAlarmRecordMapper;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private AsyncAiAnalyse asyncAiAnalyse;
|
||||
@Value("${upload.image.url.prefix:}")
|
||||
private String imageUrlPrefix;
|
||||
@Value("${basePath:}")
|
||||
@ -127,15 +138,19 @@ public class HikvisionCall {
|
||||
@Autowired
|
||||
private IAiAnalyseHardWareRecordService aiAnalyseHardWareRecordService;
|
||||
|
||||
@Autowired
|
||||
private IAiAnalyseHardWareAlarmRecordService aiAnalyseHardWareAlarmRecordService;
|
||||
|
||||
@Autowired
|
||||
private IFrontierProtectionDevAlarmService frontierProtectionDevAlarmService;
|
||||
|
||||
@Autowired
|
||||
private FrontierProtectionDevService frontierProtectionDevService;
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IAiAnalyseHardWareAlarmRecordService aiAnalyseHardWareAlarmRecordService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private AiAnalyseHardWareRecordMapper aiAnalyseHardWareRecordMapper;
|
||||
|
||||
/**
|
||||
* 获取图片
|
||||
*
|
||||
@ -176,15 +191,15 @@ public class HikvisionCall {
|
||||
for (int i = 0; i < eventsJa.size(); i++) {
|
||||
JSONObject jo1 = eventsJa.getJSONObject(i);
|
||||
JSONObject dataJo = jo1.getJSONObject("data");
|
||||
String happenTime = jo1.getString("happenTime");
|
||||
String srcIndex = jo1.getString("srcIndex");
|
||||
String extEventPersonNo = dataJo.getString("ExtEventPersonNo");
|
||||
String extEventCardNo = dataJo.getString("ExtEventCardNo");
|
||||
WorkerInfo workerInfo = workerInfoMapper.selectById(extEventPersonNo);
|
||||
if (workerInfo == null) {
|
||||
log.info("未找到该人员信息,extEventPersonNo:{}", extEventPersonNo);
|
||||
return Result.error("未找到该人员信息,extEventPersonNo:" + extEventPersonNo);
|
||||
}
|
||||
String happenTime = jo1.getString("happenTime");
|
||||
String extEventCardNo = dataJo.getString("ExtEventCardNo");
|
||||
String srcIndex = jo1.getString("srcIndex");
|
||||
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, workerInfo.getProjectSn()));
|
||||
String idCard = workerInfo.getIdCard();
|
||||
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
|
||||
@ -198,10 +213,7 @@ public class HikvisionCall {
|
||||
log.error("请先上传对应设备信息,idCard:{},devSN:{}", idCard, srcIndex);
|
||||
return Result.error("请先上传对应设备信息,idCard:" + idCard + ",extEventCardNo:" + extEventCardNo);
|
||||
}
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
String time = DateUtil.formatDateTime(DateUtil.parse(happenTime));
|
||||
map.put("passTime", time);
|
||||
map.put("idCard", idCard);
|
||||
Integer count = workerAttendanceMapper.selectCount(new LambdaQueryWrapper<WorkerAttendance>()
|
||||
.eq(WorkerAttendance::getPersonSn, workerInfo.getPersonSn())
|
||||
.eq(WorkerAttendance::getCreateTime, time)
|
||||
@ -209,23 +221,8 @@ public class HikvisionCall {
|
||||
if (count != 0) {
|
||||
continue;
|
||||
}
|
||||
map.put("attendanceNumber", workerInfo.getAttendanceNumber());
|
||||
int passType = workerAttendanceServiceImpl.getPassType(ufaceDev, time);
|
||||
map.put("direction", passType);
|
||||
map.put("passType", 2);
|
||||
map.put("projectCode", workerInfo.getProjectSn());
|
||||
map.put("devCode", srcIndex);
|
||||
try {
|
||||
String extEventPictureURL = dataJo.getString("ExtEventPictureURL");
|
||||
String svrIndexCode = dataJo.getString("svrIndexCode");
|
||||
HikvisionEventsPictureRq rq = new HikvisionEventsPictureRq();
|
||||
rq.setPicUri(extEventPictureURL);
|
||||
rq.setSvrIndexCode(svrIndexCode);
|
||||
map.put("faceUrl", saveToLocal(getHikvisionEventsPicture(rq, project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
workerAttendanceService.saveExternalPassRecord(map);
|
||||
hikvisionCall.saveEventCallbackAttendanceAsync(dataJo, workerInfo, srcIndex, project, idCard, time, passType);
|
||||
}
|
||||
}
|
||||
} else if (Objects.equals(ability, "event_pms")) {
|
||||
@ -269,55 +266,7 @@ public class HikvisionCall {
|
||||
//carPassRecordMapper.updateById(carPassRecord);
|
||||
} else if (eventType == 771760130 || eventType == 771760133) {
|
||||
//压线事件
|
||||
CarPassRecord carPassRecord = new CarPassRecord();
|
||||
carPassRecord.setCarNumber(plateNo);
|
||||
carPassRecord.setType(getPassType(carCamera.getPassType()));
|
||||
carPassRecord.setPassTime(time);
|
||||
try {
|
||||
//车牌
|
||||
JSONObject picUrlJo = dataJo.getJSONObject("picUrl");
|
||||
String svrIndex = dataJo.getString("svrIndex");
|
||||
String vehiclePicUrl = picUrlJo.getString("vehiclePicUrl");
|
||||
String platePicUrl = picUrlJo.getString("platePicUrl");
|
||||
if (StringUtils.isNotBlank(platePicUrl)) {
|
||||
carPassRecord.setImageUrl(saveToLocal(getHikvisionEventsPicture(new HikvisionEventsPictureRq(svrIndex, platePicUrl), project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
}
|
||||
if (StringUtils.isNotBlank(vehiclePicUrl)) {
|
||||
carPassRecord.setPanoramaUrl(saveToLocal(getHikvisionEventsPicture(new HikvisionEventsPictureRq(svrIndex, vehiclePicUrl), project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
|
||||
carPassRecord.setCarColor(getCarColor(dataJo.getInteger("plateColor")));
|
||||
carPassRecord.setLocation(carCamera.getCameraName());
|
||||
carPassRecord.setProjectSn(carCamera.getProjectSn());
|
||||
carPassRecord.setColor(getColor(dataJo.getInteger("vehicleColor")));
|
||||
carPassRecord.setCameraId(srcIndex);
|
||||
List<CarInfo> carInfos = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
|
||||
.eq(CarInfo::getProjectSn, carCamera.getProjectSn())
|
||||
.eq(CarInfo::getCarNumber, plateNo)
|
||||
.eq(CarInfo::getIsBlack, 0)
|
||||
);
|
||||
if (CollUtil.isNotEmpty(carInfos)) {
|
||||
carPassRecord.setIsOpen(1);
|
||||
} else {
|
||||
carPassRecord.setIsOpen(0);
|
||||
}
|
||||
LambdaQueryWrapper<CarPassRecord> queryWrapper = new LambdaQueryWrapper<CarPassRecord>()
|
||||
.eq(CarPassRecord::getCarNumber, plateNo)
|
||||
.eq(CarPassRecord::getPassTime, time);
|
||||
Integer count = carPassRecordMapper.selectCount(queryWrapper);
|
||||
if (count != 0) {
|
||||
carPassRecordMapper.update(carPassRecord, queryWrapper);
|
||||
} else {
|
||||
carPassRecordMapper.insert(carPassRecord);
|
||||
}
|
||||
//车进场后,意味着绑定的司机走过了人脸机,统计为在场人员。车辆出场后,在场人员随之减少
|
||||
if (carInfos.size() != 0 && carInfos.get(0) != null && StringUtils.isNotEmpty(carInfos.get(0).getDriverWorkerId())) {
|
||||
log.info("保存车辆绑定的司机的通行数据,车牌号:{}", carInfos.get(0).getCarNumber());
|
||||
carPassRecordService.saveDriverPassData(carPassRecord, carInfos.get(0));
|
||||
}
|
||||
hikvisionCall.saveEventCallbackCarPassRecordAsync(dataJo, srcIndex, plateNo, carCamera, project, time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -336,40 +285,127 @@ public class HikvisionCall {
|
||||
// frontierProtectionDevAlarmService.saveBatch(frontierProtectionDevAlarmList);
|
||||
|
||||
} else if (Objects.equals(ability, "")) {
|
||||
JSONArray eventsArray = paramsJo.getJSONArray("events");
|
||||
if (eventsArray.size()>0 ){
|
||||
JSONObject dataEvent = (JSONObject) eventsArray.get(0);
|
||||
JSONArray eventDetails = dataEvent.getJSONArray("eventDetails");
|
||||
JSONObject eventDetail = (JSONObject) eventDetails.get(0);
|
||||
log.info("AI识别告警=======" + paramsJo);
|
||||
JSONArray eventsArray = paramsJo.getJSONArray("events");
|
||||
if (eventsArray.size() > 0) {
|
||||
JSONObject dataEvent = eventsArray.getJSONObject(0);
|
||||
JSONArray eventDetails = dataEvent.getJSONArray("eventDetails");
|
||||
JSONObject eventDetail = eventDetails.getJSONObject(0);
|
||||
ability = eventDetail.getString("ability");
|
||||
if (Objects.equals(ability, "event_vss")){
|
||||
if (Objects.equals(ability, "event_vss")) {
|
||||
log.info("AI识别告警=======" + paramsJo);
|
||||
String srcName = eventDetail.getString("srcName");//摄像机名称
|
||||
String eventType = eventDetail.getString("eventType");//422000003
|
||||
JSONObject data = eventDetail.getJSONObject("data");
|
||||
String imageUrl = data.getString("url"); //海康AI图片地址
|
||||
String srcName = eventDetail.getString("srcName");//摄像机名称
|
||||
String eventType = eventDetail.getString("eventType");//422000003
|
||||
JSONObject data = eventDetail.getJSONObject("data");
|
||||
String imageUrl = data.getString("url"); //海康AI图片地址
|
||||
String deviceID = data.getString("deviceID"); //海康AI图片地址
|
||||
AiAnalyseHardWareRecord dev = aiAnalyseHardWareRecordMapper.selectOne(new LambdaQueryWrapper<AiAnalyseHardWareRecord>()
|
||||
.eq(AiAnalyseHardWareRecord::getHardwareId, deviceID));
|
||||
if (dev == null) {
|
||||
log.info("未查到AI识别告警设备,设备id:{}", deviceID);
|
||||
return null;
|
||||
}
|
||||
hikvisionCall.saveEventCallbackAiAsync(dataEvent, srcName, eventType, imageUrl, deviceID, dev);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// JSONArray eventsJa = paramsJo.getJSONArray("events");
|
||||
// List<AiAnalyseHardWareAlarmRecord> aiAnalyseHardWareAlarmRecords = new ArrayList<>();
|
||||
// for (int i = 0; i < eventsJa.size(); i++) {
|
||||
// JSONObject obj = eventsJa.getJSONObject(i);
|
||||
// String devCode = obj.getString("srcIndex");
|
||||
// AiAnalyseHardWareRecord aiAnalyseHardWareRecord = aiAnalyseHardWareRecordService.getOne(Wrappers.<AiAnalyseHardWareRecord>lambdaQuery().eq(AiAnalyseHardWareRecord::getHardwareId, devCode));
|
||||
// AiAnalyseHardWareAlarmRecord aiAnalyseHardWareAlarmRecord = new AiAnalyseHardWareAlarmRecord();
|
||||
// aiAnalyseHardWareAlarmRecord.setHardwareId(aiAnalyseHardWareRecord.getHardwareId());
|
||||
// aiAnalyseHardWareAlarmRecord.setStatus(1);
|
||||
// aiAnalyseHardWareAlarmRecord.setProjectSn(aiAnalyseHardWareRecord.getProjectSn());
|
||||
// aiAnalyseHardWareAlarmRecords.add(aiAnalyseHardWareAlarmRecord);
|
||||
// }
|
||||
// aiAnalyseHardWareAlarmRecordService.saveBatch(aiAnalyseHardWareAlarmRecords);
|
||||
}
|
||||
}
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@Async("saveEventCallbackAiAsync")
|
||||
public void saveEventCallbackAiAsync(JSONObject dataEvent, String srcName, String eventType, String imageUrl, String deviceID, AiAnalyseHardWareRecord dev) {
|
||||
String happenTime = dataEvent.getString("happenTime");
|
||||
AiAnalyseHardWareAlarmRecord aiAnalyseHardWareAlarmRecord = new AiAnalyseHardWareAlarmRecord();
|
||||
aiAnalyseHardWareAlarmRecord.setCreateTime(DateUtil.formatDateTime(DateUtil.parse(happenTime)));
|
||||
aiAnalyseHardWareAlarmRecord.setAlarmType(Integer.valueOf(eventType));
|
||||
aiAnalyseHardWareAlarmRecord.setHardwareId(deviceID);
|
||||
aiAnalyseHardWareAlarmRecord.setHardwareName(dev.getHardwareName());
|
||||
aiAnalyseHardWareAlarmRecord.setLocation(srcName);
|
||||
aiAnalyseHardWareAlarmRecord.setProjectSn(dev.getProjectSn());
|
||||
aiAnalyseHardWareAlarmRecord.setStatus(1);
|
||||
aiAnalyseHardWareAlarmRecord.setImageUrl(saveToLocal(imageUrl));
|
||||
aiAnalyseHardWareAlarmRecordMapper.insert(aiAnalyseHardWareAlarmRecord);
|
||||
//将数据通过MQTT转发到前台
|
||||
asyncAiAnalyse.sendAiAnalyse(aiAnalyseHardWareAlarmRecord);
|
||||
}
|
||||
|
||||
@Async("saveEventCallbackCarPassRecord")
|
||||
public void saveEventCallbackCarPassRecordAsync(JSONObject dataJo, String srcIndex, String plateNo, CarCamera carCamera, Project project, String time) {
|
||||
CarPassRecord carPassRecord = new CarPassRecord();
|
||||
carPassRecord.setCarNumber(plateNo);
|
||||
carPassRecord.setType(getPassType(carCamera.getPassType()));
|
||||
carPassRecord.setPassTime(time);
|
||||
try {
|
||||
//车牌
|
||||
JSONObject picUrlJo = dataJo.getJSONObject("picUrl");
|
||||
String svrIndex = dataJo.getString("svrIndex");
|
||||
String vehiclePicUrl = picUrlJo.getString("vehiclePicUrl");
|
||||
String platePicUrl = picUrlJo.getString("platePicUrl");
|
||||
if (StringUtils.isNotBlank(platePicUrl)) {
|
||||
carPassRecord.setImageUrl(saveToLocal(getHikvisionEventsPicture(new HikvisionEventsPictureRq(svrIndex, platePicUrl), project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
}
|
||||
if (StringUtils.isNotBlank(vehiclePicUrl)) {
|
||||
carPassRecord.setPanoramaUrl(saveToLocal(getHikvisionEventsPicture(new HikvisionEventsPictureRq(svrIndex, vehiclePicUrl), project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
|
||||
carPassRecord.setCarColor(getCarColor(dataJo.getInteger("plateColor")));
|
||||
carPassRecord.setLocation(carCamera.getCameraName());
|
||||
carPassRecord.setProjectSn(carCamera.getProjectSn());
|
||||
carPassRecord.setColor(getColor(dataJo.getInteger("vehicleColor")));
|
||||
carPassRecord.setCameraId(srcIndex);
|
||||
List<CarInfo> carInfos = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
|
||||
.eq(CarInfo::getProjectSn, carCamera.getProjectSn())
|
||||
.eq(CarInfo::getCarNumber, plateNo)
|
||||
.eq(CarInfo::getIsBlack, 0)
|
||||
);
|
||||
if (CollUtil.isNotEmpty(carInfos)) {
|
||||
carPassRecord.setIsOpen(1);
|
||||
} else {
|
||||
carPassRecord.setIsOpen(0);
|
||||
}
|
||||
LambdaQueryWrapper<CarPassRecord> queryWrapper = new LambdaQueryWrapper<CarPassRecord>()
|
||||
.eq(CarPassRecord::getCarNumber, plateNo)
|
||||
.eq(CarPassRecord::getPassTime, time);
|
||||
Integer count = carPassRecordMapper.selectCount(queryWrapper);
|
||||
if (count != 0) {
|
||||
carPassRecordMapper.update(carPassRecord, queryWrapper);
|
||||
} else {
|
||||
carPassRecordMapper.insert(carPassRecord);
|
||||
}
|
||||
//车进场后,意味着绑定的司机走过了人脸机,统计为在场人员。车辆出场后,在场人员随之减少
|
||||
if (carInfos.size() != 0 && carInfos.get(0) != null && StringUtils.isNotEmpty(carInfos.get(0).getDriverWorkerId())) {
|
||||
log.info("保存车辆绑定的司机的通行数据,车牌号:{}", carInfos.get(0).getCarNumber());
|
||||
carPassRecordService.saveDriverPassData(carPassRecord, carInfos.get(0));
|
||||
}
|
||||
}
|
||||
|
||||
@Async("saveEventCallbackAttendance")
|
||||
public void saveEventCallbackAttendanceAsync(JSONObject dataJo, WorkerInfo workerInfo, String srcIndex, Project project, String idCard, String time, int passType) {
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
map.put("passTime", time);
|
||||
map.put("idCard", idCard);
|
||||
map.put("attendanceNumber", workerInfo.getAttendanceNumber());
|
||||
map.put("direction", passType);
|
||||
map.put("passType", 2);
|
||||
map.put("projectCode", workerInfo.getProjectSn());
|
||||
map.put("devCode", srcIndex);
|
||||
try {
|
||||
String extEventPictureURL = dataJo.getString("ExtEventPictureURL");
|
||||
String svrIndexCode = dataJo.getString("svrIndexCode");
|
||||
HikvisionEventsPictureRq rq = new HikvisionEventsPictureRq();
|
||||
rq.setPicUri(extEventPictureURL);
|
||||
rq.setSvrIndexCode(svrIndexCode);
|
||||
map.put("faceUrl", saveToLocal(getHikvisionEventsPicture(rq, project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
workerAttendanceService.saveExternalPassRecord(map);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "按事件类型订阅事件", notes = "按事件类型订阅事件", httpMethod = "POST")
|
||||
@PostMapping(value = "/subscribeEvent")
|
||||
public Result subscribeEvent(@ApiIgnore @RequestBody SubscribeEventQo qo) throws Exception {
|
||||
@ -405,6 +441,12 @@ public class HikvisionCall {
|
||||
if (CollUtil.isEmpty(projects)) {
|
||||
return Result.error("项目未配置海康同步功能");
|
||||
}
|
||||
getDoorEventsAsync(startTime, endTime, param, projectSn, projects);
|
||||
return Result.ok("已在后台同步人员数据,请耐心等待!");
|
||||
}
|
||||
|
||||
@Async("getDoorEvents")
|
||||
public void getDoorEventsAsync(String startTime, String endTime, JSONObject param, String projectSn, List<Project> projects) {
|
||||
CompletableFuture.runAsync(() -> {
|
||||
for (Project project : projects) {
|
||||
List<UfaceDev> ufaceDevs = ufaceDevMapper.selectList(new LambdaQueryWrapper<UfaceDev>()
|
||||
@ -490,7 +532,6 @@ public class HikvisionCall {
|
||||
}
|
||||
log.info("服务挂了主动获取门禁点事件的人员通行记录执行完成,startTime:{},endTime:{}", startTime, endTime);
|
||||
});
|
||||
return Result.ok("已在后台同步人员数据,请耐心等待!");
|
||||
}
|
||||
|
||||
@ApiOperation(value = "服务挂了主动获取查询过车记录", notes = "服务挂了主动获取查询过车记录", httpMethod = "POST")
|
||||
@ -518,98 +559,101 @@ public class HikvisionCall {
|
||||
if (CollUtil.isEmpty(projects)) {
|
||||
return Result.error("项目未配置海康同步功能");
|
||||
}
|
||||
CompletableFuture.runAsync(() -> {
|
||||
for (Project project : projects) {
|
||||
param.put("pageNo", 1);
|
||||
String projectParkCode = null;
|
||||
hikvisionCall.getCrossRecordsAsync(startTime, endTime, param, projects);
|
||||
return Result.ok("已在后台同步车辆通行数据,请耐心等待!");
|
||||
}
|
||||
|
||||
@Async("getCrossRecords")
|
||||
public void getCrossRecordsAsync(String startTime, String endTime, JSONObject param, List<Project> projects) {
|
||||
for (Project project : projects) {
|
||||
param.put("pageNo", 1);
|
||||
String projectParkCode = null;
|
||||
try {
|
||||
projectParkCode = getProjectParkCode(project);
|
||||
} catch (Exception e) {
|
||||
log.error("err:", e);
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isBlank(projectParkCode)) {
|
||||
continue;
|
||||
}
|
||||
param.put("parkSyscode", projectParkCode);
|
||||
Integer total = 0;
|
||||
JSONArray listJa = new JSONArray();
|
||||
do {
|
||||
String rs = null;
|
||||
try {
|
||||
projectParkCode = getProjectParkCode(project);
|
||||
rs = getCrossRecordsForHttp(project, param);
|
||||
} catch (Exception e) {
|
||||
log.error("err:", e);
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isBlank(projectParkCode)) {
|
||||
continue;
|
||||
}
|
||||
param.put("parkSyscode", projectParkCode);
|
||||
Integer total = 0;
|
||||
JSONArray listJa = new JSONArray();
|
||||
do {
|
||||
String rs = null;
|
||||
try {
|
||||
rs = getCrossRecordsForHttp(project, param);
|
||||
} catch (Exception e) {
|
||||
log.error("err:", e);
|
||||
return;
|
||||
}
|
||||
JSONObject joData = HikvisionUtil.getJSONObjectData(rs);
|
||||
if (joData != null) {
|
||||
total = joData.getInteger("total");
|
||||
if (!Objects.equals(total, 0)) {
|
||||
listJa = joData.getJSONArray("list");
|
||||
for (int i = 0; i < listJa.size(); i++) {
|
||||
JSONObject listJo = listJa.getJSONObject(i);
|
||||
String plateNo = listJo.getString("plateNo");
|
||||
String roadwaySyscode = listJo.getString("roadwaySyscode");
|
||||
String aswSyscode = listJo.getString("aswSyscode");
|
||||
String crossTime = listJo.getString("crossTime");
|
||||
String time = DateUtil.formatDateTime(DateUtil.parse(crossTime));
|
||||
String plateNoPicUri = listJo.getString("plateNoPicUri");
|
||||
String vehiclePicUri = listJo.getString("vehiclePicUri");
|
||||
CarCamera carCamera = carCameraMapper.selectOne(new LambdaQueryWrapper<CarCamera>()
|
||||
.eq(CarCamera::getCameraId, roadwaySyscode));
|
||||
if (carCamera == null) {
|
||||
log.info("海康车辆相机设备不存在:CameraId:{}", roadwaySyscode);
|
||||
continue;
|
||||
}
|
||||
CarPassRecord entity = new CarPassRecord();
|
||||
entity.setCarNumber(plateNo);
|
||||
entity.setType(getPassType(carCamera.getPassType()));
|
||||
entity.setPassTime(time);
|
||||
|
||||
try {
|
||||
//车牌
|
||||
entity.setImageUrl(saveToLocal(getHikvisionEventsPicture(new HikvisionEventsPictureRq(aswSyscode, plateNoPicUri), project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
entity.setPanoramaUrl(saveToLocal(getHikvisionEventsPicture(new HikvisionEventsPictureRq(aswSyscode, vehiclePicUri), project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
|
||||
entity.setCarColor(getCarColor(listJo.getInteger("plateColor")));
|
||||
entity.setLocation(carCamera.getCameraName());
|
||||
entity.setProjectSn(carCamera.getProjectSn());
|
||||
entity.setColor(getColor(listJo.getInteger("vehicleColor")));
|
||||
entity.setCameraId(roadwaySyscode);
|
||||
List<CarInfo> carInfos = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
|
||||
.eq(CarInfo::getProjectSn, carCamera.getProjectSn())
|
||||
.eq(CarInfo::getCarNumber, plateNo)
|
||||
.eq(CarInfo::getIsBlack, 0)
|
||||
);
|
||||
if (CollUtil.isNotEmpty(carInfos)) {
|
||||
entity.setIsOpen(1);
|
||||
} else {
|
||||
entity.setIsOpen(0);
|
||||
}
|
||||
Integer count1 = carPassRecordMapper.selectCount(new LambdaQueryWrapper<CarPassRecord>()
|
||||
.eq(CarPassRecord::getCarNumber, plateNo)
|
||||
.eq(CarPassRecord::getPassTime, time)
|
||||
);
|
||||
if (count1 != 0) {
|
||||
carPassRecordMapper.update(entity, new LambdaQueryWrapper<CarPassRecord>()
|
||||
.eq(CarPassRecord::getCarNumber, plateNo)
|
||||
.eq(CarPassRecord::getPassTime, time));
|
||||
} else {
|
||||
carPassRecordMapper.insert(entity);
|
||||
}
|
||||
JSONObject joData = HikvisionUtil.getJSONObjectData(rs);
|
||||
if (joData != null) {
|
||||
total = joData.getInteger("total");
|
||||
if (!Objects.equals(total, 0)) {
|
||||
listJa = joData.getJSONArray("list");
|
||||
for (int i = 0; i < listJa.size(); i++) {
|
||||
JSONObject listJo = listJa.getJSONObject(i);
|
||||
String plateNo = listJo.getString("plateNo");
|
||||
String roadwaySyscode = listJo.getString("roadwaySyscode");
|
||||
String aswSyscode = listJo.getString("aswSyscode");
|
||||
String crossTime = listJo.getString("crossTime");
|
||||
String time = DateUtil.formatDateTime(DateUtil.parse(crossTime));
|
||||
String plateNoPicUri = listJo.getString("plateNoPicUri");
|
||||
String vehiclePicUri = listJo.getString("vehiclePicUri");
|
||||
CarCamera carCamera = carCameraMapper.selectOne(new LambdaQueryWrapper<CarCamera>()
|
||||
.eq(CarCamera::getCameraId, roadwaySyscode));
|
||||
if (carCamera == null) {
|
||||
log.info("海康车辆相机设备不存在:CameraId:{}", roadwaySyscode);
|
||||
continue;
|
||||
}
|
||||
CarPassRecord entity = new CarPassRecord();
|
||||
entity.setCarNumber(plateNo);
|
||||
entity.setType(getPassType(carCamera.getPassType()));
|
||||
entity.setPassTime(time);
|
||||
|
||||
try {
|
||||
//车牌
|
||||
entity.setImageUrl(saveToLocal(getHikvisionEventsPicture(new HikvisionEventsPictureRq(aswSyscode, plateNoPicUri), project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
entity.setPanoramaUrl(saveToLocal(getHikvisionEventsPicture(new HikvisionEventsPictureRq(aswSyscode, vehiclePicUri), project.getArtemisConfigHost(), project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret())));
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
|
||||
entity.setCarColor(getCarColor(listJo.getInteger("plateColor")));
|
||||
entity.setLocation(carCamera.getCameraName());
|
||||
entity.setProjectSn(carCamera.getProjectSn());
|
||||
entity.setColor(getColor(listJo.getInteger("vehicleColor")));
|
||||
entity.setCameraId(roadwaySyscode);
|
||||
List<CarInfo> carInfos = carInfoMapper.selectList(new LambdaQueryWrapper<CarInfo>()
|
||||
.eq(CarInfo::getProjectSn, carCamera.getProjectSn())
|
||||
.eq(CarInfo::getCarNumber, plateNo)
|
||||
.eq(CarInfo::getIsBlack, 0)
|
||||
);
|
||||
if (CollUtil.isNotEmpty(carInfos)) {
|
||||
entity.setIsOpen(1);
|
||||
} else {
|
||||
entity.setIsOpen(0);
|
||||
}
|
||||
Integer count1 = carPassRecordMapper.selectCount(new LambdaQueryWrapper<CarPassRecord>()
|
||||
.eq(CarPassRecord::getCarNumber, plateNo)
|
||||
.eq(CarPassRecord::getPassTime, time)
|
||||
);
|
||||
if (count1 != 0) {
|
||||
carPassRecordMapper.update(entity, new LambdaQueryWrapper<CarPassRecord>()
|
||||
.eq(CarPassRecord::getCarNumber, plateNo)
|
||||
.eq(CarPassRecord::getPassTime, time));
|
||||
} else {
|
||||
carPassRecordMapper.insert(entity);
|
||||
}
|
||||
param.put("pageNo", param.getIntValue("pageNo") + 1);
|
||||
}
|
||||
param.put("pageNo", param.getIntValue("pageNo") + 1);
|
||||
}
|
||||
} while (total > 0 && listJa.size() > 0);
|
||||
}
|
||||
log.info("服务挂了主动获取车辆事件的车辆通行记录执行完成,startTime:{},endTime:{}", startTime, endTime);
|
||||
});
|
||||
return Result.ok("已在后台同步车辆通行数据,请耐心等待!");
|
||||
}
|
||||
} while (total > 0 && listJa.size() > 0);
|
||||
}
|
||||
log.info("服务挂了主动获取车辆事件的车辆通行记录执行完成,startTime:{},endTime:{}", startTime, endTime);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2088,25 +2132,15 @@ public class HikvisionCall {
|
||||
return null;
|
||||
}
|
||||
String fileName = IdUtil.simpleUUID() + ".png";
|
||||
CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
downLoadImg(url, fileName);
|
||||
} catch (Exception e) {
|
||||
log.error("下载图片失败,url:{}。>>>", url, e);
|
||||
try {
|
||||
downLoadImg(url, fileName);
|
||||
} catch (Exception ex) {
|
||||
log.error("重试下载图片失败,url:{}。>>>", url, ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
try {
|
||||
X509TrustManagerUtil.downLoadFromUrl(url, fileName, basePath);
|
||||
} catch (Exception e) {
|
||||
log.error("下载海康图片出现异常:" + e);
|
||||
return null;
|
||||
}
|
||||
return fileName;
|
||||
}
|
||||
|
||||
private void downLoadImg(String url, String fileName) throws Exception {
|
||||
X509TrustManagerUtil.downLoadFromUrlHttps(url, fileName, basePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存车辆群组绑定关系
|
||||
*
|
||||
|
||||
@ -372,5 +372,100 @@ public class AsyncConfig {
|
||||
return executor;
|
||||
}
|
||||
|
||||
@Bean("getCrossRecords")
|
||||
public ThreadPoolTaskExecutor getCrossRecords() {
|
||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||
/** 核心线程数(默认线程数) */
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
executor.setThreadNamePrefix("getCrossRecords-");
|
||||
// 线程池对拒绝任务的处理策略
|
||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
// 初始化
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
@Bean("getDoorEvents")
|
||||
public ThreadPoolTaskExecutor getDoorEvents() {
|
||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||
/** 核心线程数(默认线程数) */
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
executor.setThreadNamePrefix("getDoorEvents-");
|
||||
// 线程池对拒绝任务的处理策略
|
||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
// 初始化
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
@Bean("saveEventCallbackAttendance")
|
||||
public ThreadPoolTaskExecutor saveEventCallbackAttendance() {
|
||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||
/** 核心线程数(默认线程数) */
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
executor.setThreadNamePrefix("saveEventCallbackAttendance-");
|
||||
// 线程池对拒绝任务的处理策略
|
||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
// 初始化
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
@Bean("saveEventCallbackCarPassRecord")
|
||||
public ThreadPoolTaskExecutor saveEventCallbackCarPassRecord() {
|
||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||
/** 核心线程数(默认线程数) */
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
executor.setThreadNamePrefix("saveEventCallbackCarPassRecord-");
|
||||
// 线程池对拒绝任务的处理策略
|
||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
// 初始化
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
@Bean("saveEventCallbackAiAsync")
|
||||
public ThreadPoolTaskExecutor saveEventCallbackAiAsync() {
|
||||
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
|
||||
/** 核心线程数(默认线程数) */
|
||||
executor.setCorePoolSize(maxPoolSize);
|
||||
/** 最大线程数 */
|
||||
executor.setMaxPoolSize(maxPoolSize);
|
||||
executor.setQueueCapacity(100000);
|
||||
/** 允许线程空闲时间(单位:默认为秒) */
|
||||
executor.setKeepAliveSeconds(60);
|
||||
/** 线程池名前缀 */
|
||||
executor.setThreadNamePrefix("saveEventCallbackAiAsync-");
|
||||
// 线程池对拒绝任务的处理策略
|
||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||
// 初始化
|
||||
executor.initialize();
|
||||
return executor;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -119,6 +119,7 @@ public class SafetyHatWSClient {
|
||||
List<SafetyHatDev> devList = SpringContextUtils.getBean(SafetyHatDevMapper.class).selectList(new LambdaQueryWrapper<SafetyHatDev>()
|
||||
.eq(SafetyHatDev::getProjectSn, project.getProjectSn())
|
||||
.notIn(SafetyHatDev::getDevSn, devsns)
|
||||
.eq(SafetyHatDev::getOnline, 1)
|
||||
);
|
||||
if (CollUtil.isNotEmpty(devList)) {
|
||||
for (SafetyHatDev dev : devList) {
|
||||
|
||||
@ -96,12 +96,15 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
|
||||
|
||||
@Override
|
||||
public void addCarInfo(CarInfo carInfo) {
|
||||
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn())
|
||||
.eq(CarInfo::getCarNumber, carInfo.getCarNumber());
|
||||
int count = carInfoMapper.selectCount(queryWrapper);
|
||||
if (count > 0) {
|
||||
throw new OpenAlertException(MessageUtil.get("carNumberExistErr"));
|
||||
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
|
||||
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn())
|
||||
.eq(CarInfo::getCarNumber, carInfo.getCarNumber())
|
||||
.eq(CarInfo::getCarModuleType, 1);
|
||||
int count = carInfoMapper.selectCount(queryWrapper);
|
||||
if (count > 0) {
|
||||
throw new OpenAlertException(MessageUtil.get("carNumberExistErr"));
|
||||
}
|
||||
}
|
||||
carInfoMapper.insert(carInfo);
|
||||
|
||||
@ -111,13 +114,16 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
|
||||
|
||||
@Override
|
||||
public void editCarInfo(CarInfo carInfo) {
|
||||
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn())
|
||||
.eq(CarInfo::getCarNumber, carInfo.getCarNumber())
|
||||
.ne(CarInfo::getId, carInfo.getId());
|
||||
int count = carInfoMapper.selectCount(queryWrapper);
|
||||
if (count > 0) {
|
||||
throw new OpenAlertException(MessageUtil.get("carNumberExistErr"));
|
||||
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
|
||||
QueryWrapper<CarInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(CarInfo::getProjectSn, carInfo.getProjectSn())
|
||||
.eq(CarInfo::getCarNumber, carInfo.getCarNumber())
|
||||
.ne(CarInfo::getId, carInfo.getId())
|
||||
.eq(CarInfo::getCarModuleType, 1);
|
||||
int count = carInfoMapper.selectCount(queryWrapper);
|
||||
if (count > 0) {
|
||||
throw new OpenAlertException(MessageUtil.get("carNumberExistErr"));
|
||||
}
|
||||
}
|
||||
CarInfo old = carInfoMapper.selectById(carInfo.getId());
|
||||
carInfoMapper.updateById(carInfo);
|
||||
|
||||
@ -10,10 +10,23 @@ import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
/**
|
||||
* 处理https的图片
|
||||
* 处理https/http的图片
|
||||
*/
|
||||
@Slf4j
|
||||
public class X509TrustManagerUtil implements X509TrustManager {
|
||||
/**
|
||||
* 从网络的url图片保存在本地,包含http和https的图片下载
|
||||
*/
|
||||
public static void downLoadFromUrl(String urlStr, String fileName,
|
||||
String savePath) throws Exception {
|
||||
URL url = new URL(urlStr);
|
||||
if (url.openConnection() instanceof HttpsURLConnection) {
|
||||
downLoadFromUrlHttps(urlStr, fileName, savePath);
|
||||
} else {
|
||||
downLoadFromUrlHttp(urlStr, fileName, savePath);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 从网络的url图片保存在本地
|
||||
*
|
||||
@ -52,24 +65,29 @@ public class X509TrustManagerUtil implements X509TrustManager {
|
||||
conn.setSSLSocketFactory(ssf);
|
||||
conn.connect();
|
||||
|
||||
|
||||
// 得到输入流
|
||||
InputStream inputStream = conn.getInputStream();
|
||||
byte[] getData = readInputStream(inputStream);
|
||||
// 文件保存位置
|
||||
File saveDir = new File(savePath);
|
||||
if (!saveDir.exists()) {
|
||||
saveDir.mkdirs();
|
||||
}
|
||||
//输出流
|
||||
File file = new File(saveDir + File.separator + fileName);
|
||||
FileOutputStream fos = new FileOutputStream(file);
|
||||
fos.write(getData);
|
||||
if (fos != null) {
|
||||
fos.close();
|
||||
}
|
||||
if (inputStream != null) {
|
||||
inputStream.close();
|
||||
FileOutputStream fos = null;
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = conn.getInputStream();
|
||||
byte[] getData = readInputStream(inputStream);
|
||||
// 文件保存位置
|
||||
File saveDir = new File(savePath);
|
||||
if (!saveDir.exists()) {
|
||||
saveDir.mkdirs();
|
||||
}
|
||||
//输出流
|
||||
File file = new File(saveDir + File.separator + fileName);
|
||||
fos = new FileOutputStream(file);
|
||||
fos.write(getData);
|
||||
|
||||
} finally {
|
||||
if (fos != null) {
|
||||
fos.close();
|
||||
}
|
||||
if (inputStream != null) {
|
||||
inputStream.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,21 +151,16 @@ public class X509TrustManagerUtil implements X509TrustManager {
|
||||
return bos.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
* 校验https网址是否安全
|
||||
*
|
||||
* @author solexit06
|
||||
*
|
||||
*/
|
||||
public class TrustAnyHostnameVerifier implements HostnameVerifier {
|
||||
public boolean verify(String hostname, SSLSession session) {
|
||||
// 直接返回true:默认所有https请求都是安全的
|
||||
return true;
|
||||
public static void main(String[] args) {
|
||||
String name = "C:/Users/solexit06/Desktop/test/";
|
||||
String urls = "https://116.205.128.251:6113/pic?7db681653a5do-5el*31-25976b8-98c2cabbf**b11===sp**812=9t0470280244=7l0*4010=6ob*521e-7pi114o=2dcb2=15a&AccessKeyId=FOZAuZC0Dc84QjvL&Expires=1709893202&Signature=lJnNS138ZVoPwOar6T4QROyg590=";
|
||||
try {
|
||||
downLoadFromUrlHttps(urls, "1.png", name);
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 里面的方法都是空的,当方法为空是默认为所有的链接都为安全,也就是所有的链接都能够访问到 当然这样有一定的安全风险,可以根据实际需要写入内容
|
||||
*/
|
||||
@ -165,13 +178,16 @@ public class X509TrustManagerUtil implements X509TrustManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String name = "C:/Users/solexit06/Desktop/test/";
|
||||
String urls = "https://116.205.128.251:6113/pic?7db681653a5do-5el*31-25976b8-98c2cabbf**b11===sp**812=9t0470280244=7l0*4010=6ob*521e-7pi114o=2dcb2=15a&AccessKeyId=FOZAuZC0Dc84QjvL&Expires=1709893202&Signature=lJnNS138ZVoPwOar6T4QROyg590=";
|
||||
try {
|
||||
downLoadFromUrlHttps(urls, "1.png", name);
|
||||
} catch (Exception e) {
|
||||
log.error("error:", e);
|
||||
/***
|
||||
* 校验https网址是否安全
|
||||
*
|
||||
* @author solexit06
|
||||
*
|
||||
*/
|
||||
public class TrustAnyHostnameVerifier implements HostnameVerifier {
|
||||
public boolean verify(String hostname, SSLSession session) {
|
||||
// 直接返回true:默认所有https请求都是安全的
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user