3.7
fxl
2023-03-07 632a18ee7c83441a6036b90577424d2daad8d19c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
package com.hxzkoa.udp;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
import org.springframework.beans.factory.annotation.Autowired;
 
import com.hxzkoa.json.tb_gps;
import com.hxzkoa.json.tb_person;
import com.hxzkoa.json.tb_system;
import com.hxzkoa.json.tb_tag;
import com.hxzkoa.json.tb_track;
import com.hxzkoa.util.Config;
import com.hxzkoa.util.HttpUtil;
import com.hxzkoa.util.IsInStartAndEndTime;
import com.hxzkoa.util.YuanDian;
 
import net.sf.json.JSONObject;
 
/**处理UDP上来的GNGGA格式数据
 * 数据格式 $GNGGA,101045.40,3413.41072,N,10853.60405,E,2,12,1.65,423.9,M,-27.8,M,1.4,0654*48,1002,45
 * */
public class Dell_GNGGA {
 
    
    static String postUrl = Config.getPostUrl();
    static String url_person_bw = postUrl + "personManagement_search.do";
    static String url_sysSetting_bw = postUrl + "sysSetting_bw.do";
    static String url_track_bw_add = postUrl + "track_bw_add.do";
    static String url_tag_time_bw = postUrl + "tag_time_bw.do";
    
    public static String gettagid(String rees) {
        String[] gpgga=rees.replace("\\n", "").split(",");
        String tagid2=gpgga[15];//设备id  
        return tagid2;
    }
    
