| | |
| | | serverHandler.animalHeatService.save(body); |
| | | } |
| | | } else if (CSType.equals("HK")) { |
| | | //报文内容保存 |
| | | String ChannelName = "";//设备编码 |
| | | Message message = new Message(); |
| | | message.setEnumber(ChannelName); |
| | | message.setContent(body); |
| | | message.setTime(df.format(day)); |
| | | serverHandler.messageService.save(message); |
| | | |
| | | List<String> outData = new ArrayList<>(); |
| | | |
| | | switch (content.substring(0, 2)) { |
| | | case "BJ": |
| | | //报警信息 |
| | | String devId = content.substring(12, 24); |
| | | List<Map<String, Object>> list = serverHandler.equipmentService.selectInfos(devId); |
| | | Alarm alarm = new Alarm(); |
| | | alarm.setWaringType("紧急求救"); |
| | | alarm.setAlarmType("一键报警"); |
| | | alarm.setGalarmPeople("报警主机"); |
| | | alarm.setAlarmTime(df.format(day)); |
| | | alarm.setPlace((String) list.get(0).get("streeName"));//事发地址 |
| | | alarm.setDeviceNumber((String) list.get(0).get("deviceNumber"));//设备编号 |
| | | alarm.setDistrict((String) list.get(0).get("district"));//县区 |
| | | alarm.setProvince((String) list.get(0).get("province"));//市 |
| | | alarm.setCity((String) list.get(0).get("city")); |
| | | alarm.setJd((String) list.get(0).get("jd"));//经度 |
| | | alarm.setWd((String) list.get(0).get("wd"));//纬度 |
| | | alarm.setCid(String.valueOf(1));//警情代码 |
| | | alarm.setJtype("0"); |
| | | |
| | | setAlarmData(alarm,list); |
| | | |
| | | outData.add("BJOK"); |
| | | |
| | | //报文内容保存 |
| | | String ChannelName = "";//设备编码 |
| | | Message message = new Message(); |
| | | message.setEnumber(ChannelName); |
| | | message.setContent(body); |
| | | message.setTime(df.format(day)); |
| | | serverHandler.messageService.save(message); |
| | | |
| | | break; |
| | | |
| | | case "XT": |
| | | //心跳信息 |
| | | String devIds = content.substring(12, 24); |
| | | Date d = new Date(); |
| | | SimpleDateFormat sbf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | String format = sbf.format(d); |
| | | serverHandler.equipmentService.updateChannel(format, devIds); |
| | | outData.add("XTOK"); |
| | | break; |
| | | |
| | | case "JS": |
| | | //校时信息 |
| | | Date sj = new Date(); |
| | | SimpleDateFormat js = new SimpleDateFormat("yyyyMMddHHmmss"); |
| | | outData.add("JSOK" + js.format(sj) ); |
| | | break; |
| | | |
| | | case "ZT": |
| | | //状态信息 |
| | | outData.add("ZTOK"); |
| | | break; |
| | | } |
| | | |
| | | for (int i = 0; i < outData.size(); i++) { |
| | | channelHandlerContext.writeAndFlush(Unpooled.copiedBuffer(outData.get(i), CharsetUtil.UTF_8)); |
| | | } |
| | | |
| | | |
| | | } else { |
| | | String ChannelName = content.substring(10, 22);//设备编码 |
| | | String sub = content.substring(23, 27); |
| | |
| | | } |
| | | |
| | | |
| | | //警情信息录入并派发 |
| | | public void setAlarmData(Alarm alarm,List<Map<String, Object>> list){ |
| | | if (alarm.getWaringType().equals("紧急求救")) { |
| | | |
| | | //修改设备状态 |
| | | serverHandler.equipmentService.updateExstate("一键报警", null, (String) list.get(0).get("deviceNumber")); |
| | | |
| | | //警情分发测试代码 |
| | | //查询所有闲置的接警员 |
| | | List<User> policeList = serverHandler.alarmService.queryPolice(); |
| | | List<User> online_police = new ArrayList<>(); |
| | | List<User> zx_police = new ArrayList<>(); |
| | | for (int i = 0; i < policeList.size(); i++) { |
| | | //System.out.println(policeList.get(i).get("real_name")); |
| | | if (null != policeList.get(i).getOnline_status()) { |
| | | if (policeList.get(i).getOnline_status().equals("1")) { |
| | | zx_police.add(policeList.get(i)); |
| | | if (null != policeList.get(i).getWork_status()) { |
| | | if (policeList.get(i).getWork_status().equals("0")) { |
| | | online_police.add(policeList.get(i)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //如果无在线闲置人员 |
| | | if (online_police.size() == 0) { |
| | | |
| | | //判断是否有在线人员 |
| | | if (zx_police.size() == 0) { |
| | | //无在线人员,选取所有接警员 |
| | | online_police = policeList; |
| | | } else { |
| | | //有在线人员 |
| | | online_police = zx_police; |
| | | } |
| | | |
| | | } |
| | | |
| | | List policeIdArr = new ArrayList(); |
| | | |
| | | //将闲置状态的人员id存入数组 |
| | | for (int i = 0; i < online_police.size(); i++) { |
| | | policeIdArr.add(online_police.get(i).getId()); |
| | | } |
| | | |
| | | //通过id计算接警员最后一次接警时间,倒序返回闲置最久的人员,派发任务 |
| | | List<AlarmVO> police = serverHandler.alarmService.queryPoliceTime(policeIdArr); |
| | | |
| | | if (police.size() != 0) { |
| | | alarm.setAlarmId(police.get(0).getAlarmId().toString()); |
| | | alarm.setAlarmPeople(police.get(0).getAlarmPeople().toString()); |
| | | alarm.setPhoneNumber(police.get(0).getPhoneNumber().toString()); |
| | | Date date = new Date(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | alarm.setJjTime(dateFormat.format(date)); |
| | | |
| | | serverHandler.alarmService.updatePoliceStatus(police.get(0).getAlarmId().toString(), "1"); |
| | | } else { |
| | | alarm.setAlarmId(online_police.get(0).getId().toString()); |
| | | alarm.setAlarmPeople(online_police.get(0).getName().toString()); |
| | | alarm.setPhoneNumber(online_police.get(0).getPhone().toString()); |
| | | Date date = new Date(); |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | alarm.setJjTime(dateFormat.format(date)); |
| | | |
| | | serverHandler.alarmService.updatePoliceStatus(online_police.get(0).getId().toString(), "1"); |
| | | } |
| | | } |
| | | |
| | | |
| | | serverHandler.alarmService.s(alarm); |
| | | |
| | | if (alarm.getWaringType().equals("紧急求救")) { |
| | | OperationVO operation = new OperationVO(); |
| | | operation.setSnumber(alarm.getAlarmId()); |
| | | operation.setSname(alarm.getAlarmPeople()); |
| | | operation.setJid(alarm.getId().toString()); |
| | | operation.setZc("接警"); |
| | | operation.setZctime(alarm.getJjTime()); |
| | | serverHandler.operationService.save(operation); |
| | | |
| | | //通过websocket给前端接警员发送信息 |
| | | serverHandler.pushMsgService.pushMsg(alarm.getAlarmId(), alarm.getId().toString()); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |