15832144755
2021-11-18 37336922a1df99ac1636e398e12e64dedfba10e5
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
package com.hxzkoa.udp;
 
import java.awt.geom.Point2D;
import java.io.Console;
import java.util.Iterator;
import java.util.List;
 
import com.hxzkoa.json.tb_fence;
import com.hxzkoa.json.tb_map;
import com.hxzkoa.json.tb_person;
import com.hxzkoa.json.tb_realinwarning;
import com.hxzkoa.json.tb_realkaoqing;
import com.hxzkoa.json.tb_system;
import com.hxzkoa.json.tb_tag;
import com.hxzkoa.json.tb_track;
import com.hxzkoa.json.tb_warning;
import com.hxzkoa.json.tb_xunjianbaobiao;
import com.hxzkoa.json.tb_xunjianset;
import com.hxzkoa.util.Config;
import com.hxzkoa.util.HttpUtil;
import com.hxzkoa.util.IsInStartAndEndTime;
import com.hxzkoa.util.IsPtInPoly;
import com.hxzkoa.util.ModifyConfig;
import com.hxzkoa.util.Shi_jian_cha;
 
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
 
public class Dell_display {
    static /*
             * 1.标签实时位置display UWB标签上传的位置报文
             * display,[lenth],[tagid],[baoxu],[timestamp],[layer],[x],[y],[z],
             * [vbat],[state],[sos],[mark]
             */
 
    Music musi;
    static String postUrl = Config.getPostUrl();
    static String url_tag_bw = postUrl + "labelManagement_search.do";
    static String url_warning_bw = postUrl + "warningSummary_search.do";
    static String url_realTimeWarning_bw = postUrl + "realTimeWarning_search.do";
    static String url_person_bw = postUrl + "personManagement_search.do";
    static String url_realAttendance_bw = postUrl + "realAttendance_search.do";
    static String url_sysSetting_bw = postUrl + "sysSetting_bw.do";
    static String url_label_bw_power = postUrl + "label_bw_power.do";
    static String url_fenceList_bw = postUrl + "fenceList_bw.do";
    static String url_xunjiansetList_bw = postUrl + "xunjiansetList_bw.do";
    static String url_warning_bw_add = postUrl + "warning_bw_add.do";
    static String url_realinwarning_bw_add = postUrl + "realinwarning_bw_add.do";
    static String url_realinwarning_bw_remove = postUrl + "realinwarning_bw_remove.do";
    static String url_track_bw_add = postUrl + "track_bw_add.do";
    static String url_realAttendance_bw_add = postUrl + "realAttendance_bw_add.do";
    static String url_xunjianbaobiaoList_bw = postUrl + "xunjianbaobiaoList_bw.do";
    static String url_xunjianbaobiao_bw_add = postUrl + "xunjianbaobiao_bw_add.do";
    static String url_xunjianbaobiao_bw_modify = postUrl + "xunjianbaobiao_bw_modify.do";
    static String url_person_bw_kaoqin = postUrl + "person_bw_kaoqin.do";
    static String url_person_bw_warning = postUrl + "person_bw_warning.do";
    static String url_map_bw_floor = postUrl + "map_bw_floor.do";
    
    public static String gettagid(String rees) {
        String[] dis = rees.split(",");
        // 3[tagid] :标签的ID号,唯一编号
        String tagid1 = dis[2];
        return tagid1;
    }
 