    /**解析GPGGA数据*/
    public static void dell_gps(String message) {
        
        String[] gpgga=message.replace("\\n", "").split(",");
        
        String gps_utc_time=gpgga[1];//字段1:UTC 时间,hhmmss.sss,时分秒格式
        String gps_weidu=gpgga[2];//字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
        String gps_NS=gpgga[3];//字段3:纬度N(北纬)或S(南纬)
        String gps_jingdu=gpgga[4];//字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)
        String gps_EW=gpgga[5];//字段5:经度E(东经)或W(西经)
        String gps_state=gpgga[6];//字段6:GPS状态,0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算
        String gps_num=gpgga[7];//字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)
        String gps_hdop=gpgga[8];//字段8:HDOP水平精度因子(0.5 - 99.9)
        String gps_haiba_gao=gpgga[9];//字段9:海拔高度(-9999.9 - 99999.9)
        String gps_gao_danwei=gpgga[10];//字段10:高度单位M表示米
        String gps_tuoqiu=gpgga[11];//字段11:地球椭球面相对大地水准面的高度
        String gps_chafen_time=gpgga[12];//字段11:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
        String gps_chafen_id=gpgga[13];//字段12:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)
        String gps_jiaoyan=gpgga[14];//字段13:校验值
        String tagid=gpgga[15];//设备id   
        String gps_power=gpgga[16];//电量 
        
        String str = IsInStartAndEndTime.DataTostr();
        
        tb_tag tag0 = new tb_tag();
        tag0.setTag_id(tagid);
        tag0.setAddtime(str);
        
        String longitude=gps_weidu;
        String dimension=gps_jingdu;
        int[] realxy = null;
        if(gps_weidu.length()>3) {
            
            //System.out.print(longitude);
        double aaa = Double.parseDouble(longitude);
        double bbb = Double.parseDouble(dimension);
        
        tb_system system = new YuanDian().yuandian();
 
        String xx = system.getOrigin_weidu();
        String yy = system.getOrigin_jingdu();
        String jj = system.getOrigin_jiaodu();
        
        double xzb = Double.parseDouble(xx);
        double yzb = Double.parseDouble(yy);
        double jia = Double.parseDouble(jj);
        
        
        //调用将经纬度转为直角坐标系中xy坐标方法
            realxy = new GnssToxy().run_gps2xy(tagid,aaa,bbb,xzb,yzb,jia);
        }
        
        tb_tag tag = new tb_tag();
        tag.setTag_id(tagid);
        tag.setPower(gps_power);
        
        tb_person person = new tb_person();
        person.setP_tagid(tagid);
        person.setP_x(String.valueOf(realxy[0]));
        person.setP_y(String.valueOf(realxy[1]));
        person.setP_floor("0");
        
        JSONObject jsonObject = JSONObject.fromObject(tag);
        
        JSONObject personObject = JSONObject.fromObject(person);
        
        // 取person
        JSONObject re_person_bw = HttpUtil.doPost(url_person_bw, jsonObject.toString(), Config.getCharset());
        tb_person re_person = (tb_person) JSONObject.toBean(JSONObject.fromObject(re_person_bw.get("result").toString()),
                tb_person.class);
                
        JSONObject jsonObject2 = JSONObject.fromObject(tag0);
        
        // 修改tag时间
        HttpUtil.doPost(url_tag_time_bw,jsonObject2.toString(),Config.getCharset());
        
        // 修改人员的x,y和楼层信息
        String url_person_bw_XYF = postUrl + "person_bw_XYF.do";
        if (re_person != null) {
            HttpUtil.doPost(url_person_bw_XYF, personObject.toString(), Config.getCharset());
        }
        
        //取tag
                jsonObject = JSONObject.fromObject(tag);
                JSONObject re_sysSetting_bw = HttpUtil.doPost(url_sysSetting_bw, jsonObject.toString(), Config.getCharset());
                tb_system system = (tb_system) JSONObject
                        .toBean(JSONObject.fromObject(re_sysSetting_bw.get("result").toString()), tb_system.class);
        
        // 将位置信息存入历史轨迹数据库
        if (system.getGuiji_sava().equals("1")) {
            tb_track track = new tb_track();
            track.setLayer("0");
            track.setTagid(tagid);
            track.setX(String.valueOf(realxy[0]));
            track.setY(String.valueOf(realxy[1]));
            track.setZ("0");
            // PutPosInHistoryDataBase.putInHistory(tagid,
            // String.valueOf(x),String.valueOf(y), tagheight,
            // floor,GetNowTime.timestamp2());
            jsonObject = JSONObject.fromObject(track);
            HttpUtil.doPost(url_track_bw_add, jsonObject.toString(), Config.getCharset());
        }
 
        //入库
//      Dell_gps.add_or_alert_gps(gps_utc_time, 
//              gps_weidu, 
//              gps_NS, 
//              gsp_jingdu, 
//              gps_EW, 
//              gps_state, 
//              gps_num, 
//              gps_hdop, 
//              gps_haiba_gao, 
//              gps_tuoqiu, 
//              gps_chafen_time, 
//              gps_chafen_id, 
//              gps_jiaoyan, 
//              tagid);
        tb_gps gps = new tb_gps();
        gps.setGps_utc_time(gps_utc_time);
        gps.setGps_weidu(gps_weidu);
        gps.setGps_NS(gps_NS);
        gps.setGsp_jingdu(gps_jingdu);
        gps.setGps_EW(gps_EW);
        gps.setGps_state(gps_state);
        gps.setGps_num(gps_num);
        gps.setGps_hdop(gps_hdop);
        gps.setGps_haiba_gao(gps_haiba_gao);
        gps.setGps_gao_danwei(gps_gao_danwei);
        gps.setGps_tuoqiu(gps_tuoqiu);
        gps.setGps_chafen_time(gps_chafen_time);
        gps.setGps_chafen_id(gps_chafen_id);
        gps.setGps_jiaoyan(gps_jiaoyan);
        gps.setTagid(tagid);
        gps.setGps_power(gps_power);
        //存库
        String postUrl = Config.getPostUrl()+"gpsRecord_add.do";
        JSONObject gpsObject = JSONObject.fromObject(gps);
        HttpUtil.doPost(postUrl, gpsObject.toString(), "UTF-8");
        //存tb_gps_track
        postUrl = Config.getPostUrl()+"gpsTrack_add.do";
        gpsObject = JSONObject.fromObject(gps);
        HttpUtil.doPost(postUrl, gpsObject.toString(), "UTF-8");
        
    }
}