TrafficProcess.java 8.09 KB
package com.viontech.process;

import io.netty.buffer.ByteBuf;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

public class TrafficProcess extends Process{

    @Override
    public void getData(Map jsonMap, ByteBuf byteBuf) throws Exception {
        if(!jsonMap.get("event_cate").equals("traffic")){
            return;
        }
        Integer event_refid=(Integer) jsonMap.get("event_refid");
        byteBuf.writeInt(event_refid);
        DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date event_dt= (Date) jsonMap.get("event_dt");
        Date eventDateSecond=dateFormat.parse(dateFormat.format(event_dt));
        byteBuf.writeInt((int) eventDateSecond.getTime());
        byteBuf.writeInt((int) event_dt.getTime());
        String plate="";
        String plateColor="";
        Integer plateScore=0;
        Integer laneNumber=0;
        String carType="";
        String carColor="";
        Integer speed=0;
        String direction="";
        String logoType="";
        String locationName="";
        String illegalType="";
        Integer limit_speed=0;
        Integer spark_speed=0;
        Integer red_start_time=0;
        Integer red_end_time=0;
        Integer red_start_second=0;
        Integer red_end_second=0;
        if(jsonMap.get("event_data")!=null){
            Map event_data= (Map) jsonMap.get("event_data");
            if(event_data.get("vehicle")!=null){
                Map vehicle= (Map) event_data.get("vehicle");
                if(vehicle.get("plate")!=null){
                    Map plateMap= (Map) vehicle.get("plate");
                    plate= (String) plateMap.get("text");
                    plateScore= (Integer) plateMap.get("score");
                }
            }
            if(event_data.get("uservehicle")!=null){
                Map userVehicle= (Map) event_data.get("uservehicle");
                plateColor= (String) userVehicle.get("platetype");
                carType= (String) userVehicle.get("vehicletype");
                carColor= (String) userVehicle.get("vehiclecolor");
                logoType= (String) userVehicle.get("logotype");
            }
            if(event_data.get("lane")!=null){
                Map laneMap= (Map) event_data.get("lane");
                if(laneMap.get("number")!=null){
                    laneNumber=(Integer) laneMap.get("number");
                }
            }
            speed=Integer.valueOf(String.valueOf((Double)event_data.get("speed")));
            if(event_data.get("location")!=null){
                Map locationMap= (Map) event_data.get("location");
                if(locationMap.get("drive_direction")!=null){
                    Map directionMap= (Map) locationMap.get("drive_direction");
                    direction= (String) directionMap.get("code");
                }
                locationName= (String) locationMap.get("name");
            }
            if(event_data.get("illegal")!=null){
                Map illegalMap= (Map) event_data.get("illegal");
                if((Integer)illegalMap.get("state")==1){
                    illegalType= (String) illegalMap.get("code");
                    if(illegalMap.get("detail")!=null){
                        Map detailMap= (Map) illegalMap.get("detail");
                        Date red_start_dt= (Date) detailMap.get("start_dt");
                        Date red_end_dt= (Date) detailMap.get("end_dt");
                        Date startDateSecond=dateFormat.parse(dateFormat.format(red_start_dt));
                        Date endDateSecond=dateFormat.parse(dateFormat.format(red_end_dt));
                        red_start_time=(int)red_start_dt.getTime();
                        red_end_time=(int)red_end_dt.getTime();
                        red_start_second=(int)startDateSecond.getTime();
                        red_end_second=(int)endDateSecond.getTime();
                        limit_speed=Integer.valueOf(String.valueOf((Double)event_data.get("limit_speed")));
                        spark_speed=Integer.valueOf(String.valueOf((Double)event_data.get("spark_speed")));
                    }
                }
            }
        }
        //车牌需要转换一下
        convertPlate(plate,byteBuf);
        //车牌类型(颜色)需要转换一下
        convertPlateColor(plateColor,byteBuf);
        byteBuf.writeInt(plateScore);
        byteBuf.writeInt(laneNumber);
        //车辆类型需要转换
        convertCarType(carType,byteBuf);
        if(jsonMap.get("pics")!=null){
            List<Map> pics= (List<Map>) jsonMap.get("pics");
            if(pics.size()<2){
                byteBuf.writeInt(0);
                byteBuf.writeInt(0);
                byteBuf.writeInt(0);
            }else{
                String picbase64= (String) pics.get(1).get("pic_base64");
                byteBuf.writeInt(picbase64.getBytes().length);
                byteBuf.writeInt((Integer) pics.get(1).get("width"));
                byteBuf.writeInt((Integer) pics.get(1).get("hight"));
            }
            String picbase64= (String) pics.get(0).get("pic_base64");
            byteBuf.writeInt(picbase64.getBytes().length);
            byteBuf.writeInt((Integer) pics.get(0).get("width"));
            byteBuf.writeInt((Integer) pics.get(0).get("hight"));
            if(pics.get(0).get("object_rect")!=null){
                Map object_rect= (Map) pics.get(0).get("object_rect");
                byteBuf.writeInt(Integer.valueOf(String.valueOf((Double)object_rect.get("left"))));
                byteBuf.writeInt(Integer.valueOf(String.valueOf((Double)object_rect.get("top"))));
                byteBuf.writeInt(Integer.valueOf(String.valueOf((Double)object_rect.get("right"))));
                byteBuf.writeInt(Integer.valueOf(String.valueOf((Double)object_rect.get("bottom"))));
            }else{
                byteBuf.writeInt(0);
                byteBuf.writeInt(0);
                byteBuf.writeInt(0);
                byteBuf.writeInt(0);
            }
        }else{
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
            byteBuf.writeInt(0);
        }
        //车身颜色需要转换
        convertCarColor(carColor,byteBuf);
        byteBuf.writeInt(speed);
        //行驶方向需要转换
        convertDirection(direction,byteBuf);
        //车商标志需要转换
        convertLogo(logoType,byteBuf);
        //地点名称暂时没有赋值,确认是不是用locationName
        byteBuf.writeBytes(new byte[32]);
        //录像路径不知道怎么赋值
        byteBuf.writeBytes(new byte[128]);
        //第一张全景图路径不知道怎么赋值
        byteBuf.writeBytes(new byte[128]);

        byteBuf.writeInt(0);
        byteBuf.writeInt(0);
        byteBuf.writeInt(0);
        //车型细分暂时未赋值
        byteBuf.writeInt(0);
        //车牌结构暂时未赋值
        byteBuf.writeInt(0);
        //违章类型需要转换
        convertIllegalType(illegalType,byteBuf);
        byteBuf.writeInt(0);
        //第二张图片时间不知道
        byteBuf.writeInt(0);
        byteBuf.writeInt(0);
        byteBuf.writeInt(red_start_second);
        byteBuf.writeInt(red_start_time);
        byteBuf.writeInt(red_end_second);
        byteBuf.writeInt(red_end_time);
        byteBuf.writeInt(limit_speed);
        byteBuf.writeInt(spark_speed);
        //保留字段,char[4]
        byteBuf.writeBytes(new byte[64]);
    }
    public void convertPlate(String plate,ByteBuf byteBuf){

    }
    public void convertPlateColor(String plateColor,ByteBuf byteBuf){

    }
    public void convertCarType(String carType,ByteBuf byteBuf){

    }
    public void convertCarColor(String carColor,ByteBuf byteBuf){

    }
    public void convertDirection(String direction,ByteBuf byteBuf){

    }
    public void convertLogo(String logo,ByteBuf byteBuf){

    }
    public void convertIllegalType(String illegal,ByteBuf byteBuf){

    }
}