package com.objecteye.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.objecteye.config.RabbitmqConfig; import com.objecteye.entity.*; import com.objecteye.pojo.PendantParams; import com.objecteye.pojo.PlatePlateNumParams; import com.objecteye.pojo.RabbitMQInfo; import com.objecteye.pojo.RabbitMQVehicle; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import java.io.File; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; @Component public class RabbitMQVehicleTools { @Value("${picture.snapshotPath}") private String snapshotPath; private String snapshotPathNew = "/snapshot/"; @Autowired private RedisTemplate redisTemplate; @Autowired private VehicleDetailsUtils vehicleDetailsUtils; @Autowired private MongoTemplate mongoTemplate; @Autowired private RabbitTemplate rabbitTemplate; @Autowired private FaceUtils faceUtils; @Value("${picture.snapshotPath}") private String path2; @Value("${snapshotPrefix}") private String snapshotPrefix; public SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private String nullStatus = " "; public List encapsulationRabbitVehicle(String msg) { List rabbitMQVehicles = new ArrayList<>(); UploadVehicleResult uploadVehicleResult = JSON.parseObject(msg, UploadVehicleResult.class); if (null != uploadVehicleResult) { long captureTime = uploadVehicleResult.getCaptureTime(); String picurl = uploadVehicleResult.getImageUrl(); String latitude = uploadVehicleResult.getLatitude(); String longitude = uploadVehicleResult.getLongitude(); String retrieveKey = null; String url = null; VpInfoParam[] info = uploadVehicleResult.getInfo(); int length = info.length; for (int i = 0; i < length; i++) { String snapshoturl = ""; VpInfoParam vpInfoParam = info[i]; VehicleInfoParam vehicleInfoParam = vpInfoParam.getVehicleInfoParam(); RabbitMQVehicle rabbitMqVehicle = null; if (null != vehicleInfoParam) { String s = JSON.toJSONString(vehicleInfoParam); JSONObject jsonObject = JSONObject.parseObject(s); rabbitMqVehicle = sdkToOnlyVehicle(jsonObject); rabbitMqVehicle.setPicurl(picurl); if (picurl != null) { int[] vehicle_detect_syRectParam = rabbitMqVehicle.getVehicle_detect_syRectParam(); if (vehicle_detect_syRectParam != null && vehicle_detect_syRectParam.length == 4) { //将快照图保存到本地,并获取到url for (int j = 0; j < 3; j++) { if (snapshoturl != "") { break; } snapshoturl = vehicleDetailsUtils.urlCutToImagePath(i, picurl, snapshotPath, vehicle_detect_syRectParam[1], vehicle_detect_syRectParam[2], vehicle_detect_syRectParam[3], vehicle_detect_syRectParam[0]); } rabbitMqVehicle.setSnapshoturl(snapshoturl); rabbitMqVehicle.setLongitude(longitude); rabbitMqVehicle.setLatitude(latitude); rabbitMqVehicle.setPictime(captureTime); } } } // 人像部分 FaceInfoParam faceInfoParam = vpInfoParam.getFaceInfoParam(); if (faceInfoParam != null && rabbitMqVehicle != null) { float[] fea = faceInfoParam.getFea(); String mattingData = faceInfoParam.getMattingData(); retrieveKey = faceInfoParam.getRetrieveKey(); String name = retrieveKey + ".jpg"; String path = path2 + name; url = snapshotPrefix + name; rabbitMqVehicle.setPersonid(retrieveKey); rabbitMqVehicle.setPersonUrl(url); GlobalUtil.generateImage(mattingData, path); PersonMsg personMsg = new PersonMsg(null, snapshoturl, captureTime, null, null, null, url, retrieveKey, fea); PersonMsg save = mongoTemplate.save(personMsg); String s = JSON.toJSONString(save); rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_TOPICS_INFORM, "inform.person", s); } rabbitMQVehicles.add(rabbitMqVehicle); } return rabbitMQVehicles; } return null; } public List sdkToRabbitVehicle(JSONObject jsonObject) { List rabbitMQVehicles = new ArrayList<>(); try { Integer count = jsonObject.getInteger("count"); if (count >= 1) { boolean infoIsExit = jsonObject.containsKey("info"); if (infoIsExit) { long captureTime = jsonObject.containsKey("captureTime") ? jsonObject.getLong("captureTime") : System.currentTimeMillis(); String longitude = jsonObject.containsKey("longitude") ? jsonObject.getString("longitude") : null; String latitude = jsonObject.containsKey("latitude") ? jsonObject.getString("latitude") : null; String picurl = jsonObject.containsKey("imageUrl") ? jsonObject.getString("imageUrl") : null; JSONArray infoArr = jsonObject.getJSONArray("info"); for (int i = 0; i < infoArr.size(); i++) { //获取到单辆车的信息 JSONObject infoObj = infoArr.getJSONObject(i); //封装建模 RabbitMQVehicle rabbitMQVehicle = sdkToOnlyVehicle(infoObj); rabbitMQVehicle.setPicurl(picurl); //增加一个字段snapshoturl 用户存储快照图的url //获取到快照图 if (picurl != null) { int[] vehicle_detect_syRectParam = rabbitMQVehicle.getVehicle_detect_syRectParam(); if (vehicle_detect_syRectParam != null && vehicle_detect_syRectParam.length == 4) { //将快照图保存到本地,并获取到url String snapshoturl = vehicleDetailsUtils.urlCutToImagePath(i, picurl, snapshotPath, vehicle_detect_syRectParam[1], vehicle_detect_syRectParam[2], vehicle_detect_syRectParam[3], vehicle_detect_syRectParam[0]); rabbitMQVehicle.setSnapshoturl(snapshoturl); } } rabbitMQVehicle.setLongitude(longitude); rabbitMQVehicle.setLatitude(latitude); rabbitMQVehicle.setPictime(captureTime); rabbitMQVehicles.add(rabbitMQVehicle); } } } return rabbitMQVehicles; } catch (Exception e) { e.printStackTrace(); System.out.println("不是规则的JSON格式"); return null; } } public RabbitMQInfo rabbitMQToRabbitInfo(RabbitMQVehicle rabbitMQVehicle) { RabbitMQInfo rabbitMQInfo = new RabbitMQInfo(); //封装数据信息 //增加车头的检测坐标值 int[] vehicle_detect_syRectParam1 = rabbitMQVehicle.getVehicle_detect_syRectParam(); if (vehicle_detect_syRectParam1 != null && vehicle_detect_syRectParam1.length == 4 && null != rabbitMQVehicle.getPicurl()) { //获取抓拍图 String snapshotBase64 = VehicleDetailsUtils.picToSnapshot(rabbitMQVehicle.getPicurl(), vehicle_detect_syRectParam1[1], vehicle_detect_syRectParam1[2], vehicle_detect_syRectParam1[3], vehicle_detect_syRectParam1[0]); rabbitMQInfo.setSnapshot(snapshotBase64); } // id; //车辆id rabbitMQInfo.setId(rabbitMQVehicle.getId()); // longitude; //经度 rabbitMQInfo.setLongitude(rabbitMQVehicle.getLongitude()); // latitude; //纬度 rabbitMQInfo.setLatitude(rabbitMQVehicle.getLatitude()); // picurl; //图片的路径 rabbitMQInfo.setPicurl(rabbitMQVehicle.getPicurl()); // recordid; //车辆档案id rabbitMQInfo.setRecordid(rabbitMQVehicle.getRecordid()); // pictime; //抓拍时间 rabbitMQInfo.setPictime(sdf.format(rabbitMQVehicle.getPictime())); // flag; //是否报警 int flag = rabbitMQVehicle.getFlag(); if (flag == 0) { rabbitMQInfo.setFlag("无报警"); } else { rabbitMQInfo.setFlag("已报警"); } // tag; //是否确认 int tag = rabbitMQVehicle.getTag(); if (tag == 0) { rabbitMQInfo.setTag("未确认"); } else { rabbitMQInfo.setTag("已确认"); } // personid; //人像id rabbitMQInfo.setPersonid(rabbitMQVehicle.getPersonid()); // vehicleplatetype; //车牌类型 int vehicleplatetype = rabbitMQVehicle.getVehicleplatetype(); String vehiclePlateTypeName = RelationMappingUtil.getVehiclePlateType(vehicleplatetype); rabbitMQInfo.setVehicleplatetype(vehiclePlateTypeName); // vehicle_plate_numScore; //号牌可信度 double vehicle_plate_numScore = rabbitMQVehicle.getVehicle_plate_numScore(); BigDecimal bg = new BigDecimal(vehicle_plate_numScore).setScale(2, RoundingMode.UP); float vehiclePlateNumScore = (float) bg.doubleValue(); rabbitMQInfo.setVehicle_plate_numScore(vehiclePlateNumScore); // vehicle_color_index; //车辆颜色; int vehicle_color_index = rabbitMQVehicle.getVehicle_color_index(); String vehicleColor = RelationMappingUtil.getVehicleColor(vehicle_color_index); rabbitMQInfo.setVehicle_color_index(vehicleColor); // vehicle_special_type; //特殊品类车类型 int vehicle_special_type = rabbitMQVehicle.getVehicle_special_type(); String vehicleSpecialType = RelationMappingUtil.getVehicleSpecialType(vehicle_special_type); rabbitMQInfo.setVehicle_special_type(vehicleSpecialType); // vehicle_illegal_driver_person_status; int vehicle_illegal_driver_person_status = rabbitMQVehicle.getVehicle_illegal_driver_person_status(); String vehicleIllegalStatus3 = nullStatus; if (vehicle_illegal_driver_person_status == 1003) { vehicleIllegalStatus3 = "无人"; } else if (vehicle_illegal_driver_person_status == 1004) { vehicleIllegalStatus3 = "有人"; } else { vehicleIllegalStatus3 = "不确定有无人"; } rabbitMQInfo.setVehicle_illegal_driver_person_status(vehicleIllegalStatus3); if ("有人".equals(vehicleIllegalStatus3)) { // vehicle_illegal_driver_smoke_status; int vehicle_illegal_driver_smoke_status = rabbitMQVehicle.getVehicle_illegal_driver_smoke_status(); String vehicleIllegalStatus = nullStatus; if (vehicle_illegal_driver_smoke_status == 1000) { vehicleIllegalStatus = "吸烟"; } else if (vehicle_illegal_driver_smoke_status == 1001) { vehicleIllegalStatus = "未吸烟"; } else { vehicleIllegalStatus = "不确定吸烟"; } rabbitMQInfo.setVehicle_illegal_driver_smoke_status(vehicleIllegalStatus); // vehicle_illegal_driver_belt_status; int vehicle_illegal_driver_belt_status = rabbitMQVehicle.getVehicle_illegal_driver_belt_status(); String vehicleIllegalStatus1 = nullStatus; if (vehicle_illegal_driver_belt_status == 1000) { vehicleIllegalStatus1 = "未系安全带"; } else if (vehicle_illegal_driver_belt_status == 1001) { vehicleIllegalStatus1 = "系安全带"; } else { vehicleIllegalStatus1 = "不确定系安全带"; } rabbitMQInfo.setVehicle_illegal_driver_belt_status(vehicleIllegalStatus1); // vehicle_illegal_driver_phone_status; int vehicle_illegal_driver_phone_status = rabbitMQVehicle.getVehicle_illegal_driver_phone_status(); String vehicleIllegalStatus2 = nullStatus; if (vehicle_illegal_driver_phone_status == 1000) { vehicleIllegalStatus2 = "打电话"; } else if (vehicle_illegal_driver_phone_status == 1001) { vehicleIllegalStatus2 = "未打电话"; } else { vehicleIllegalStatus2 = "不确定打电话"; } rabbitMQInfo.setVehicle_illegal_driver_phone_status(vehicleIllegalStatus2); } else { rabbitMQInfo.setVehicle_illegal_driver_smoke_status(nullStatus); rabbitMQInfo.setVehicle_illegal_driver_belt_status(nullStatus); rabbitMQInfo.setVehicle_illegal_driver_phone_status(nullStatus); } // vehicle_illegal_copilot_person_status; int vehicle_illegal_copilot_person_status = rabbitMQVehicle.getVehicle_illegal_copilot_person_status(); String vehicleIllegalStatus7 = nullStatus; if (vehicle_illegal_copilot_person_status == 1003) { vehicleIllegalStatus7 = "无人"; } else if (vehicle_illegal_copilot_person_status == 1004) { vehicleIllegalStatus7 = "有人"; } else { vehicleIllegalStatus7 = "不确定有无人"; } rabbitMQInfo.setVehicle_illegal_copilot_person_status(vehicleIllegalStatus7); if ("有人".equals(vehicleIllegalStatus7)) { // vehicle_illegal_copilot_smoke_status; int vehicle_illegal_copilot_smoke_status = rabbitMQVehicle.getVehicle_illegal_copilot_smoke_status(); System.out.println("副驾驶吸烟" + vehicle_illegal_copilot_smoke_status); String vehicleIllegalStatus4 = nullStatus; if (vehicle_illegal_copilot_smoke_status == 1000) { vehicleIllegalStatus4 = "吸烟"; } else if (vehicle_illegal_copilot_smoke_status == 1001) { vehicleIllegalStatus4 = "未吸烟"; } else { vehicleIllegalStatus4 = "不确定吸烟"; } rabbitMQInfo.setVehicle_illegal_copilot_smoke_status(vehicleIllegalStatus4); // vehicle_illegal_copilot_belt_status; int vehicle_illegal_copilot_belt_status = rabbitMQVehicle.getVehicle_illegal_copilot_belt_status(); String vehicleIllegalStatus5 = nullStatus; if (vehicle_illegal_copilot_belt_status == 1000) { vehicleIllegalStatus5 = "未系安全带"; } else if (vehicle_illegal_copilot_belt_status == 1001) { vehicleIllegalStatus5 = "系安全带"; } else { vehicleIllegalStatus5 = "不确定系安全带"; } rabbitMQInfo.setVehicle_illegal_copilot_belt_status(vehicleIllegalStatus5); // vehicle_illegal_copilot_phone_status; int vehicle_illegal_copilot_phone_status = rabbitMQVehicle.getVehicle_illegal_copilot_phone_status(); String vehicleIllegalStatus6 = nullStatus; if (vehicle_illegal_copilot_phone_status == 1000) { vehicleIllegalStatus6 = "打电话"; } else if (vehicle_illegal_copilot_phone_status == 1001) { vehicleIllegalStatus6 = "未打电话"; } else { vehicleIllegalStatus6 = "不确定打电话"; } rabbitMQInfo.setVehicle_illegal_copilot_phone_status(vehicleIllegalStatus6); } else { rabbitMQInfo.setVehicle_illegal_copilot_smoke_status(nullStatus); rabbitMQInfo.setVehicle_illegal_copilot_belt_status(nullStatus); rabbitMQInfo.setVehicle_illegal_copilot_phone_status(nullStatus); } // vehicle_recg_type; //车辆类型 rabbitMQInfo.setVehicle_recg_type(rabbitMQVehicle.getVehicle_recg_type()); // vehicle_recg_freight_ton; //吨数 rabbitMQInfo.setVehicle_recg_freight_ton(rabbitMQVehicle.getVehicle_recg_freight_ton()); // vehicle_recg_name_score; //品牌可信度 double vehicle_recg_name_score = rabbitMQVehicle.getVehicle_recg_name_score(); BigDecimal bigDecimal = new BigDecimal(vehicle_recg_name_score).setScale(2, RoundingMode.UP); float vehicleRecgNameScore = (float) bigDecimal.doubleValue(); rabbitMQInfo.setVehicle_recg_name_score(vehicleRecgNameScore); // vehicle_plate_hphm; //车辆号牌 rabbitMQInfo.setVehicle_plate_hphm(rabbitMQVehicle.getVehicle_plate_hphm()); // vehicle_pendant_detect_njbnumber; //年检标数量 rabbitMQInfo.setVehicle_pendant_detect_njbnumber(rabbitMQVehicle.getVehicle_pendant_detect_njbnumber()); // vehicle_pendant_detect_gjexis; //是否存在挂件 0表示不存在 1表示存在 Integer vehicle_pendant_detect_gjexis = rabbitMQVehicle.getVehicle_pendant_detect_gjexis(); if (vehicle_pendant_detect_gjexis == null || vehicle_pendant_detect_gjexis == 0) { rabbitMQInfo.setVehicle_pendant_detect_gjexis("无"); } else { rabbitMQInfo.setVehicle_pendant_detect_gjexis("有"); } PendantParams[] vehicle_pendant_params = rabbitMQVehicle.getVehicle_pendant_Params(); String vehiclePendantZJH = "无"; //纸巾盒 String vehiclePendantZJT = "无"; //转经筒 String vehiclePendantDriverZYB = "无"; //主驾驶遮阳板 String vehiclePendantCopilotZYB = "无"; //副驾驶遮阳板 if (vehicle_pendant_params != null && vehicle_pendant_params.length > 0) { for (PendantParams pp : vehicle_pendant_params) { int index = pp.getIndex(); switch (index) { case 3: //遮阳板 /* ints[0] = height; ints[1] = left; ints[2] = top; ints[3] = width; * */ //获取遮阳板距离左边的距离 int[] vehicle_detect_syRectParam = rabbitMQVehicle.getVehicle_detect_syRectParam(); int width = vehicle_detect_syRectParam[3]; int left = vehicle_detect_syRectParam[1]; int ctCenter = left + (width / 2); int zybLeft = pp.getSyrectparam()[1]; if (zybLeft > ctCenter) { //为主驾驶 // vehicle_pendant_driver_zyb; vehiclePendantDriverZYB = "有"; } else { // vehicle_pendant_copilot_zyb; vehiclePendantCopilotZYB = "有"; } break; case 6: //纸巾盒 // vehicle_pendant_detect_zjh; vehiclePendantZJH = "有"; break; case 7: //转经筒 // vehicle_pendant_detect_zjt; vehiclePendantZJT = "有"; break; } } } rabbitMQInfo.setVehicle_pendant_detect_zjh(vehiclePendantZJH); rabbitMQInfo.setVehicle_pendant_detect_zjt(vehiclePendantZJT); rabbitMQInfo.setVehicle_pendant_driver_zyb(vehiclePendantDriverZYB); rabbitMQInfo.setVehicle_pendant_copilot_zyb(vehiclePendantCopilotZYB); // vehicle_plate_status; double vehicle_plate_numScore1 = rabbitMQVehicle.getVehicle_plate_numScore(); String vehiclePlateStatus = null; if (vehicle_plate_numScore1 == 0) { //无号牌 vehiclePlateStatus = "无号牌"; } else { PlatePlateNumParams[] vehicle_plate_plateNumParams = rabbitMQVehicle.getVehicle_plate_plateNumParams(); String chara = null; for (int i = 0; i < 7; i++) { PlatePlateNumParams ppnp = vehicle_plate_plateNumParams[i]; double maxprob = ppnp.getMaxprob(); if (maxprob == 0) { chara = "污损号牌"; } } if (chara == null) { //有号牌 vehiclePlateStatus = "完整号牌"; } else { //污损号牌 vehiclePlateStatus = "污损号牌"; } } rabbitMQInfo.setVehicle_plate_status(vehiclePlateStatus); // clxh; StringBuffer sb = new StringBuffer(); String vehicle_recg_brand = rabbitMQVehicle.getVehicle_recg_brand(); sb.append(vehicle_recg_brand); String vehicle_recg_subbrand = rabbitMQVehicle.getVehicle_recg_subbrand(); if (vehicle_recg_subbrand != null) { sb.append("-").append(vehicle_recg_subbrand); } String vehicle_recg_issue_year = rabbitMQVehicle.getVehicle_recg_issue_year(); if (vehicle_recg_issue_year != null) { sb.append("-").append(vehicle_recg_issue_year); } rabbitMQInfo.setClxh(sb.toString()); return rabbitMQInfo; } /*public List sdkToRabbitPeople(JSONObject jsonObject) { List rabbitMQPeoples = new ArrayList<>(); try { JSONArray peopleVehicleArr = jsonObject.containsKey("info") ? jsonObject.getJSONArray("info") : null; for (int i = 0; i < peopleVehicleArr.size(); i++) { JSONObject peopleVehicleSingle = peopleVehicleArr.getJSONObject(i); FaceInfoParam faceInfoParam = faceUtils.rabbitToFaceInfo(peopleVehicleSingle, nullStatus); rabbitMQPeoples.add(faceInfoParam); } return rabbitMQPeoples; } catch (Exception e) { System.out.println("不是规则的JSON格式"); return null; } }*/ public RabbitMQVehicle sdkToOnlyVehicle(JSONObject vehicleSingleInfo) { int count = 0;//在档案中的位置 String longitude = nullStatus; String latitude = nullStatus; String picurl = nullStatus; //图片的路径 int recordid = 0; //车辆档案id Long pictime = 0l; //抓拍时间 int flag = 0; //是否报警 int tag = 0; //是否确认 String personid = nullStatus; //人像id int[] vehicle_plate_rect = null; //车牌位置 float vehicle_plate_detectScore = 0; //车牌检测分数 int vehicle_plate_type = 0; //车牌类型 float vehicle_plate_numScore = 0; float vehicle_color_score = 0; int vehicle_color_index = 0; float vehicle_detect_score = 0; int[] vehicle_detect_syrectparam = null; float vehicle_win_score = 0; int[] vehicle_win_syrectparam = null; int vehicle_special_type = 0; float vehicle_special_score = 0; float vehicle_illegal_driver_smoke_confidence = 0; int vehicle_illegal_driver_smoke_status = 0; float vehicle_illegal_driver_belt_confidence = 0; int vehicle_illegal_driver_belt_status = 0; float vehicle_illegal_driver_phone_confidence = 0; int vehicle_illegal_driver_phone_status = 0; float vehicle_illegal_driver_person_confidence = 0; int vehicle_illegal_driver_person_status = 0; float vehicle_illegal_copilot_smoke_confidence = 0; int vehicle_illegal_copilot_smoke_status = 0; float vehicle_illegal_copilot_belt_confidence = 0; int vehicle_illegal_copilot_belt_status = 0; float vehicle_illegal_copilot_phone_confidence = 0; int vehicle_illegal_copilot_phone_status = 0; float vehicle_illegal_copilot_person_confidence = 0; int vehicle_illegal_copilot_person_status = 0; String vehicle_recg_issue_year = null; String vehicle_recg_brand = null; String vehicle_recg_type = nullStatus; String vehicle_recg_subbrand = null; String vehicle_recg_freight_ton = nullStatus; float vehicle_recg_name_score = 0; int vehicle_pendant_count = 0; double[] vehicle_fea_feature = null; PendantParams[] vehicle_pendant_Params = null; PlatePlateNumParams[] vehicle_plate_plateNumParams = null; String vehicle_plate_hphm = null; Integer vehicle_pendant_detect_njbnumber = 0; //年检标数量 Integer vehicle_pendant_detect_gjexis = 0; //是否存在挂件 0表示不存在 1表示存在 Integer vehicle_pendant_detect_zybexis = 0; //是否存在遮阳板 0表示不存在 1表示存在 //额外添加的snapshoturl String snapshoturl = " "; RabbitMQVehicle rabbitMQVehicle = null; if (vehicleSingleInfo != null) { //自动生成子目录文件夹 try { File file = new File(snapshotPath); if (!file.exists()) { file.mkdirs(); } } catch (Exception e) { RuntimeException exe = new RuntimeException("文件夹创建失败"); e.printStackTrace(); } JSONObject colorRes = vehicleSingleInfo.containsKey("vehicle_color_res") ? vehicleSingleInfo.getJSONObject("vehicle_color_res") : null; if (colorRes != null) { vehicle_color_index = colorRes.getInteger("index"); vehicle_color_score = colorRes.getFloat("score"); } JSONObject detectRes = vehicleSingleInfo.containsKey("vehicle_detect_res") ? vehicleSingleInfo.getJSONObject("vehicle_detect_res") : null; if (detectRes != null) { vehicle_detect_score = detectRes.getFloat("score"); vehicle_detect_syrectparam = new int[4]; JSONObject syRectParam = detectRes.getJSONObject("syRectParam"); Integer height = syRectParam.getInteger("height"); Integer left = syRectParam.getInteger("left"); Integer top = syRectParam.getInteger("top"); Integer width = syRectParam.getInteger("width"); vehicle_detect_syrectparam[0] = height; vehicle_detect_syrectparam[1] = left; vehicle_detect_syrectparam[2] = top; vehicle_detect_syrectparam[3] = width; } JSONObject vehicle_fea_res = vehicleSingleInfo.containsKey("vehicle_fea_res") ? vehicleSingleInfo.getJSONObject("vehicle_fea_res") : null; if (vehicle_fea_res != null) { JSONArray feature = vehicle_fea_res.getJSONArray("feature"); int size = feature.size(); vehicle_fea_feature = new double[size]; for (int i = 0; i < size; i++) { vehicle_fea_feature[i] = feature.getDouble(i); } } JSONObject vehicle_illegal = vehicleSingleInfo.containsKey("vehicle_illegal_det_res") ? vehicleSingleInfo.getJSONObject("vehicle_illegal_det_res") : null; if (vehicle_illegal != null) { JSONObject driver = vehicle_illegal.containsKey("driver") ? vehicle_illegal.getJSONObject("driver") : null; if (driver != null) { JSONObject person = driver.containsKey("person") ? driver.getJSONObject("person") : null; if (person != null) { vehicle_illegal_driver_person_confidence = person.getFloat("confidence"); vehicle_illegal_driver_person_status = person.getInteger("status"); } if (vehicle_illegal_copilot_person_status == 1004) { JSONObject belt = driver.containsKey("belt") ? driver.getJSONObject("belt") : null; if (belt != null) { vehicle_illegal_driver_belt_confidence = belt.getFloat("confidence"); vehicle_illegal_driver_belt_status = belt.getInteger("status"); } JSONObject phone = driver.containsKey("phone") ? driver.getJSONObject("phone") : null; if (phone != null) { vehicle_illegal_driver_phone_confidence = phone.getFloat("confidence"); vehicle_illegal_driver_phone_status = phone.getInteger("status"); } JSONObject smoke = driver.containsKey("smoke") ? driver.getJSONObject("smoke") : null; if (smoke != null) { vehicle_illegal_driver_smoke_confidence = smoke.getFloat("confidence"); vehicle_illegal_driver_smoke_status = smoke.getInteger("status"); } } } JSONObject copilot = vehicle_illegal.containsKey("copilot") ? vehicle_illegal.getJSONObject("copilot") : null; if (copilot != null) { JSONObject person = copilot.containsKey("person") ? copilot.getJSONObject("person") : null; if (person != null) { vehicle_illegal_copilot_person_confidence = person.getFloat("confidence"); vehicle_illegal_copilot_person_status = person.getInteger("status"); } if (vehicle_illegal_copilot_person_status == 1004) { JSONObject belt = copilot.containsKey("belt") ? copilot.getJSONObject("belt") : null; if (belt != null) { vehicle_illegal_copilot_belt_confidence = belt.getFloat("confidence"); vehicle_illegal_copilot_belt_status = belt.getInteger("status"); } JSONObject phone = copilot.containsKey("phone") ? copilot.getJSONObject("phone") : null; if (phone != null) { vehicle_illegal_copilot_phone_confidence = phone.getFloat("confidence"); vehicle_illegal_copilot_phone_status = phone.getInteger("status"); } JSONObject smoke = copilot.containsKey("smoke") ? copilot.getJSONObject("smoke") : null; if (smoke != null) { vehicle_illegal_copilot_smoke_confidence = smoke.getFloat("confidence"); vehicle_illegal_copilot_smoke_status = smoke.getInteger("status"); } } } } //挂件 JSONObject vehicle_pendant_det_res = vehicleSingleInfo.containsKey("vehicle_pendant_det_res") ? vehicleSingleInfo.getJSONObject("vehicle_pendant_det_res") : null; if (vehicle_pendant_det_res != null) { vehicle_pendant_count = vehicle_pendant_det_res.getInteger("count"); JSONArray vehiclePendantDetectInfoParams = vehicle_pendant_det_res.getJSONArray("vehiclePendantDetectInfoParams"); int size = vehiclePendantDetectInfoParams.size(); if (vehiclePendantDetectInfoParams != null && size > 0) { for (int i = 0; i < vehiclePendantDetectInfoParams.size(); i++) { //获取到其中的一个车辆属性 JSONObject vehiclePendantOne = vehiclePendantDetectInfoParams.getJSONObject(i); Integer index = vehiclePendantOne.getInteger("index"); switch (index) { case 3: //是否有遮阳板 vehicle_pendant_detect_zybexis = 1; break; case 4: //获取年检标个数 vehicle_pendant_detect_njbnumber++; break; case 5: //是否有挂件 vehicle_pendant_detect_gjexis = 1; break; default: } } vehicle_pendant_Params = new PendantParams[size]; for (int i = 0; i < size; i++) { JSONObject jsonObject = vehiclePendantDetectInfoParams.getJSONObject(i); float confidence = jsonObject.getFloat("confidence"); Integer index = jsonObject.getInteger("index"); int[] ints = new int[4]; JSONObject syRectParam = jsonObject.getJSONObject("syRectParam"); Integer height = syRectParam.getInteger("height"); Integer left = syRectParam.getInteger("left"); Integer top = syRectParam.getInteger("top"); Integer width = syRectParam.getInteger("width"); ints[0] = height; ints[1] = left; ints[2] = top; ints[3] = width; PendantParams pp = new PendantParams(index, ints, confidence); vehicle_pendant_Params[i] = pp; } } } //每位号牌可信度 JSONObject vehicle_plate_det_recg_res = vehicleSingleInfo.containsKey("vehicle_plate_det_recg_res") ? vehicleSingleInfo.getJSONObject("vehicle_plate_det_recg_res") : null; if (vehicle_plate_det_recg_res != null && vehicle_plate_det_recg_res.getFloat("numScore") > 0.8) { vehicle_plate_detectScore = vehicle_plate_det_recg_res.getFloat("detectScore"); vehicle_plate_numScore = vehicle_plate_det_recg_res.getFloat("numScore"); vehicle_plate_type = vehicle_plate_det_recg_res.getInteger("type"); vehicle_plate_rect = new int[4]; JSONObject rect = vehicle_plate_det_recg_res.getJSONObject("rect"); Integer height = rect.getInteger("height"); Integer left = rect.getInteger("left"); Integer top = rect.getInteger("top"); Integer width = rect.getInteger("width"); vehicle_plate_rect[0] = height; vehicle_plate_rect[1] = left; vehicle_plate_rect[2] = top; vehicle_plate_rect[3] = width; JSONArray plateNumParams = vehicle_plate_det_recg_res.getJSONArray("plateNumParams"); int size = plateNumParams.size(); if (size > 0) { StringBuffer sb = new StringBuffer(); vehicle_plate_plateNumParams = new PlatePlateNumParams[size]; for (int i = 0; i < size; i++) { JSONObject jsonObject = plateNumParams.getJSONObject(i); String character = jsonObject.getString("character"); sb.append(character); float maxprob = jsonObject.getFloat("maxprob"); PlatePlateNumParams ppnp = new PlatePlateNumParams(maxprob, character); vehicle_plate_plateNumParams[i] = ppnp; } vehicle_plate_hphm = sb.toString(); } } JSONObject vehicle_recg_res = vehicleSingleInfo.containsKey("vehicle_recg_res") ? vehicleSingleInfo.getJSONObject("vehicle_recg_res") : null; if (vehicle_recg_res != null) { vehicle_recg_freight_ton = vehicle_recg_res.getString("freight_ton"); vehicle_recg_name_score = vehicle_recg_res.getFloat("name_score"); vehicle_recg_brand = vehicle_recg_res.getString("vehicle_brand"); vehicle_recg_issue_year = vehicle_recg_res.getString("vehicle_issue_year"); vehicle_recg_subbrand = vehicle_recg_res.getString("vehicle_subbrand"); vehicle_recg_type = vehicle_recg_res.getString("vehicle_type"); } JSONObject vehicle_special_res = vehicleSingleInfo.containsKey("vehicle_special_res") ? vehicleSingleInfo.getJSONObject("vehicle_special_res") : null; if (vehicle_special_res != null) { vehicle_special_score = vehicle_special_res.getFloat("score"); vehicle_special_type = vehicle_special_res.getInteger("type"); } JSONObject vehicle_win_detect_res = vehicleSingleInfo.containsKey("vehicle_win_detect_res") ? vehicleSingleInfo.getJSONObject("vehicle_win_detect_res") : null; if (vehicle_win_detect_res != null) { vehicle_win_score = vehicle_win_detect_res.getFloat("score"); JSONObject syRectParam = vehicle_win_detect_res.getJSONObject("syRectParam"); vehicle_win_syrectparam = new int[4]; Integer height = syRectParam.getInteger("height"); Integer left = syRectParam.getInteger("left"); Integer top = syRectParam.getInteger("top"); Integer width = syRectParam.getInteger("width"); vehicle_win_syrectparam[0] = height; vehicle_win_syrectparam[1] = left; vehicle_win_syrectparam[2] = top; vehicle_win_syrectparam[3] = width; } //vehicle_pendant_detect_njbnumber; //年检标数量 //vehicle_pendant_detect_gjexis; //是否存在挂件 0表示不存在 1表示存在 //vehicle_pendant_detect_zybexis; //是否存在遮阳板 0表示不存在 1表示存在 rabbitMQVehicle = new RabbitMQVehicle(count, longitude, latitude, picurl, recordid, pictime, flag, tag, personid, vehicle_plate_rect, vehicle_plate_detectScore, vehicle_plate_type, vehicle_plate_numScore, vehicle_color_score, vehicle_color_index, vehicle_detect_score, vehicle_detect_syrectparam, vehicle_win_score, vehicle_win_syrectparam, vehicle_special_type, vehicle_special_score, vehicle_illegal_driver_smoke_confidence, vehicle_illegal_driver_smoke_status, vehicle_illegal_driver_belt_confidence, vehicle_illegal_driver_belt_status, vehicle_illegal_driver_phone_confidence, vehicle_illegal_driver_phone_status, vehicle_illegal_driver_person_confidence, vehicle_illegal_driver_person_status, vehicle_illegal_copilot_smoke_confidence, vehicle_illegal_copilot_smoke_status, vehicle_illegal_copilot_belt_confidence, vehicle_illegal_copilot_belt_status, vehicle_illegal_copilot_phone_confidence, vehicle_illegal_copilot_phone_status, vehicle_illegal_copilot_person_confidence, vehicle_illegal_copilot_person_status, vehicle_recg_issue_year, vehicle_recg_brand, vehicle_recg_type, vehicle_recg_subbrand, vehicle_recg_freight_ton, vehicle_recg_name_score, vehicle_pendant_count, vehicle_fea_feature, vehicle_pendant_Params, vehicle_plate_plateNumParams, vehicle_plate_hphm, vehicle_pendant_detect_njbnumber, vehicle_pendant_detect_gjexis, vehicle_pendant_detect_zybexis, null, snapshoturl); } return rabbitMQVehicle; } }