    public static void display(String message) {
        String[] dis = message.split(",");
        // 3[tagid] :标签的ID号,唯一编号
        String tagid = dis[2];
        //System.out.print("dis:"+dis);
        // 4包序(0~255循环)
        String baoxu = dis[3];
        // 5时间戳(这条报文发出的时间)
        String timestamp = dis[4];
        // 6标签所在的层
        String layer = dis[5];
        // 7[x] :标签的X坐标,单位厘米
        String x = dis[6].replace(".", "");
        // 8[y] :标签的Y坐标,单位厘米
        String y = dis[7].replace(".", "");
        // 9[z] :标签的Z坐标,单位厘米
        String z = dis[8];
        // 10[vbat] :标签的电量信息,(0~100)
        String vbat = dis[9];
        // 11[state] :标签的状态,静止为1,运动为0
        String state = dis[10];
        // 12[sos] :标签的SOS按键状态,按下为1,没有按下为0
        String sos = dis[11];
        // 13[mark] :标志位,区别从哪个引擎上传数据,适用于多个项目传入一个平台,默认为0
        String mark = dis[12];
 
        tb_tag tag = new tb_tag();
        tag.setTag_id(tagid);
        tag.setPower(vbat);
        tag.setState(state);
        // 更改标签的状态和电量信息
        // Tag_Dell.set_tagpower(tagid, "100");
        JSONObject tagobject = JSONObject.fromObject(tag);
        HttpUtil.doPost(url_label_bw_power, tagobject.toString(), Config.getCharset());
        //
        JSONObject jsonObject = JSONObject.fromObject(tag);
        JSONObject re_tag_bw = HttpUtil.doPost(url_tag_bw, jsonObject.toString(), Config.getCharset());
        tb_tag re_tag = (tb_tag) JSONObject.toBean(JSONObject.fromObject(re_tag_bw.get("result").toString()),
                tb_tag.class);
        // tb_tag re_tag = null;
        JSONObject re_warning_bw = HttpUtil.doPost(url_warning_bw, jsonObject.toString(), Config.getCharset());
        tb_warning re_warning = (tb_warning) JSONObject
                .toBean(JSONObject.fromObject(re_warning_bw.get("result").toString()), tb_warning.class);
        // 判断标签是否存在
        
        //System.out.print("re_warning"+re_warning);
        tb_warning warning = new tb_warning();
        if (re_tag != null) {
            int powerint = Integer.parseInt(tag.getPower());
            if (powerint <= 5 && re_warning == null) {// 如果标签电量小于5%
                warning.setType("低电量告警");
                warning.setObjectid(tag.getTag_id());
                warning.setStatus("未处理");
                jsonObject = JSONObject.fromObject(warning);
                HttpUtil.doPost(url_warning_bw_add, jsonObject.toString(), Config.getCharset());
            }
        }
        String filePath = Config.getBaowenConfig();
        String debugSwitch = ModifyConfig.readData(filePath,"debugSwitch").toString();//调试页面打开
        if (debugSwitch.contentEquals("1")) { //调试
//          String debugUrl=postUrl+"debugMessage.do";
            String messageJson = GetNowTime.timestamp2()+ " 收:"+message;
            /* Udp_Receive.debugMessage.add(messageJson); */
            
        }
        // 取person
        // person_Dell.alert_sos(tagid,"100");
        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);
        //修改标签的人员的SOS状态
        tb_person person = new tb_person();
        person.setP_tagid(tagid);
        person.setP_power(vbat);
        person.setP_sos(state);
        person.setP_x(x);
        person.setP_y(y);
        person.setP_floor(layer);
        String url_person_bw_SOS = postUrl + "person_bw_power.do";
        JSONObject personObject = JSONObject.fromObject(person);
        HttpUtil.doPost(url_person_bw_SOS, personObject.toString(), Config.getCharset());
        // 通过标签id找到某个人员对象
        if (re_person != null) {
            // 如果sos为1需要触发语音并记录到告警数据库中
            if (sos.equals("1") && re_person.getP_sos().equals("0")) {
                // person.setP_sos("1");// SOS告警未处理
                // new PopTiP(get_Person(tagid).getP_name()+"标签id:"+tagid+" 在
                // "+GetNowTime.now()+"按下SOS! ");//右下角提示弹窗信息
                // new Music("systemFiles/voice/sos.wav").start();// 调用音频文件
                warning.setType("SOS");
                warning.setObjectid(tag.getTag_id());
                warning.setStatus("未处理");
                jsonObject = JSONObject.fromObject(warning);
                HttpUtil.doPost(url_warning_bw_add, jsonObject.toString(), Config.getCharset());
                // Tb_Warnig_Dell.add_tb_warning("SOS", tagid,
                // "未处理",GetNowTime.now());
            }
        }
 
        // 修改人员的电量信息,
        // person_Dell.alert_person_power(tagid,"100");
        
        JSONObject personPowerObject = JSONObject.fromObject(person);
        String url_person_bw_power = postUrl + "person_bw_power.do";
        if (re_person != null) {
            HttpUtil.doPost(url_person_bw_power, personPowerObject.toString(), Config.getCharset());
        }
        // HaveOkPosDo.do_something(tagid, baoxu, disx, disy,floor, disz);
        // 修改标签的XY和楼层信息
        // Tag_Dell.alert_xy_and_floor(tagid, x, y, floor);
        //tag 无xyfloor
        // 修改考勤中人员的xy
        // RealKaoqings.alert_xy(tagid, x, y);
//      String url_kaoqin_bw_XY = postUrl + "kaoqin_bw_XY.do";
//      if (person != null) {
//          HttpUtil.doPost(url_kaoqin_bw_XY, personObject.toString(), Config.getCharset());
//      }
        // 修改人员的x,y和楼层信息
        // person_Dell.alert_person_xyfpo(tagid, x, y, floor, GetNowTime.sss());
        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(layer);
            track.setTagid(tagid);
            track.setX(x);
            track.setY(y);
            track.setZ(z);
            // 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());
        }
 
        // 将位置信息放入轨迹集合,如果不是不显示实时轨迹
        // if (Systems.get_real_track_time() != 0) {
        // Dell_ReallPoint.insertpoid(tagid, x, y, floor);
        // }
 
        JSONObject re_fenceList_bw = HttpUtil.doPost(url_fenceList_bw, "", "utf-8");
        JSONArray jsonarray = JSONArray.fromObject(re_fenceList_bw.get("result").toString());
        @SuppressWarnings("unchecked")
        List<tb_fence> tb_fenceList = (List<tb_fence>)JSONArray.toCollection(jsonarray, tb_fence.class);
//      @SuppressWarnings("unchecked")
//      List<tb_fence> tb_fenceList = (List<tb_fence>) JSONObject.toBean(JSONObject.fromObject(re_fenceList_bw.get("result").toString()), tb_fence.class);
 
        // 如果围栏存在
        if (tb_fenceList.size() != 0) {
            tb_map map = new tb_map();
            String floor = layer;
            map.setFloor(floor);
            jsonObject = JSONObject.fromObject(map);
            JSONObject re_map_bw_floor = HttpUtil.doPost(url_map_bw_floor, jsonObject.toString(), Config.getCharset());
            map = (tb_map) JSONObject.toBean(JSONObject.fromObject(re_map_bw_floor.get("result").toString()),
                    tb_map.class);
            if (map != null) {
                // 地图的偏移量
                String x0 = map.getX0_length();
                String y0 = map.getY0_width();
                Point2D.Double point = new Point2D.Double(Integer.parseInt(x) - Integer.parseInt(x0),
                        Integer.parseInt(y) - Integer.parseInt(y0));
                // PointIsInKaoQing piikq =
                // PointIsInKaoQing.get_PointIsInKaoQing();
                // PointISInWarning point_is_in_warning =
                // PointISInWarning.get_point_is_inwaring();
                jsonObject = JSONObject.fromObject(tag);
                JSONObject re_realAttendance_bw = HttpUtil.doPost(url_realAttendance_bw, jsonObject.toString(),
                        Config.getCharset());
                //System.out.print(re_realAttendance_bw);
                if (re_realAttendance_bw!=null){
                    tb_realkaoqing realkaoqing = (tb_realkaoqing) JSONObject.toBean(
                            JSONObject.fromObject(re_realAttendance_bw.get("result").toString()), tb_realkaoqing.class);
                    // 判断标签是否在考勤区域
                    is_in_kaoqing_fence(tb_fenceList, realkaoqing, person, tagid, GetNowTime.timestamp2(), point);
                }
 
                JSONObject re_realTimeWarning_bw = HttpUtil.doPost(url_realTimeWarning_bw, jsonObject.toString(),
                        Config.getCharset());
                if (re_realTimeWarning_bw!=null){
                    tb_realinwarning realinwarning = (tb_realinwarning) JSONObject.toBean(
                            JSONObject.fromObject(re_realTimeWarning_bw.get("result").toString()), tb_realinwarning.class);
                    // 判断标签是否在告警区域
                    is_in_warning_fence(tb_fenceList, realinwarning, person, tagid, GetNowTime.timestamp2(), point, floor);
                }
                
 
                JSONObject re_xunjiansetList_bw = HttpUtil.doPost(url_xunjiansetList_bw, "", Config.getCharset());
                if(re_xunjiansetList_bw!=null){
                    JSONArray xunjianArray = JSONArray.fromObject(re_xunjiansetList_bw.get("result").toString());
                    @SuppressWarnings("unchecked")
                    List<tb_xunjianset> tb_xunjiansetList = (List<tb_xunjianset>)JSONArray.toCollection(xunjianArray, tb_xunjianset.class);
                    // 判断标签是否再巡检区域
                    tag_is_in_xunjianfence(tb_fenceList, tb_xunjiansetList, person, tagid, GetNowTime.timestamp2(), point,
                            floor);
                }
 
                // point = null;
                // piikq = null;
                // point_is_in_warning = null;
            }
            // else {
            // if (ok) {
            // ShowMessage.zidingyi_24("地图" + floor + "层不存在!");
            // ok = false;
            // }
            // }
        }
        /** 处理轨迹点 */
        // Have_55AA01_do.dell_gui();
    }
 
    public static void is_in_kaoqing_fence(List<tb_fence> tb_fenceList, tb_realkaoqing realkaoqing, tb_person person,
            String tagid, String intime, Point2D.Double point) {
        if (tb_fenceList.size() != 0) {// 如果围栏区域存在则执行
            Iterator<tb_fence> it = tb_fenceList.iterator();
            // int jishu = 0;
            JSONObject jsonObject = new JSONObject();
            while (it.hasNext()) {
                tb_fence fence = it.next();
                String startime = fence.getStart();// 围栏生效开始时间
                String stoptime = fence.getStop();// 围栏生效结束时间
                String name = fence.getName();
                // 只有在生效时间内才判断点在不在区域内
                boolean zai = IsInStartAndEndTime.belongCalendar(intime, startime, stoptime);// 判断是否在围栏生效的时间内
                // 在围栏生效时间内
                if (zai) {
                    boolean ispoly = IsPtInPoly.inPoly(point, fence.getPts());// 判断ID坐标是否在围栏区域内
                    // 如果在考勤区域内
                    if (ispoly) {
                        // 判断在不在实时考勤集合中,如果不在则需要添加一条记录
                        // if(!RealKaoqings.isIn_kaoqing(tagid)) {
                        if (realkaoqing == null) {
                            String bumen = "未绑定";
                            String tag_name = "未绑定";
                            String phone = "未绑定";
                            int x = 0;
                            int y = 0;
                            if (person != null) {
                                tag_name = person.getP_name();
                                bumen = person.getP_department();
                                phone = person.getP_phone();
                                x = Integer.parseInt(person.getP_x());
                                y = Integer.parseInt(person.getP_y());
                            }
                            // 实时考勤集合中添加一个记录
                            // 向实时考勤集合添加一条考勤数据
                            realkaoqing = new tb_realkaoqing();
                            realkaoqing.setArea(name);
                            realkaoqing.setName(tag_name);
                            realkaoqing.setBumen(bumen);
                            realkaoqing.setTagid(tagid);
                            realkaoqing.setBeizhu(phone);
                            jsonObject = JSONObject.fromObject(realkaoqing);
                            HttpUtil.doPost(url_realAttendance_bw_add, jsonObject.toString(), Config.getCharset());
                            // new_real_kao_qing.setX(x);
                            // new_real_kao_qing.setY(y);
                            // RealKaoqings.add_real_kaoqing(name, tag_name,
                            // bumen, tagid, intime, phone, x, y);
                            // 数据库中添加一条记录
                            // jishu++;
                            // suffix.append("(default,'"+name+"','"+tag_name+"','"+bumen+"','"+tagid+"','"+intime+"','"+phone+"'),");
                            // if (jishu == 1) {
                            // StringBuffer sql =new StringBuffer(prefix +
                            // suffix.substring(0, suffix.length() - 1)) ;
                            // // 构建完整sql
                            // DatabaseManagement.insert_fast(sql.toString());
                            // suffix = new StringBuffer(); // 清空上一次添加的数据
                            // jishu = 0;
                            // }
                            // 标签进入考勤区域将实时位置中考勤状态修改为1
                            person.setP_tagid(tagid);
                            person.setP_kaoqing("1");
                            jsonObject = JSONObject.fromObject(person);
                            HttpUtil.doPost(url_person_bw_kaoqin, jsonObject.toString(), Config.getCharset());
                            // person_Dell.alert_kaoqing(tagid, "1");
                        }
                    } else {// 如果不在考勤区域内
                            // 如果在实时考勤集合中存在
                        // TbRealKaoQing
                        // tbkq=RealKaoqings.get_real_kaoqing(tagid,name);
                        if (realkaoqing != null) {
                            String in = realkaoqing.getIntime();
                            String alltime = Shi_jian_cha.getAllTime(in, intime);
                            // suffix2.append("('" + tbkq.getArea() + "','" +
                            // tbkq.getName() + "','" + tbkq.getBumen()
                            // + "','" + tbkq.getTagid() + "','" + in + "','" +
                            // intime + "','" + alltime + "'),");
                            // if (jishu == 1) {
                            // StringBuffer sql = new StringBuffer(prefix +
                            // suffix.substring(0, suffix.length() - 1)); //
                            // 构建完整sql
                            // DatabaseManagement.insert_fast(sql.toString());
                            // System.out.println(sql.toString());
                            // suffix2 = null; // 清空上一次添加的数据
                            // }
                            // 删除实时告警数据中的记录
                            tb_realinwarning realinwarning = new tb_realinwarning();
                            realinwarning.setTagid(tagid);
                            jsonObject = JSONObject.fromObject(realinwarning);
                            HttpUtil.doPost(url_realinwarning_bw_remove, jsonObject.toString(), Config.getCharset());
                            // RealKaoqings.remove_real_kaoqing(tagid);
                            // 标签出考勤区域将实时位置中考勤状态修改为0
                            person.setP_tagid(tagid);
                            person.setP_kaoqing("0");
                            jsonObject = JSONObject.fromObject(person);
                            HttpUtil.doPost(url_person_bw_kaoqin, jsonObject.toString(), Config.getCharset());
                            // person_Dell.alert_kaoqing(tagid, "0");
                            // deletesql = null;
                        }
                    }
                }
            }
        }
    }
 
    public static void is_in_warning_fence(List<tb_fence> tb_fenceList, tb_realinwarning realinwarning,
            tb_person person, String tagid, String intime, Point2D.Double point, String floor) {
        if (person != null) {// 如果标签存在
            if (tb_fenceList.size() != 0) {// 如果围栏区域存在则执行
                Iterator<tb_fence> it = tb_fenceList.iterator();
                JSONObject jsonObject = new JSONObject();
                while (it.hasNext()) {
                    tb_fence fence = it.next();
                    String startime = fence.getStart();// 围栏生效开始时间
                    String stoptime = fence.getStop();// 围栏生效结束时间
                    String area = fence.getName();// 区域名称
                    // 只有在生效时间内才判断点在不在区域内
                    boolean zai = IsInStartAndEndTime.belongCalendar(intime, startime, stoptime);// 判断是否在围栏生效的时间内
                    // 在围栏生效时间内
                    if (zai) {
                        boolean ispoly = IsPtInPoly.inPoly(point, fence.getPts());// 判断ID坐标是否在围栏区域内
                        // 如果在告警区域内
                        if (ispoly) {
                            // 判断在不在实时告警集合中,如果不在则需要添加一条记录
                            if (realinwarning == null) {
                                String bumen = person.getP_department();
                                if(bumen==null){
                                    bumen = "系统默认";
                                }
                                String name = person.getP_name();
                                if(name==null){
                                    name = "未绑定";
                                }
                                String alltime = "";
                                String outtime = "";
                                String phone = person.getP_phone();
                                tb_realinwarning new_real_warning = new tb_realinwarning();
                                new_real_warning.setArea(area);
                                new_real_warning.setTagid(tagid);
                                new_real_warning.setIntime(intime);
                                new_real_warning.setBumen(bumen);
                                new_real_warning.setName(name);
                                // 实时告警集合中添加一个记录
                                jsonObject = JSONObject.fromObject(new_real_warning);
                                HttpUtil.doPost(url_realinwarning_bw_add, jsonObject.toString(), Config.getCharset());
                                // RealWarnings.set_real_warning(new_real_warning);
                                // 数据库中添加一条记录
                                // String sql = "INSERT tb_historyinwarning (" +
                                // "id," + "area," + "name," + "bumen,"
                                // + "tagid," + "intime," + "outtime," +
                                // "alltime) VALUES " + "(default,'" + area
                                // + "','" + name + "','" + bumen + "','" +
                                // tagid + "','" + intime + "','"
                                // + outtime + "','" + alltime + "')";
                                // if (DatabaseManagement.update(sql) != 0) {
                                // InsertData.sosInsertTbWarning(tagid, area,
                                // "未处理", intime);
                                // String sql2 = "INSERT tb_realinwarning (" +
                                // "id," + "area," + "name," + "bumen,"
                                // + "tagid," + "intime) VALUES " + "(default,'"
                                // + area + "','" + name + "','"
                                // + bumen + "','" + tagid + "','" + intime +
                                // "')";
                                // DatabaseManagement.update(sql2);
                                // }
                                // pop = new PopTiP(name + "-" + tagid + "进入" +
                                // area + "! " + intime);// 右下角提示弹窗信息
                                musi = new Music("systemFiles/voice/warning.wav");// 调用音频文件
                                musi.start();
                                // 数据转发
                                // Warnig.in_warning(tagid, area, "RGN_IN",
                                // floor);
                                // 标签进入告警区域将实时位置中告警状态修改为1
                                person.setP_tagid(tagid);
                                person.setP_sos("1");
                                jsonObject = JSONObject.fromObject(person);
                                HttpUtil.doPost(url_person_bw_warning, jsonObject.toString(), Config.getCharset());
                                // person_Dell.alert_isin_fence(tagid, "1");
                                // new_real_warning = null;
                            }
 
                        } else {// 如果不在告警区域内
                                // 如果在实时告警集合中存在
                            // TbRealInWarning tbwn =
                            // RealWarnings.get_real_warning(tagid, area);
                            if (realinwarning != null) {
 
                                String in = realinwarning.getIntime();
                                String alltime = Shi_jian_cha.getAllTime(in, intime);
 
                                String sql = "INSERT tb_historyinwarning (" + "id," + "area," + "name," + "bumen,"
                                        + "tagid," + "intime," + "outtime," + "alltime) VALUES " + "(default,'"
                                        + realinwarning.getArea() + "','" + realinwarning.getName() + "','"
                                        + realinwarning.getBumen() + "','" + realinwarning.getTagid() + "','" + in
                                        + "','" + intime + "','" + alltime + "')";
                                // DatabaseManagement.update(sql);
                                // deleteRealkq = new StringBuffer("Delete from
                                // tb_realinwarning where tagid='" + tagid
                                // + "'and area='" + area + "'");
                                // DatabaseManagement.update(deleteRealkq.toString());//
                                // 删除实时告警数据中的记录
                                realinwarning.setTagid(tagid);
                                jsonObject = JSONObject.fromObject(realinwarning);
                                HttpUtil.doPost(url_realinwarning_bw_remove, jsonObject.toString(),
                                        Config.getCharset());
                                // RealWarnings.remove_real_warning(tbwn);
                                // // 标签出告警区域将实时位置中告警状态修改为0
                                person.setP_tagid(tagid);
                                person.setP_sos("0");
                                jsonObject = JSONObject.fromObject(person);
                                HttpUtil.doPost(url_person_bw_warning, jsonObject.toString(), Config.getCharset());
                                // person_Dell.alert_isin_fence(tagid, "0");
                                // 数据转发
                                // Warnig.in_warning(tagid, area, "RGN_OUT",
                                // floor);
                                // deleteRealkq = null;
                            }
                        }
                    }
                }
            }
        }
    }
 
    /** 标签是否在巡检区域内 */
    @SuppressWarnings("unused")
    public static void tag_is_in_xunjianfence(List<tb_fence> tb_fenceList, List<tb_xunjianset> tb_xunjiansetList,
            tb_person person, String tagid, String intime, Point2D.Double point, String floor) {
        // 如果巡检区域存在
        if (tb_fenceList.size() != 0) {
            JSONObject jsonObject = new JSONObject();
            // 遍历围栏对象
            /** 获取所有巡检区域电子围栏 */
            tb_xunjianset xunjianset = null;
            for (int i = 0; i < tb_fenceList.size(); i++) {
                String type = tb_fenceList.get(i).getType();
                if (type.equals("巡检区域")) {
                    // 围栏生效开始时间
                    String startime = tb_fenceList.get(i).getStart();
 
                    // 围栏生效结束时间
                    String stoptime = tb_fenceList.get(i).getStop();
 
                    // 是否在围栏生效时间内
                    boolean timeisok = IsInStartAndEndTime.belongCalendar(intime, startime, stoptime);
 
                    // 如果是在围栏生效时间内则执行
                    if (timeisok) {
                        // 区域名称
                        String area = tb_fenceList.get(i).getName();
                        //生成巡检报表对象
                        tb_xunjianbaobiao xunjianbaobiao = new tb_xunjianbaobiao();
                        
                        // 判断标签坐标是否在生效的围栏区域内如果在则执行
                        if (IsPtInPoly.inPoly(point, tb_fenceList.get(i).getPts())) {
 
                            // 通过区域名称找到该巡检区域对象
                            // Tb_xunjianset xjs =
                            // Dell_xunjianset.get_xjst(area);
 
                            // 该巡检区域指定的巡检人员
                            for (int j = 0; j < tb_xunjiansetList.size(); j++) {
                                tb_xunjianset tb_xunjianset = tb_xunjiansetList.get(j);
                                if (area.equals(tb_xunjianset.getQuyu())) {
                                    xunjianset = tb_xunjianset;
                                }
                            }
                            String tagid1 = xunjianset.getTagid();
 
                            // 如果该标签id等于巡检区域指定的标签ID或者巡检区域没有指定巡检标签ID则继续执行
                            if (tagid1.equals("所有标签") || tagid1.equals(tagid)) {
 
                                // 如果标签没有在巡检记录中存在
                                for (int j = 0; j < tb_xunjiansetList.size(); j++) {
                                    tb_xunjianset tb_xunjianset = tb_xunjiansetList.get(j);
                                    if (tagid1.equals(tb_xunjianset.getTagid())) {
                                        xunjianset = tb_xunjianset;
                                    }
                                }
                                if (xunjianset == null) {
                                    String name = person.getP_name();
                                    xunjianbaobiao.setName(name);
                                    xunjianbaobiao.setTagid(tagid1);
                                    xunjianbaobiao.setQuyu(area);
                                    xunjianbaobiao.setBianhao(xunjianset.getXunshu());
                                    // 插入一条巡检记录
                                    jsonObject = JSONObject.fromObject(xunjianbaobiao);
                                    HttpUtil.doPost(url_xunjianbaobiao_bw_add, jsonObject.toString(), Config.getCharset());
                                    // Dell_xunjianbaobiao.insert(name, tagid,
                                    // area,
                                    //xjs.getXunshu());
                                }
                            
                            }
                            // 如果不在生效的区域内
                        } else {
                            // 如果在巡检记录中有记录说明出了巡检区域
                            for (int j = 0; j < tb_xunjiansetList.size(); j++) {
                                tb_xunjianset tb_xunjianset = tb_xunjiansetList.get(j);
                                if (area.equals(tb_xunjianset.getQuyu())) {
                                    xunjianset = tb_xunjianset;
                                }
                            }
                            if (xunjianset != null) {
                                String tagid1 = xunjianset.getTagid();
                                xunjianbaobiao.setQuyu(area);
                                xunjianbaobiao.setTagid(tagid);
                                jsonObject = JSONObject.fromObject(xunjianbaobiao);
                                JSONObject re_xunjianbaobiaoList_bw = HttpUtil.doPost(url_xunjianbaobiaoList_bw,jsonObject.toString(), Config.getCharset());
                                if (re_xunjianbaobiaoList_bw!=null){
                                    tb_xunjianbaobiao re_xunjianbaobiao = (tb_xunjianbaobiao) JSONObject.toBean(JSONObject.fromObject(re_xunjianbaobiaoList_bw.get("result").toString()),
                                            tb_xunjianbaobiao.class);
                                    if (re_xunjianbaobiao!=null){
                                        // 生成一条巡检记录
                                        String baobiaointime=re_xunjianbaobiao.getIntime();
                                        String outtime=GetNowTime.now();
                                        String alltime=String.valueOf(TiemDell.getTimeDelta(outtime, baobiaointime));
                                        int cha=TiemDell.getTimeDelta(outtime, baobiaointime);
                                        int nedstoptime=Integer.parseInt(xunjianset.getNeedstoptime());
                                        //要求巡检的时间段
                                        String needintime=xunjianset.getStartime();
                                        //是否在要求巡检的时间段巡检
                                        boolean inyaoqiushijian=true;           
                                        //有要求巡检时间段
                                        //判断现在时间和要求的最晚巡检时间的差,如果现在的时间大于要求的巡检时间                           
                                        int cha1=Shi_jian_cha_sss.get_time_cha_HMS(GetNowTime.HH_MM_SS(), needintime);
                                        String succ="0";
                                        if(cha>nedstoptime) {
                                            succ="1";
                                        }   
                                        
                                        if(inyaoqiushijian && succ.equals("1")) {
                                            succ="2";
                                        }
                                        String name = person.getP_name();
                                        xunjianbaobiao.setName(name);
                                        xunjianbaobiao.setTagid(tagid1);
                                        xunjianbaobiao.setQuyu(type);
                                        xunjianbaobiao.setBianhao(re_xunjianbaobiao.getBianhao());
                                        xunjianbaobiao.setSucc(succ);
                                        xunjianbaobiao.setOuttime(outtime);
                                        xunjianbaobiao.setAlltime(alltime);
                                        jsonObject = JSONObject.fromObject(xunjianset);
                                        HttpUtil.doPost(url_xunjianbaobiao_bw_modify, jsonObject.toString(), Config.getCharset());
                                    }   
                                }   
                                // Dell_xunjianbaobiao.alert(tagid, area);
                            }
                        }
                    }
                }
            }
        }
    }
}