|
@@ -0,0 +1,1121 @@
|
|
|
|
+package com.hhwy.qbeqsjy.service;
|
|
|
|
+
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.hhwy.qbeqsjy.common.*;
|
|
|
|
+import com.hhwy.qbeqsjy.dao.CtrlDao;
|
|
|
|
+import com.hhwy.qbeqsjy.kafka.service.AuthService;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.apache.kafka.clients.consumer.ConsumerRecord;
|
|
|
|
+import org.apache.kafka.clients.consumer.ConsumerRecords;
|
|
|
|
+import org.apache.kafka.clients.consumer.KafkaConsumer;
|
|
|
|
+import org.locationtech.jts.geom.Coordinate;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
+import org.springframework.context.ApplicationListener;
|
|
|
|
+import org.springframework.context.event.ContextRefreshedEvent;
|
|
|
|
+import org.springframework.scheduling.annotation.EnableScheduling;
|
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.sql.Timestamp;
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
|
+import java.util.concurrent.Executors;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 布控命中数据处理
|
|
|
|
+ */
|
|
|
|
+@Slf4j
|
|
|
|
+@Service
|
|
|
|
+@EnableScheduling
|
|
|
|
+public class CustomConsumeService {
|
|
|
|
+
|
|
|
|
+ @Value("${address.query.url}")
|
|
|
|
+ private String addressQueryUrl;
|
|
|
|
+ @Value("${centerPoint.lon.tjz}")
|
|
|
|
+ private String centerPointLonTJZ;
|
|
|
|
+ @Value("${centerPoint.lat.tjz}")
|
|
|
|
+ private String centerPointLatTJZ;
|
|
|
|
+ @Value("${radius.tjz}")
|
|
|
|
+ private String radiusTJZ;
|
|
|
|
+ @Value("${res.code.auth}")
|
|
|
|
+ private String resCodeAUTH;
|
|
|
|
+ @Value("${res.code.mhdp}")
|
|
|
|
+ private String resCodeMhdp;
|
|
|
|
+ @Value("${res.code.jnryzs}")
|
|
|
|
+ private String resCodeJnryzs;
|
|
|
|
+ @Value("${res.code.wbsw}")
|
|
|
|
+ private String resCodeWbsw;
|
|
|
|
+ @Value("${res.code.ky}")
|
|
|
|
+ private String resCodeKy;
|
|
|
|
+ @Value("${res.code.dt}")
|
|
|
|
+ private String resCodeDt;
|
|
|
|
+ @Value("${res.code.sjrd}")
|
|
|
|
+ private String resCodeSjrd;
|
|
|
|
+ @Value("${res.code.xlpc}")
|
|
|
|
+ private String resCodeXlpc;
|
|
|
|
+ @Value("${res.code.zdjc}")
|
|
|
|
+ private String resCodeZdjc;
|
|
|
|
+ @Value("${res.code.dzwl}")
|
|
|
|
+ private String resCodeDzwl;
|
|
|
|
+ @Value("${res.code.rlgz}")
|
|
|
|
+ private String resCodeRlgz;
|
|
|
|
+ @Resource
|
|
|
|
+ private CtrlDao ctrlDao;
|
|
|
|
+ private SnowflakeIdGenerator generator = new SnowflakeIdGenerator(1);
|
|
|
|
+ private HttpClient httpClient = new HttpClient();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 增量查询原始预警结果表数据,处理后批量入库,间隔10分钟执行一次
|
|
|
|
+ */
|
|
|
|
+ @Scheduled(cron = "0 */10 * * * ?")
|
|
|
|
+ public void processOriWarningData() {
|
|
|
|
+ // 1.获取原始预警数据查询记录表中的起始查询时间
|
|
|
|
+ Timestamp startQueryTime = ctrlDao.getStartQueryTimeByTableName(Constants.ORI_TABLE_NAME);
|
|
|
|
+ // 2.基于起始查询时间,查询此刻原始预警结果表中最大的创建(入库)时间
|
|
|
|
+ Timestamp newMaxCreateTime = ctrlDao.getNewMaxCreateTimeOri(startQueryTime);
|
|
|
|
+ // 3.查询该时间段内的原始增量预警数据
|
|
|
|
+ if(startQueryTime != null && newMaxCreateTime != null){
|
|
|
|
+ List<Map<String, Object>> warningInfoListOri = ctrlDao.queryWarningInfoByIncOri(startQueryTime, newMaxCreateTime);
|
|
|
|
+ // 4.更新预警数据查询记录表中起始查询时间
|
|
|
|
+ ctrlDao.updateStartQueryTimeByTableName(newMaxCreateTime, Constants.ORI_TABLE_NAME);
|
|
|
|
+
|
|
|
|
+ List<Object[]> warningInfoList = new ArrayList<>();
|
|
|
|
+ int batchSaveNum = 0;
|
|
|
|
+ if(warningInfoListOri != null && !warningInfoListOri.isEmpty()){
|
|
|
|
+ for (Map<String, Object> warningInfoMapOri : warningInfoListOri) {
|
|
|
|
+ JSONObject unictrl = JSON.parseObject("{" + warningInfoMapOri.get("unictrl") + "}");
|
|
|
|
+ JSONObject oriField = JSON.parseObject("{" + warningInfoMapOri.get("orifield") + "}");
|
|
|
|
+ // 解析线索ID(其中包含任务编号,线索类型,线索值,烽火数据资源编码)
|
|
|
|
+ String clueId = unictrl.getString("U_CLUEID");
|
|
|
|
+ String[] clueIdStrArr = clueId.split("_");
|
|
|
|
+ String rwbh = clueIdStrArr[Constants.NUM_1];
|
|
|
|
+ String clueType = clueIdStrArr[Constants.NUM_2];
|
|
|
|
+ String clue = clueIdStrArr[Constants.NUM_3];
|
|
|
|
+ String resourceCode = unictrl.getString("U_RESID");
|
|
|
|
+ // 生成预警信息编号
|
|
|
|
+ String yjxxbh = String.valueOf(generator.nextId());
|
|
|
|
+ // 预警状态默认为0(未读)
|
|
|
|
+ Integer yjzt = 0;
|
|
|
|
+ // 预警类型默认为1(单人预警)
|
|
|
|
+ Integer yjlx = 1;
|
|
|
|
+ Date currentTime = new Date();
|
|
|
|
+ // 根据clueId中的任务编号、线索值、线索类型查询对应的布控任务相关信息(包含任务信息、数据资源信息、区域信息、线索信息)
|
|
|
|
+ List<Map<String, Object>> ctrlTaskInfoList = ctrlDao.queryCtrlTaskInfo(rwbh, clue, clueType);
|
|
|
|
+ if(!ctrlTaskInfoList.isEmpty()){
|
|
|
|
+ Map<String, Object> ctrlTaskInfo = ctrlTaskInfoList.get(0);
|
|
|
|
+ String rwmc = String.valueOf(ctrlTaskInfo.get("rwmc"));
|
|
|
|
+ Integer rwlx = (Integer) ctrlTaskInfo.get("rwlx");
|
|
|
|
+ String rwlxmc = String.valueOf(ctrlTaskInfo.get("rwlxmc"));
|
|
|
|
+ String rwdxlxmc = String.valueOf(ctrlTaskInfo.get("rwdxlxmc"));
|
|
|
|
+ String sqrXm = String.valueOf(ctrlTaskInfo.get("sqr_xm"));
|
|
|
|
+ String sqrSfzh = String.valueOf(ctrlTaskInfo.get("sqr_sfzh"));
|
|
|
|
+ String sqrJh = String.valueOf(ctrlTaskInfo.get("sqr_jh"));
|
|
|
|
+ String sqrDwbm = String.valueOf(ctrlTaskInfo.get("sqr_dwbm"));
|
|
|
|
+ String sqrDwmc = String.valueOf(ctrlTaskInfo.get("sqr_dwmc"));
|
|
|
|
+ Date bkkssj = (Date) ctrlTaskInfo.get("bkkssj");
|
|
|
|
+ Date bkjssj = (Date) ctrlTaskInfo.get("bkjssj");
|
|
|
|
+ String bkqyxx = String.valueOf(ctrlTaskInfo.get("bkqyxx"));
|
|
|
|
+ String yjryXm = String.valueOf(ctrlTaskInfo.get("ryxm"));
|
|
|
|
+ String yjrySfzh = String.valueOf(ctrlTaskInfo.get("zjhm"));
|
|
|
|
+ String yjrySjh = String.valueOf(ctrlTaskInfo.get("sjh"));
|
|
|
|
+ String yjryLb = String.valueOf(ctrlTaskInfo.get("rylb"));
|
|
|
|
+ String yjryBq = String.valueOf(ctrlTaskInfo.get("rybq"));
|
|
|
|
+ String gkjb = String.valueOf(ctrlTaskInfo.get("gkjb"));
|
|
|
|
+ String gkjbmc = String.valueOf(ctrlTaskInfo.get("gkjbmc"));
|
|
|
|
+ String zrjz = String.valueOf(ctrlTaskInfo.get("zrjz"));
|
|
|
|
+ String zrmjid = String.valueOf(ctrlTaskInfo.get("zrmjid"));
|
|
|
|
+ String zrmjxm = String.valueOf(ctrlTaskInfo.get("zrmjxm"));
|
|
|
|
+ String zrmjjh = String.valueOf(ctrlTaskInfo.get("zrmjjh"));
|
|
|
|
+ String zrmjlxfs = String.valueOf(ctrlTaskInfo.get("zrmjlxfs"));
|
|
|
|
+ String zrdwbm = String.valueOf(ctrlTaskInfo.get("zrdwbm"));
|
|
|
|
+ String zrbmbm = String.valueOf(ctrlTaskInfo.get("zrbmbm"));
|
|
|
|
+ // 根据任务编号查询对应的模型配置信息
|
|
|
|
+ List<Map<String, Object>> modelInfoList = ctrlDao.queryCtrlTaskModelInfo(rwbh);
|
|
|
|
+
|
|
|
|
+ if(resCodeAUTH.equals(resourceCode)){ // =========== AUTH认证数据
|
|
|
|
+ // 1. ========================= 过滤基站号、经纬度为空的数据
|
|
|
|
+ String baseStationId = oriField.getString("BASE_STATION_ID");
|
|
|
|
+ String lonBD = oriField.getString("LONGITUDE");
|
|
|
|
+ String latBD = oriField.getString("LATITUDE");
|
|
|
|
+ if(StringUtils.isBlank(baseStationId) || StringUtils.isBlank(lonBD) || StringUtils.isBlank(latBD)){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ // 2. ========================= 调用烽火接口,根据命中点位经纬度(百度坐标系)查询对应的地址信息
|
|
|
|
+ String rspStr = httpClient.sendGetRequst(addressQueryUrl.replace("x", lonBD).replace("y", latBD), null);
|
|
|
|
+ JSONObject rspJSONObj = JSON.parseObject(rspStr);
|
|
|
|
+ // 命中点位地址名称
|
|
|
|
+ String addressName = rspJSONObj.getString("fullAddress");
|
|
|
|
+ // 预警时间
|
|
|
|
+ Long captureTime = Long.valueOf(oriField.getString("CAPTURE_TIME"));
|
|
|
|
+ String captureTimeStr = TimeTool.timeStampToDateString(captureTime);
|
|
|
|
+ Date captureTimeDateObj = new Date(captureTime * 1000);
|
|
|
|
+ // 将烽火的百度坐标系经纬度值转换为84坐标系经纬度值
|
|
|
|
+ double[] latAndLon84 = GpsCoordinateUtils.calBD09toWGS84(Double.valueOf(latBD), Double.valueOf(lonBD));
|
|
|
|
+ String lat84 = String.valueOf(latAndLon84[0]);
|
|
|
|
+ String lon84 = String.valueOf(latAndLon84[1]);
|
|
|
|
+ // 3. ========================= 如果存在布控区域,则过滤不在布控区域范围的数据
|
|
|
|
+ JSONArray areaInfoList = JSON.parseArray(bkqyxx);
|
|
|
|
+ if(areaInfoList != null && !areaInfoList.isEmpty()){
|
|
|
|
+ for (Object obj : areaInfoList) {
|
|
|
|
+ JSONObject ctrlAreaInfo = (JSONObject) obj;
|
|
|
|
+ String areaCode = (String) ctrlAreaInfo.get("qybh");
|
|
|
|
+ String areaName = (String) ctrlAreaInfo.get("qymc");
|
|
|
|
+ Integer geoType = (Integer) ctrlAreaInfo.get("qyjhlx");
|
|
|
|
+ JSONObject locationJSONObj = JSON.parseObject(String.valueOf(ctrlAreaInfo.get("qyfwjwdjhFh")));
|
|
|
|
+ JSONArray locationSet = locationJSONObj.getJSONArray("location");
|
|
|
|
+ // ****** 说明:如果出现多个布控区域范围存在重叠,并且命中点位也恰巧出现在重叠区域的极端情况,目前则只保存命中第一个布控区域时的一份数据,不再继续判断
|
|
|
|
+ if(Constants.NUM_0 == geoType){ // 布控区域是圆形
|
|
|
|
+ JSONObject loc = locationSet.getJSONObject(0);
|
|
|
|
+ String centerLon84 = loc.getString("lon");
|
|
|
|
+ String centerLat84 = loc.getString("lat");
|
|
|
|
+ String radius = loc.getString("radius");
|
|
|
|
+ if(GeoUtils.isPointInCircle(Double.valueOf(lat84), Double.valueOf(lon84), Double.valueOf(centerLat84), Double.valueOf(centerLon84), Double.valueOf(radius)) && captureTimeDateObj.compareTo(bkkssj) >= 0 && captureTimeDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ if(Constants.QYBH_TJS.equals(areaCode)){
|
|
|
|
+ yjxxsm.append("进入本地预警 - ");
|
|
|
|
+ } else {
|
|
|
|
+ yjxxsm.append("进入敏感区域 - ");
|
|
|
|
+ }
|
|
|
|
+ yjxxsm.append(yjryXm);
|
|
|
|
+ yjxxsm.append("于");
|
|
|
|
+ yjxxsm.append(captureTimeStr);
|
|
|
|
+ yjxxsm.append("出现在");
|
|
|
|
+ yjxxsm.append(addressName);
|
|
|
|
+ if(!Constants.QYBH_TJS.equals(areaCode)){
|
|
|
|
+ yjxxsm.append(",命中区域:");
|
|
|
|
+ yjxxsm.append(areaName);
|
|
|
|
+ }
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, yjrySfzh, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, lon84, lat84, currentTime, currentTime, null, null, null, areaName, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ } else { // 布控区域是一般多边形
|
|
|
|
+ List<Coordinate> coordinates = new ArrayList<>();
|
|
|
|
+ for (Object item : locationSet) {
|
|
|
|
+ JSONObject loc = (JSONObject) item;
|
|
|
|
+ String vertexLon84 = loc.getString("lon");
|
|
|
|
+ String vertexLat84 = loc.getString("lat");
|
|
|
|
+ coordinates.add(new Coordinate(Double.valueOf(vertexLon84), Double.valueOf(vertexLat84)));
|
|
|
|
+ }
|
|
|
|
+ if(GeoUtils.isPointInPolygon(coordinates, new Coordinate(Double.valueOf(lon84), Double.valueOf(lat84))) && captureTimeDateObj.compareTo(bkkssj) >= 0 && captureTimeDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ if(Constants.QYBH_TJS.equals(areaCode)){
|
|
|
|
+ yjxxsm.append("进入本地预警 - ");
|
|
|
|
+ } else {
|
|
|
|
+ yjxxsm.append("进入敏感区域 - ");
|
|
|
|
+ }
|
|
|
|
+ yjxxsm.append(yjryXm);
|
|
|
|
+ yjxxsm.append("于");
|
|
|
|
+ yjxxsm.append(captureTimeStr);
|
|
|
|
+ yjxxsm.append("出现在");
|
|
|
|
+ yjxxsm.append(addressName);
|
|
|
|
+ if(!Constants.QYBH_TJS.equals(areaCode)){
|
|
|
|
+ yjxxsm.append(",命中区域:");
|
|
|
|
+ yjxxsm.append(areaName);
|
|
|
|
+ }
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, yjrySfzh, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, lon84, lat84, currentTime, currentTime, null, null, null, areaName, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else { // 如果不存在布控区域,则默认布控区域范围为天津市
|
|
|
|
+ if(captureTimeDateObj.compareTo(bkkssj) >= 0 && captureTimeDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("进入本地预警 - ");
|
|
|
|
+ yjxxsm.append(yjryXm);
|
|
|
|
+ yjxxsm.append("于");
|
|
|
|
+ yjxxsm.append(captureTimeStr);
|
|
|
|
+ yjxxsm.append("出现在");
|
|
|
|
+ yjxxsm.append(addressName);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, yjrySfzh, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, lon84, lat84, currentTime, currentTime, null, null, null, Constants.QYMC_TJS, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if(resCodeKy.equals(resourceCode)){ // =========== 客运数据
|
|
|
|
+ // 票号
|
|
|
|
+ /*String trainTicNo = oriField.getString("TRAIN_TIC_NO");
|
|
|
|
+ String ph = StringUtils.isNotBlank(trainTicNo)? trainTicNo : "暂无";*/
|
|
|
|
+ // 旅客姓名
|
|
|
|
+ String passName = oriField.getString("PASS_NAME");
|
|
|
|
+ String lkXm = StringUtils.isNotBlank(passName)? passName : yjryXm;
|
|
|
|
+ // 旅客身份证号
|
|
|
|
+ String lkSfzh = oriField.getString("PASS_CRED_NUM");
|
|
|
|
+ // 旅客手机
|
|
|
|
+ String passMob = oriField.getString("PASS_MOB");
|
|
|
|
+ String lkSjh = StringUtils.isNotBlank(passMob)? passMob : yjrySjh;
|
|
|
|
+ // 检票时间 ---样例:20200929073509
|
|
|
|
+ String cheticTime = oriField.getString("CHETIC_TIME");
|
|
|
|
+ String jpsj = StringUtils.isNotBlank(cheticTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(cheticTime)) : "暂无";
|
|
|
|
+ // 检票车次号
|
|
|
|
+ String cheticTrainNo = oriField.getString("CHETIC_TRAIN_NO");
|
|
|
|
+ String jpcch = StringUtils.isNotBlank(cheticTrainNo)? cheticTrainNo : "暂无";
|
|
|
|
+ // 座号
|
|
|
|
+ String seatNo = oriField.getString("SEAT_NO");
|
|
|
|
+ String zh = StringUtils.isNotBlank(seatNo)? seatNo : "暂无";
|
|
|
|
+ // 车牌号
|
|
|
|
+ String vehPlateNum = oriField.getString("VEH_PLATE_NUM");
|
|
|
|
+ String cph = StringUtils.isNotBlank(vehPlateNum)? vehPlateNum : "暂无";
|
|
|
|
+ // 始发地站点
|
|
|
|
+ String depAddrStatiName = oriField.getString("DEP_ADDR_STATI_NAME");
|
|
|
|
+ String sfdzdmc = (StringUtils.isNotBlank(depAddrStatiName) && !"0".equals(depAddrStatiName))? depAddrStatiName : "暂无";
|
|
|
|
+ // 始发地行政区划代码
|
|
|
|
+ String sfdxzqhdm = oriField.getString("DEP_ADDR_ADDI_CODE");
|
|
|
|
+ // 目的地站点
|
|
|
|
+ String destStatiName = oriField.getString("DEST_STATI_NAME");
|
|
|
|
+ String mddzdmc = StringUtils.isNotBlank(destStatiName)? destStatiName : "暂无";
|
|
|
|
+ // 目的地行政区划代码
|
|
|
|
+ String mddxzqhdm = oriField.getString("DEST_ADDI_CODE");
|
|
|
|
+ // 订票时间 ---样例:20200929061228
|
|
|
|
+ String booticTime = oriField.getString("BOOTIC_TIME");
|
|
|
|
+ String dpsjStr = StringUtils.isNotBlank(booticTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(booticTime)) : "暂无";
|
|
|
|
+ Date dpsjDateObj = StringUtils.isNotBlank(booticTime)? new Date(TimeTool.dateStringToTimeStamp3(booticTime) * 1000) : null;
|
|
|
|
+ // 发车时间 ---样例:20200929061228
|
|
|
|
+ String depTimeDtime = oriField.getString("DEP_TIME_DTIME");
|
|
|
|
+ String fcsj = StringUtils.isNotBlank(depTimeDtime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(depTimeDtime)) : "暂无";
|
|
|
|
+ /*String captureTimeKy = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));*/
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ if(Constants.MODEL_CODE_BSJJ_KYCC.equals(mxbh)){ // 单人预警-本市进京-客运乘车
|
|
|
|
+ if(StringUtils.isNotBlank(sfdxzqhdm) && StringUtils.isNotBlank(mddxzqhdm) && "12".equals(sfdxzqhdm.substring(0, 2)) && "11".equals(mddxzqhdm.substring(0, 2)) && dpsjDateObj.compareTo(bkkssj) >= 0 && dpsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ // 业务需求:始发地:天津,目的地:北京
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("客运数据 - 旅客姓名:");
|
|
|
|
+ yjxxsm.append(lkXm);
|
|
|
|
+ yjxxsm.append(",旅客身份证号:");
|
|
|
|
+ yjxxsm.append(lkSfzh);
|
|
|
|
+ yjxxsm.append(",旅客手机号:");
|
|
|
|
+ yjxxsm.append(lkSjh);
|
|
|
|
+ yjxxsm.append(",订票时间:");
|
|
|
|
+ yjxxsm.append(dpsjStr);
|
|
|
|
+ yjxxsm.append(",发车时间:");
|
|
|
|
+ yjxxsm.append(fcsj);
|
|
|
|
+ yjxxsm.append(",始发站:");
|
|
|
|
+ yjxxsm.append(sfdzdmc);
|
|
|
|
+ yjxxsm.append(",目的站:");
|
|
|
|
+ yjxxsm.append(mddzdmc);
|
|
|
|
+ yjxxsm.append(",检票时间:");
|
|
|
|
+ yjxxsm.append(jpsj);
|
|
|
|
+ yjxxsm.append(",检票车次号:");
|
|
|
|
+ yjxxsm.append(jpcch);
|
|
|
|
+ yjxxsm.append(",座号:");
|
|
|
|
+ yjxxsm.append(zh);
|
|
|
|
+ yjxxsm.append(",车牌号:");
|
|
|
|
+ yjxxsm.append(cph);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, lkXm, lkSfzh, lkSjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, dpsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, null, yjlx, Constants.YJLX_DRYJ, seatNo, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeMhdp.equals(resourceCode)) { // =========== 民航订票数据
|
|
|
|
+ // 订座记录编号
|
|
|
|
+ /*String ordseatRecoNo = oriField.getString("ORDSEAT_RECO_NO");
|
|
|
|
+ String dzjlbh = StringUtils.isNotBlank(ordseatRecoNo)? ordseatRecoNo : "暂无";*/
|
|
|
|
+ // 旅客中文名
|
|
|
|
+ String passName = oriField.getString("PASS_NAME");
|
|
|
|
+ String lkzwm = StringUtils.isNotBlank(passName)? passName : "暂无";
|
|
|
|
+ // 旅客证件号码
|
|
|
|
+ String credNum = oriField.getString("CRED_NUM");
|
|
|
|
+ String zjhm = StringUtils.isNotBlank(credNum)? credNum : "暂无";
|
|
|
|
+// String lklxdh = oriField.getString("PASS_CTCT_TEL"); // 旅客联系电话
|
|
|
|
+ // 承运航空公司
|
|
|
|
+ String carrOrgaAirlineName = oriField.getString("CARR_ORGA_AIRLINE_NAME");
|
|
|
|
+ String cyhkgs = StringUtils.isNotBlank(carrOrgaAirlineName)? carrOrgaAirlineName : "暂无";
|
|
|
|
+ // 责任航空公司
|
|
|
|
+ /*String respUnitAirlineName = oriField.getString("RESP_UNIT_AIRLINE_NAME");
|
|
|
|
+ String zrhkgs = StringUtils.isNotBlank(respUnitAirlineName)? respUnitAirlineName : "暂无";*/
|
|
|
|
+ // 航班号
|
|
|
|
+ String flinum = oriField.getString("FLINUM");
|
|
|
|
+ String hbh = StringUtils.isNotBlank(flinum)? flinum : "暂无";
|
|
|
|
+ // 起飞机场
|
|
|
|
+ String flyInitNrtAirportName = oriField.getString("FLY_INIT_NRT_AIRPORT_NAME");
|
|
|
|
+ String qfjcmc = StringUtils.isNotBlank(flyInitNrtAirportName)? flyInitNrtAirportName : "暂无";
|
|
|
|
+ // 起飞机场代码
|
|
|
|
+ String qfjcdm = oriField.getString("FLY_INIT_NRT_AIRPORT_CODE");
|
|
|
|
+// String qfzcs = oriField.getString("FLY_INIT_ADDR_CITY_NAME"); // 起飞站城市
|
|
|
|
+ // 到达机场
|
|
|
|
+ String ddjcmc = oriField.getString("ARR_AT_AIR_AIRPORT_NAME");
|
|
|
|
+ // 到达机场代码
|
|
|
|
+ String ddjcdm = oriField.getString("ARR_AT_AIR_AIRPORT_CODE");
|
|
|
|
+// String ddzcs = oriField.getString("ARR_ADDR_CITY_NAME"); // 到达站城市
|
|
|
|
+// String cfrq = oriField.getString("STAOFF_DATE"); // 出发日期
|
|
|
|
+ // 出发时间 ---样例:20200929061228
|
|
|
|
+ String staoffTime = oriField.getString("STAOFF_TIME");
|
|
|
|
+ String cfsj = StringUtils.isNotBlank(staoffTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(staoffTime)) : "暂无";
|
|
|
|
+// String ddrq = oriField.getString("ARR_DATE"); // 到达日期
|
|
|
|
+ // 到达时间
|
|
|
|
+ String arrTime = oriField.getString("ARR_TIME");
|
|
|
|
+ String ddsj = StringUtils.isNotBlank(arrTime)? arrTime : "暂无";
|
|
|
|
+// String kpzt = oriField.getString("ELE_TIC_STAT_NAME"); // 客票状态
|
|
|
|
+// String cw = oriField.getString("CHISHI_SEAT"); // 舱位
|
|
|
|
+// String dpsj = oriField.getString("BOOTIC_TIME"); // 订票时间
|
|
|
|
+ // 截获时间 ---样例:20200929061228
|
|
|
|
+ String captureTime = oriField.getString("CAPTURE_TIME");
|
|
|
|
+ /*String captureTimeMhdp = StringUtils.isNotBlank(captureTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(captureTime)) : "暂无";*/
|
|
|
|
+ Date captureTimeMhdpDateObj = StringUtils.isNotBlank(captureTime)? new Date(TimeTool.dateStringToTimeStamp3(captureTime) * 1000) : null;
|
|
|
|
+
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ if(Constants.MODEL_CODE_WSLJ_MHDP.equals(mxbh)){ // 单人预警-外省来津-民航订票
|
|
|
|
+ if(StringUtils.isNotBlank(ddjcdm) && "TSN".equals(ddjcdm.trim()) && captureTimeMhdpDateObj.compareTo(bkkssj) >= 0 && captureTimeMhdpDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ // 业务需求:到达机场代码为TSN(天津滨海国际机场)
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("民航订票 - 旅客中文名:");
|
|
|
|
+ yjxxsm.append(lkzwm);
|
|
|
|
+ yjxxsm.append(",旅客证件号码:");
|
|
|
|
+ yjxxsm.append(zjhm);
|
|
|
|
+ yjxxsm.append(",承运航空公司:");
|
|
|
|
+ yjxxsm.append(cyhkgs);
|
|
|
|
+ yjxxsm.append(",航班号:");
|
|
|
|
+ yjxxsm.append(hbh);
|
|
|
|
+ yjxxsm.append(",起飞机场:");
|
|
|
|
+ yjxxsm.append(qfjcmc);
|
|
|
|
+ yjxxsm.append(",出发时间:");
|
|
|
|
+ yjxxsm.append(cfsj);
|
|
|
|
+ yjxxsm.append(",到达机场:");
|
|
|
|
+ yjxxsm.append(StringUtils.isNotBlank(ddjcmc)? ddjcmc : "暂无");
|
|
|
|
+ yjxxsm.append(",到达时间:");
|
|
|
|
+ yjxxsm.append(ddsj);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, lkzwm, zjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeMhdpDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, ddjcmc, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ } else if (Constants.MODEL_CODE_KSGJ_MHDP.equals(mxbh)) { // 单人预警-跨省轨迹-民航订票
|
|
|
|
+ String mddShi = (String) modelInfoMap.get("mdd_shi");
|
|
|
|
+ if(StringUtils.isNotBlank(qfjcdm) && StringUtils.isNotBlank(ddjcmc) && "TSN".equals(qfjcdm.trim()) && ddjcmc.trim().contains(mddShi) && captureTimeMhdpDateObj.compareTo(bkkssj) >= 0 && captureTimeMhdpDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ // 业务需求:起飞机场代码为TSN(天津滨海国际机场),到达机场须属于当前任务所记录的目的地市
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("民航订票 - 旅客中文名:");
|
|
|
|
+ yjxxsm.append(lkzwm);
|
|
|
|
+ yjxxsm.append(",旅客证件号码:");
|
|
|
|
+ yjxxsm.append(zjhm);
|
|
|
|
+ yjxxsm.append(",承运航空公司:");
|
|
|
|
+ yjxxsm.append(cyhkgs);
|
|
|
|
+ yjxxsm.append(",航班号:");
|
|
|
|
+ yjxxsm.append(hbh);
|
|
|
|
+ yjxxsm.append(",起飞机场:");
|
|
|
|
+ yjxxsm.append(qfjcmc);
|
|
|
|
+ yjxxsm.append(",出发时间:");
|
|
|
|
+ yjxxsm.append(cfsj);
|
|
|
|
+ yjxxsm.append(",到达机场:");
|
|
|
|
+ yjxxsm.append(StringUtils.isNotBlank(ddjcmc)? ddjcmc : "暂无");
|
|
|
|
+ yjxxsm.append(",到达时间:");
|
|
|
|
+ yjxxsm.append(ddsj);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, lkzwm, zjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeMhdpDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, ddjcmc, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeJnryzs.equals(resourceCode)) { // =========== 境内人员住宿数据
|
|
|
|
+ // 旅馆编号
|
|
|
|
+ String lgbh = oriField.getString("HOTEL_NO");
|
|
|
|
+ String[] lgxxArr = CommonUtil.getConfValueByKeyHotel(lgbh).split("@");
|
|
|
|
+ // 旅馆名称
|
|
|
|
+// String lgmc = oriField.getString("HOTE_NAME");
|
|
|
|
+ // 旅馆地址
|
|
|
|
+// String lgdz = oriField.getString("HOTEL_ADDR_ADDR_NAME");
|
|
|
|
+ // 旅馆经度
|
|
|
|
+// String lgjd = oriField.getString("HOTEL_LON");
|
|
|
|
+ // 旅馆纬度
|
|
|
|
+// String lgwd = oriField.getString("HOTEL_LAT");
|
|
|
|
+ String lgmc = lgxxArr[0];
|
|
|
|
+ String lgdz = lgxxArr[1];
|
|
|
|
+ String lgjd = lgxxArr[2];
|
|
|
|
+ String lgwd = lgxxArr[3];
|
|
|
|
+// String lglx = oriField.getString("HOTE_TYPE_NAME"); // 旅馆类型
|
|
|
|
+ // 姓名
|
|
|
|
+ String rzrXm = oriField.getString("NAME");
|
|
|
|
+ // 身份证号
|
|
|
|
+ String rzrSfzh = oriField.getString("CERT_NO");
|
|
|
|
+ // 旅客联系电话
|
|
|
|
+ String ctctTel = oriField.getString("CTCT_TEL");
|
|
|
|
+ String rzrLxdh = StringUtils.isNotBlank(ctctTel)? ctctTel : yjrySjh;
|
|
|
|
+// String rylx = oriField.getString("PER_CLAS_NAME"); // 人员类型
|
|
|
|
+// String gj = oriField.getString("NATION_NAME"); // 国籍
|
|
|
|
+// String hjdz = oriField.getString("DOMIC_ADDR_NAME"); // 户籍地址
|
|
|
|
+ // 入住时间 ---样例:20250329061228
|
|
|
|
+ String admiTime = oriField.getString("ADMI_TIME");
|
|
|
|
+ String rzsj = StringUtils.isNotBlank(admiTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(admiTime)) : "暂无";
|
|
|
|
+ Date rzsjDateObj = StringUtils.isNotBlank(admiTime)? new Date(TimeTool.dateStringToTimeStamp3(admiTime) * 1000) : null;
|
|
|
|
+ // 退房时间 ---样例:20250329061228
|
|
|
|
+ String choutTime = oriField.getString("CHOUT_TIME");
|
|
|
|
+ String tfsj = StringUtils.isNotBlank(choutTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(choutTime)) : "暂无";
|
|
|
|
+// String zsts = oriField.getString("LODG_DAY_NUM"); // 住宿天数
|
|
|
|
+ // 房间号
|
|
|
|
+ String roomNo = oriField.getString("ROOM_NO");
|
|
|
|
+ String fjh = StringUtils.isNotBlank(roomNo)? roomNo : "暂无";
|
|
|
|
+// String rzrs = oriField.getString("ADMISSION_PER_NUM"); // 入住人数
|
|
|
|
+// String ywsxcl = oriField.getString("THER_ACCO_VEHI_JUDGE_FLAG"); // 有无随行车辆
|
|
|
|
+// String sxclhp = oriField.getString("ACCO_VEH_VEH_PLATE_NUM"); // 随行车辆号牌
|
|
|
|
+// String wypt = oriField.getString("PLAT_NAME"); // 网约平台
|
|
|
|
+// String ydrXm = oriField.getString("APPO_PER_NAME"); // 预定人姓名
|
|
|
|
+// String ydrSfzh = oriField.getString("APPO_PER_CERT_NO"); // 预定人身份证号
|
|
|
|
+// String ydrSjh = oriField.getString("APPO_PER_CTCT_TEL"); // 预定人手机号
|
|
|
|
+// String rzr2Xm = oriField.getString("ADMIS_PER_TWO_NAME"); // 入住人2姓名
|
|
|
|
+// String rzr2Sfzh = oriField.getString("ADMIS_PER_TWO_CERT_NO"); // 入住人2身份证号
|
|
|
|
+// String rzr2Lxfs = oriField.getString("ADMIS_PER_TWO_CTCT_TEL"); // 入住人2联系方式
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ /*if("DRYJ-BSJJ-LKZD".equals(mxbh)){ // 单人预警-本市进京-旅客住店
|
|
|
|
+ // --- todo
|
|
|
|
+ // 用户域实现
|
|
|
|
+ }
|
|
|
|
+ else*/
|
|
|
|
+ // 业务需求:线索人员所住旅馆位置须在当前任务所记录的布控区域范围内
|
|
|
|
+ if(Constants.MODEL_CODE_BSMGQY_LKZD.equals(mxbh)){ // 单人预警-本市敏感区域-旅客住店
|
|
|
|
+ JSONArray areaInfoList = JSON.parseArray(bkqyxx);
|
|
|
|
+ for (Object obj : areaInfoList) {
|
|
|
|
+ JSONObject ctrlAreaInfo = (JSONObject) obj;
|
|
|
|
+ String qymc = (String) ctrlAreaInfo.get("qymc");
|
|
|
|
+ Integer qyjhlx = (Integer) ctrlAreaInfo.get("qyjhlx");
|
|
|
|
+ JSONObject locationJSONObj = JSON.parseObject(String.valueOf(ctrlAreaInfo.get("qyfwjwdjhFh")));
|
|
|
|
+ JSONArray locationSet = locationJSONObj.getJSONArray("location");
|
|
|
|
+ if(!"null".equals(lgjd) && !"null".equals(lgwd)){
|
|
|
|
+ if(Constants.NUM_0 == qyjhlx){ // 圆形区域
|
|
|
|
+ JSONObject loc = locationSet.getJSONObject(0);
|
|
|
|
+ String centerLon84 = loc.getString("lon");
|
|
|
|
+ String centerLat84 = loc.getString("lat");
|
|
|
|
+ String radius = loc.getString("radius");
|
|
|
|
+ if(GeoUtils.isPointInCircle(Double.valueOf(lgwd), Double.valueOf(lgjd), Double.valueOf(centerLat84), Double.valueOf(centerLon84), Double.valueOf(radius)) && rzsjDateObj.compareTo(bkkssj) >= 0 && rzsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ String captureTimeJnryzs = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("旅馆住宿 - 旅馆名称:");
|
|
|
|
+ yjxxsm.append(lgmc);
|
|
|
|
+ yjxxsm.append(",旅馆地址:");
|
|
|
|
+ yjxxsm.append(lgdz);
|
|
|
|
+ yjxxsm.append(",入住人姓名:");
|
|
|
|
+ yjxxsm.append(rzrXm);
|
|
|
|
+ yjxxsm.append(",入住人身份证号:");
|
|
|
|
+ yjxxsm.append(rzrSfzh);
|
|
|
|
+ yjxxsm.append(",入住人联系电话:");
|
|
|
|
+ yjxxsm.append(rzrLxdh);
|
|
|
|
+ yjxxsm.append(",入住时间:");
|
|
|
|
+ yjxxsm.append(rzsj);
|
|
|
|
+ yjxxsm.append(",退房时间:");
|
|
|
|
+ yjxxsm.append(tfsj);
|
|
|
|
+ yjxxsm.append(",房间号:");
|
|
|
|
+ yjxxsm.append(fjh);
|
|
|
|
+ yjxxsm.append(",命中区域:");
|
|
|
|
+ yjxxsm.append(qymc);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, rzrXm, rzrSfzh, rzrLxdh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, rzsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, lgjd, lgwd, currentTime, currentTime, null, null, null, qymc, lgdz, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ } else { // 多边形区域
|
|
|
|
+ List<Coordinate> coordinates = new ArrayList<>();
|
|
|
|
+ for (Object item : locationSet) {
|
|
|
|
+ JSONObject loc = (JSONObject) item;
|
|
|
|
+ String vertexLon84 = loc.getString("lon");
|
|
|
|
+ String vertexLat84 = loc.getString("lat");
|
|
|
|
+ coordinates.add(new Coordinate(Double.valueOf(vertexLon84), Double.valueOf(vertexLat84)));
|
|
|
|
+ }
|
|
|
|
+ if(GeoUtils.isPointInPolygon(coordinates, new Coordinate(Double.valueOf(lgjd), Double.valueOf(lgwd))) && rzsjDateObj.compareTo(bkkssj) >= 0 && rzsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ String captureTimeJnryzs = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("旅馆住宿 - 旅馆名称:");
|
|
|
|
+ yjxxsm.append(lgmc);
|
|
|
|
+ yjxxsm.append(",旅馆地址:");
|
|
|
|
+ yjxxsm.append(lgdz);
|
|
|
|
+ yjxxsm.append(",入住人姓名:");
|
|
|
|
+ yjxxsm.append(rzrXm);
|
|
|
|
+ yjxxsm.append(",入住人身份证号:");
|
|
|
|
+ yjxxsm.append(rzrSfzh);
|
|
|
|
+ yjxxsm.append(",入住人联系电话:");
|
|
|
|
+ yjxxsm.append(rzrLxdh);
|
|
|
|
+ yjxxsm.append(",入住时间:");
|
|
|
|
+ yjxxsm.append(rzsj);
|
|
|
|
+ yjxxsm.append(",退房时间:");
|
|
|
|
+ yjxxsm.append(tfsj);
|
|
|
|
+ yjxxsm.append(",房间号:");
|
|
|
|
+ yjxxsm.append(fjh);
|
|
|
|
+ yjxxsm.append(",命中区域:");
|
|
|
|
+ yjxxsm.append(qymc);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, rzrXm, rzrSfzh, rzrLxdh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, rzsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, lgjd, lgwd, currentTime, currentTime, null, null, null, qymc, lgdz, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeWbsw.equals(resourceCode)) { // =========== 网吧上网数据
|
|
|
|
+ // 上网人员姓名
|
|
|
|
+ String swryXm = oriField.getString("INTE_PER_NAME");
|
|
|
|
+ // 上网人员身份证号
|
|
|
|
+ String swrySfzh = oriField.getString("CRED_NUM");
|
|
|
|
+ // 上网人员联系电话
|
|
|
|
+ String ctctTel = oriField.getString("CTCT_TEL");
|
|
|
|
+ String swryLxdh = StringUtils.isNotBlank(ctctTel)? ctctTel : yjrySjh;
|
|
|
|
+ // 上网终端编号
|
|
|
|
+ String intenetTermNo = oriField.getString("INTENET_TERM_NO");
|
|
|
|
+ String swzdbh = StringUtils.isNotBlank(intenetTermNo)? intenetTermNo : "暂无";
|
|
|
|
+// String ip = oriField.getString("MAIENG_IP"); // IP地址
|
|
|
|
+// String zdmc = oriField.getString("TERM_DESIG"); // 终端名称
|
|
|
|
+// String zdmac = oriField.getString("TERM_MAC"); // 终端mac地址
|
|
|
|
+ // 上网开始时间 ---样例:20250329061228
|
|
|
|
+ String intenetStartTime = oriField.getString("INTENET_START_TIME");
|
|
|
|
+ String swkssj = StringUtils.isNotBlank(intenetStartTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(intenetStartTime)) : "暂无";
|
|
|
|
+ Date swkssjDateObj = StringUtils.isNotBlank(intenetStartTime)? new Date(TimeTool.dateStringToTimeStamp3(intenetStartTime) * 1000) : null;
|
|
|
|
+ // 上网结束时间 ---样例:20250329061228
|
|
|
|
+ String intenetEndTime = oriField.getString("INTENET_END_TIME");
|
|
|
|
+ String swjssj = StringUtils.isNotBlank(intenetEndTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(intenetEndTime)) : "暂无";
|
|
|
|
+// String swsc = oriField.getString("INTENET_TIME_LENGTH"); // 上网时长
|
|
|
|
+ // 营业场所编号
|
|
|
|
+ /*String premNo = oriField.getString("PREM_NO");
|
|
|
|
+ String yycsbh = StringUtils.isNotBlank(premNo)? premNo : "暂无";*/
|
|
|
|
+ // 营业场所名称
|
|
|
|
+ String premDesig = oriField.getString("PREM_DESIG");
|
|
|
|
+ String yycsmc = StringUtils.isNotBlank(premDesig)? premDesig : "暂无";
|
|
|
|
+// String dzmc = oriField.getString("ADDR_NAME"); // 地址名称
|
|
|
|
+// String jd = oriField.getString("LON"); // 经度
|
|
|
|
+// String wd = oriField.getString("LAT"); // 纬度
|
|
|
|
+// String frXm = oriField.getString("LEGAL_NAME"); // 法人姓名
|
|
|
|
+// String frSfzh = oriField.getString("LEGAL_CRED_NUM"); // 法人身份证号
|
|
|
|
+// String frLxdh = oriField.getString("LEGAL_CTCT_TEL"); // 法人联系电话
|
|
|
|
+ String captureTimeWbsw = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
|
|
|
|
+
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ // 单人预警-本市敏感区域-网吧上网
|
|
|
|
+ if(Constants.MODEL_CODE_BSMGQY_WBSW.equals(mxbh) && swkssjDateObj.compareTo(bkkssj) >= 0 && swkssjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ // 表中无经、纬度数据,无法判断是否出现在布控区域
|
|
|
|
+ // 暂时不做过滤处理
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("网吧上网 - 上网人员姓名:");
|
|
|
|
+ yjxxsm.append(swryXm);
|
|
|
|
+ yjxxsm.append(",上网人员身份证号:");
|
|
|
|
+ yjxxsm.append(swrySfzh);
|
|
|
|
+ yjxxsm.append(",上网人员联系电话:");
|
|
|
|
+ yjxxsm.append(swryLxdh);
|
|
|
|
+ yjxxsm.append(",上网终端编号:");
|
|
|
|
+ yjxxsm.append(swzdbh);
|
|
|
|
+ yjxxsm.append(",上网开始时间:");
|
|
|
|
+ yjxxsm.append(swkssj);
|
|
|
|
+ yjxxsm.append(",上网结束时间:");
|
|
|
|
+ yjxxsm.append(swjssj);
|
|
|
|
+ yjxxsm.append(",营业场所名称:");
|
|
|
|
+ yjxxsm.append(yycsmc);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, swryXm, swrySfzh, swryLxdh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, swkssjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, yycsmc, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeDt.equals(resourceCode)) { // =========== 地铁交易数据
|
|
|
|
+ // 乘客姓名
|
|
|
|
+ String ckXm = oriField.getString("XM");
|
|
|
|
+ // 乘客身份证号
|
|
|
|
+ String ckSfzh = oriField.getString("ZJHM");
|
|
|
|
+ // 乘客联系电话
|
|
|
|
+ String yddh = oriField.getString("YDDH");
|
|
|
|
+ String ckLxdh = StringUtils.isNotBlank(yddh)? yddh : yjrySjh;
|
|
|
|
+ // 刷卡卡号
|
|
|
|
+ String khXxbh = oriField.getString("KH_XXBH");
|
|
|
|
+ String skkh = StringUtils.isNotBlank(khXxbh)? khXxbh : "暂无";
|
|
|
|
+ // 刷卡时间 ---样例:20250329061228
|
|
|
|
+ String shkJdsj = oriField.getString("SHK_JDSJ");
|
|
|
|
+ String sksj = StringUtils.isNotBlank(shkJdsj)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(shkJdsj)) : "暂无";
|
|
|
|
+ Date sksjDateObj = StringUtils.isNotBlank(shkJdsj)? new Date(TimeTool.dateStringToTimeStamp3(shkJdsj) * 1000) : null;
|
|
|
|
+ // 车站名称
|
|
|
|
+ String czmMc = oriField.getString("CZM_MC");
|
|
|
|
+ String czmc = StringUtils.isNotBlank(czmMc)? czmMc : "暂无";
|
|
|
|
+ // 分类名称
|
|
|
|
+ /*String flMc = oriField.getString("FL_MC");
|
|
|
|
+ String flmc = StringUtils.isNotBlank(flMc)? flMc : "暂无";*/
|
|
|
|
+ // 进出站标识名称
|
|
|
|
+ String jczBsMc = oriField.getString("JCZ_BS_MC");
|
|
|
|
+ String jczbsmc = StringUtils.isNotBlank(jczBsMc)? jczBsMc : "暂无";
|
|
|
|
+ // 交易类型名称
|
|
|
|
+ /*String jyLexMc = oriField.getString("JY_LEX_MC");
|
|
|
|
+ String jylxmc = StringUtils.isNotBlank(jyLexMc)? jyLexMc : "暂无";*/
|
|
|
|
+ // 闸机号
|
|
|
|
+ String zhjhJyqk = oriField.getString("ZHJH_JYQK");
|
|
|
|
+ String zjh = StringUtils.isNotBlank(zhjhJyqk)? zhjhJyqk : "暂无";
|
|
|
|
+ // 地铁线路信息
|
|
|
|
+ String dtXlxx = oriField.getString("DTXLXX");
|
|
|
|
+ String dtxlxx = StringUtils.isNotBlank(dtXlxx)? dtXlxx : "暂无";
|
|
|
|
+ String captureTimeDt = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
|
|
|
|
+
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ // 单人预警-本市敏感区域-地铁
|
|
|
|
+ if(Constants.MODEL_CODE_BSMGQY_DT.equals(mxbh) && sksjDateObj.compareTo(bkkssj) >= 0 && sksjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ // 表中无经、纬度数据,无法判断是否出现在布控区域
|
|
|
|
+ // 暂时不做过滤处理
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("地铁数据 - 乘客姓名:");
|
|
|
|
+ yjxxsm.append(ckXm);
|
|
|
|
+ yjxxsm.append(",乘客身份证号:");
|
|
|
|
+ yjxxsm.append(ckSfzh);
|
|
|
|
+ yjxxsm.append(",乘客联系电话:");
|
|
|
|
+ yjxxsm.append(ckLxdh);
|
|
|
|
+ yjxxsm.append(",刷卡卡号:");
|
|
|
|
+ yjxxsm.append(skkh);
|
|
|
|
+ yjxxsm.append(",刷卡时间:");
|
|
|
|
+ yjxxsm.append(sksj);
|
|
|
|
+ yjxxsm.append(",车站名称:");
|
|
|
|
+ yjxxsm.append(czmc);
|
|
|
|
+ yjxxsm.append(",进出站标识名称:");
|
|
|
|
+ yjxxsm.append(jczbsmc);
|
|
|
|
+ yjxxsm.append(",闸机号:");
|
|
|
|
+ yjxxsm.append(zjh);
|
|
|
|
+ yjxxsm.append(",地铁线路信息:");
|
|
|
|
+ yjxxsm.append(dtxlxx);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, ckXm, ckSfzh, ckLxdh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, sksjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, czmc, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeSjrd.equals(resourceCode)) { // =========== 手机热点
|
|
|
|
+ // 移动电话
|
|
|
|
+ String yddhSrc = oriField.getString("YDDH");
|
|
|
|
+ String yddh = StringUtils.isNotBlank(yddhSrc)? yddhSrc : yjrySjh;
|
|
|
|
+ // 城际设备信息编号
|
|
|
|
+ /*String chjiSbeXxbh = oriField.getString("CHJI_SBE_XXBH");
|
|
|
|
+ String cjsbxxbh = StringUtils.isNotBlank(chjiSbeXxbh)? chjiSbeXxbh : "暂无";*/
|
|
|
|
+ // 国际移动用户识别码,IMSI
|
|
|
|
+ String gjydyhsbm = oriField.getString("GJYDYHSBM");
|
|
|
|
+ String imsi = StringUtils.isNotBlank(gjydyhsbm)? gjydyhsbm : "暂无";
|
|
|
|
+ // 国际移动设备识别码,IMEI
|
|
|
|
+ String gjydsbsfdm = oriField.getString("GJYDSBSFDM");
|
|
|
|
+ String imei = StringUtils.isNotBlank(gjydsbsfdm)? gjydsbsfdm : "暂无";
|
|
|
|
+ // 交换机信息编号
|
|
|
|
+ /*String jhjXxbh = oriField.getString("JHJ_XXBH");
|
|
|
|
+ String jhjxxbh = StringUtils.isNotBlank(jhjXxbh)? jhjXxbh : "暂无";*/
|
|
|
|
+ // 位置区域信息编号
|
|
|
|
+ String wzhQuyXxbh = oriField.getString("WZH_QUY_XXBH");
|
|
|
|
+ String wzqyxxbh = StringUtils.isNotBlank(wzhQuyXxbh)? wzhQuyXxbh : "暂无";
|
|
|
|
+ // 小区信息编号
|
|
|
|
+ /*String xiqXxbh = oriField.getString("XIQ_XXBH");
|
|
|
|
+ String xqxxbh = StringUtils.isNotBlank(xiqXxbh)? xiqXxbh : "暂无";*/
|
|
|
|
+ // 经度
|
|
|
|
+ String jd = oriField.getString("DQJD");
|
|
|
|
+ // 纬度
|
|
|
|
+ String wd = oriField.getString("DQWD");
|
|
|
|
+ // 关联时间 ---样例:1745476573
|
|
|
|
+ String jdsj = oriField.getString("JDSJ");
|
|
|
|
+ String glsj = StringUtils.isNotBlank(jdsj)? TimeTool.timeStampToDateString(Long.valueOf(jdsj)) : "暂无";
|
|
|
|
+ Date glsjDateObj = StringUtils.isNotBlank(jdsj)? new Date(Long.valueOf(jdsj) * 1000) : null;
|
|
|
|
+
|
|
|
|
+ String captureTimeSjrd = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
|
|
|
|
+ String addressName = null;
|
|
|
|
+ if(StringUtils.isNotBlank(wd) && StringUtils.isNotBlank(jd)){
|
|
|
|
+ double[] jwdBD = GpsCoordinateUtils.calWGS84toBD09(Double.valueOf(wd), Double.valueOf(jd));
|
|
|
|
+ String rspStr = httpClient.sendGetRequst(addressQueryUrl.replace("x", String.valueOf(jwdBD[1])).replace("y", String.valueOf(jwdBD[0])), null);
|
|
|
|
+ JSONObject rspJSONObj = JSON.parseObject(rspStr);
|
|
|
|
+ addressName = rspJSONObj.getString("fullAddress");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ // 单人预警-本市进京-手机热点
|
|
|
|
+ if(Constants.MODEL_CODE_BSJJ_SJRD.equals(mxbh) && glsjDateObj.compareTo(bkkssj) >= 0 && glsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ // 不做过滤处理
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("手机热点 - 移动电话:");
|
|
|
|
+ yjxxsm.append(yddh);
|
|
|
|
+ yjxxsm.append(",IMSI:");
|
|
|
|
+ yjxxsm.append(imsi);
|
|
|
|
+ yjxxsm.append(",IMEI:");
|
|
|
|
+ yjxxsm.append(imei);
|
|
|
|
+ yjxxsm.append(",位置区域信息编号:");
|
|
|
|
+ yjxxsm.append(wzqyxxbh);
|
|
|
|
+ yjxxsm.append(",关联时间:");
|
|
|
|
+ yjxxsm.append(glsj);
|
|
|
|
+ yjxxsm.append(",位置信息:");
|
|
|
|
+ yjxxsm.append(StringUtils.isNotBlank(addressName)? addressName : "暂无");
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, yjrySfzh, yddh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, glsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jd, wd, currentTime, currentTime, null, null, null, null, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeXlpc.equals(resourceCode)) { // =========== 巡逻盘查(人员)
|
|
|
|
+ // 卡口信息ID
|
|
|
|
+ /*String kakXxId = oriField.getString("KAK_XXID");
|
|
|
|
+ String kkxxId = StringUtils.isNotBlank(kakXxId)? kakXxId : "暂无";*/
|
|
|
|
+ // 卡口名称
|
|
|
|
+ String kakMc = oriField.getString("KAK_MC");
|
|
|
|
+ String kkmc = StringUtils.isNotBlank(kakMc)? kakMc : "暂无";
|
|
|
|
+ // 终端型号
|
|
|
|
+ /*String zhdXh = oriField.getString("ZHD_XH");
|
|
|
|
+ String zdxh = StringUtils.isNotBlank(zhdXh)? zhdXh : "暂无";*/
|
|
|
|
+ // 终端串号简要情况
|
|
|
|
+ String zhdChaJyqk = oriField.getString("ZHD_CHA_JYQK");
|
|
|
|
+ String zdchjyqk = StringUtils.isNotBlank(zhdChaJyqk)? zhdChaJyqk : "暂无";
|
|
|
|
+ // 盘查时间 ---样例:20250329061228
|
|
|
|
+ String pacJdsj = oriField.getString("PAC_JDSJ");
|
|
|
|
+ String pcsj = StringUtils.isNotBlank(pacJdsj)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(pacJdsj)) : "暂无";
|
|
|
|
+ Date pcsjDateObj = StringUtils.isNotBlank(pacJdsj)? new Date(TimeTool.dateStringToTimeStamp3(pacJdsj) * 1000) : null;
|
|
|
|
+ // 人员姓名
|
|
|
|
+ String xmSrc = oriField.getString("XM");
|
|
|
|
+ String xm = StringUtils.isNotBlank(xmSrc)? xmSrc : "暂无";
|
|
|
|
+ // 人员身份证号
|
|
|
|
+ String gmsfhm = oriField.getString("GMSFHM");
|
|
|
|
+ String sfzh = StringUtils.isNotBlank(gmsfhm)? gmsfhm : "暂无";
|
|
|
|
+ // 人员联系电话
|
|
|
|
+ String lxdhSrc = oriField.getString("LXDH");
|
|
|
|
+ String lxdh = StringUtils.isNotBlank(lxdhSrc)? lxdhSrc : yjrySjh;
|
|
|
|
+// String rybq = oriField.getString("REY_BQI_MC"); // 人员标签
|
|
|
|
+ // 籍贯
|
|
|
|
+ String jgXzqhmc = oriField.getString("JG_XZQHMC");
|
|
|
|
+ String jg = StringUtils.isNotBlank(jgXzqhmc)? jgXzqhmc : "暂无";
|
|
|
|
+ // 民族
|
|
|
|
+ String mzmzwz = oriField.getString("MZMZWZ");
|
|
|
|
+ String mz = StringUtils.isNotBlank(mzmzwz)? mzmzwz : "暂无";
|
|
|
|
+ // 居住地区划内详细地址
|
|
|
|
+ String jzdQhnxxdz = oriField.getString("JZD_QHNXXDZ");
|
|
|
|
+ String jzdxxdz = StringUtils.isNotBlank(jzdQhnxxdz)? jzdQhnxxdz : "暂无";
|
|
|
|
+ // 盘查民警姓名
|
|
|
|
+ String pacMjXm = oriField.getString("PAC_MJ_XM");
|
|
|
|
+ String pcmjXm = StringUtils.isNotBlank(pacMjXm)? pacMjXm : "暂无";
|
|
|
|
+ // 盘查民警警号
|
|
|
|
+ String pacMjJh = oriField.getString("PAC_MJ_JH");
|
|
|
|
+ String pcmjJh = StringUtils.isNotBlank(pacMjJh)? pacMjJh : "暂无";
|
|
|
|
+ // 盘查民警账号
|
|
|
|
+ /*String pacMjZh = oriField.getString("PAC_MJ_ZH");
|
|
|
|
+ String pcmjZh = StringUtils.isNotBlank(pacMjZh)? pacMjZh : "暂无";*/
|
|
|
|
+ // 盘查民警所属单位名称
|
|
|
|
+ String pacMjSsDwmc = oriField.getString("PAC_MJ_SS_DWMC");
|
|
|
|
+ String pcmjSsdwmc = StringUtils.isNotBlank(pacMjSsDwmc)? pacMjSsDwmc : "暂无";
|
|
|
|
+ // 盘查处理结果
|
|
|
|
+ String pacChlJguMc = oriField.getString("PAC_CHL_JGU_MC");
|
|
|
|
+ String pccljg = StringUtils.isNotBlank(pacChlJguMc)? pacChlJguMc : "暂无";
|
|
|
|
+ // 盘查处理移交单位名称
|
|
|
|
+ String pacChlYijDwmc = oriField.getString("PAC_CHL_YIJ_DWMC");
|
|
|
|
+ String pcclyjdwmc = StringUtils.isNotBlank(pacChlYijDwmc)? pacChlYijDwmc : "暂无";
|
|
|
|
+ // 业务类型名称
|
|
|
|
+ String ywlxMc = oriField.getString("YWLX_MC");
|
|
|
|
+ String ywlx = StringUtils.isNotBlank(ywlxMc)? ywlxMc : "暂无";
|
|
|
|
+ // 盘查地经度
|
|
|
|
+ String pcdJd = oriField.getString("PCD_DQJD");
|
|
|
|
+ // 盘查地纬度
|
|
|
|
+ String pcdWd = oriField.getString("PCD_DQWD");
|
|
|
|
+ String captureTimeXlpc = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
|
|
|
|
+ String addressName = null;
|
|
|
|
+ if(StringUtils.isNotBlank(pcdWd) && StringUtils.isNotBlank(pcdJd)){
|
|
|
|
+ double[] jwdBD = GpsCoordinateUtils.calWGS84toBD09(Double.valueOf(pcdWd), Double.valueOf(pcdJd));
|
|
|
|
+ String rspStr = httpClient.sendGetRequst(addressQueryUrl.replace("x", String.valueOf(jwdBD[1])).replace("y", String.valueOf(jwdBD[0])), null);
|
|
|
|
+ JSONObject rspJSONObj = JSON.parseObject(rspStr);
|
|
|
|
+ addressName = rspJSONObj.getString("fullAddress");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ // 单人预警-本市进京-巡逻盘查
|
|
|
|
+ if(Constants.MODEL_CODE_BSJJ_XLPC.equals(mxbh) && pcsjDateObj.compareTo(bkkssj) >= 0 && pcsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ // 不做过滤处理
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("巡逻盘查 - 人员姓名:");
|
|
|
|
+ yjxxsm.append(xm);
|
|
|
|
+ yjxxsm.append(",人员身份证号:");
|
|
|
|
+ yjxxsm.append(sfzh);
|
|
|
|
+ yjxxsm.append(",人员联系电话:");
|
|
|
|
+ yjxxsm.append(lxdh);
|
|
|
|
+ yjxxsm.append(",籍贯:");
|
|
|
|
+ yjxxsm.append(jg);
|
|
|
|
+ yjxxsm.append(",民族:");
|
|
|
|
+ yjxxsm.append(mz);
|
|
|
|
+ yjxxsm.append(",居住地详细地址:");
|
|
|
|
+ yjxxsm.append(jzdxxdz);
|
|
|
|
+ yjxxsm.append(",盘查时间:");
|
|
|
|
+ yjxxsm.append(pcsj);
|
|
|
|
+ yjxxsm.append(",卡口名称:");
|
|
|
|
+ yjxxsm.append(kkmc);
|
|
|
|
+ yjxxsm.append(",终端串号:");
|
|
|
|
+ yjxxsm.append(zdchjyqk);
|
|
|
|
+ yjxxsm.append(",盘查民警姓名:");
|
|
|
|
+ yjxxsm.append(pcmjXm);
|
|
|
|
+ yjxxsm.append(",盘查民警警号:");
|
|
|
|
+ yjxxsm.append(pcmjJh);
|
|
|
|
+ yjxxsm.append(",盘查民警所属单位名称:");
|
|
|
|
+ yjxxsm.append(pcmjSsdwmc);
|
|
|
|
+ yjxxsm.append(",盘查处理结果:");
|
|
|
|
+ yjxxsm.append(pccljg);
|
|
|
|
+ yjxxsm.append(",盘查处理移交单位名称:");
|
|
|
|
+ yjxxsm.append(pcclyjdwmc);
|
|
|
|
+ yjxxsm.append(",业务类型名称:");
|
|
|
|
+ yjxxsm.append(ywlx);
|
|
|
|
+ yjxxsm.append(",盘查地位置信息:");
|
|
|
|
+ yjxxsm.append(StringUtils.isNotBlank(addressName)? addressName : "暂无");
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, xm, sfzh, lxdh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, pcsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, pcdJd, pcdWd, currentTime, currentTime, null, null, null, null, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeZdjc.equals(resourceCode)) { // =========== 站点检查(人员)
|
|
|
|
+ // 人员姓名
|
|
|
|
+ String xmSrc = oriField.getString("XM");
|
|
|
|
+ String xm = StringUtils.isNotBlank(xmSrc)? xmSrc : "暂无";
|
|
|
|
+ // 人员身份证号
|
|
|
|
+ String gmsfhm = oriField.getString("GMSFHM");
|
|
|
|
+ String sfzh = StringUtils.isNotBlank(gmsfhm)? gmsfhm : "暂无";
|
|
|
|
+ // 民族
|
|
|
|
+ String mzmzwz = oriField.getString("MZMZWZ");
|
|
|
|
+ String mz = StringUtils.isNotBlank(mzmzwz)? mzmzwz : "暂无";
|
|
|
|
+ // 地址
|
|
|
|
+ String dzmc = oriField.getString("DZMC");
|
|
|
|
+ String dz = StringUtils.isNotBlank(dzmc)? dzmc : "暂无";
|
|
|
|
+ // 发证机关名称
|
|
|
|
+ String fzjgMc = oriField.getString("FZJG_MC");
|
|
|
|
+ String fzjg = StringUtils.isNotBlank(fzjgMc)? fzjgMc : "暂无";
|
|
|
|
+ // 证件有效起始日期
|
|
|
|
+ String zjyxqKsRq = oriField.getString("ZJYXQ_KS_RQ");
|
|
|
|
+ String zjyxqsrq = StringUtils.isNotBlank(zjyxqKsRq)? zjyxqKsRq : "暂无";
|
|
|
|
+ // 证件有效终止日期
|
|
|
|
+ String zjyxqJshRq = oriField.getString("ZJYXQ_JSH_RQ");
|
|
|
|
+ String zjyxzzrq = StringUtils.isNotBlank(zjyxqJshRq)? zjyxqJshRq : "暂无";
|
|
|
|
+ // 警员编号
|
|
|
|
+ String jyuBh = oriField.getString("JYU_BH");
|
|
|
|
+ String jybh = StringUtils.isNotBlank(jyuBh)? jyuBh : "暂无";
|
|
|
|
+ // 人员照片地址
|
|
|
|
+ String ryzpWz = oriField.getString("RYZP_WZ");
|
|
|
|
+ String ryzpUrl = StringUtils.isNotBlank(ryzpWz)? ryzpWz : "暂无";
|
|
|
|
+ // 检查站名称
|
|
|
|
+ String jiczMc = oriField.getString("JICZ_MC");
|
|
|
|
+ String jczmc = StringUtils.isNotBlank(jiczMc)? jiczMc : "暂无";
|
|
|
|
+ // 检查时间 ---样例:20250329061228
|
|
|
|
+ String jicJdsj = oriField.getString("JIC_JDSJ");
|
|
|
|
+ String jcsj = StringUtils.isNotBlank(jicJdsj)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(jicJdsj)) : "暂无";
|
|
|
|
+ Date jcsjDateObj = StringUtils.isNotBlank(jicJdsj)? new Date(TimeTool.dateStringToTimeStamp3(jicJdsj) * 1000) : null;
|
|
|
|
+
|
|
|
|
+ String captureTimeZdjc = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
|
|
|
|
+
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ // 单人预警-本市进京-站点检查
|
|
|
|
+ if(Constants.MODEL_CODE_BSJJ_ZDJC.equals(mxbh) && jcsjDateObj.compareTo(bkkssj) >= 0 && jcsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ // 不做过滤处理
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("站点检查 - 人员姓名:");
|
|
|
|
+ yjxxsm.append(xm);
|
|
|
|
+ yjxxsm.append(",人员身份证号:");
|
|
|
|
+ yjxxsm.append(sfzh);
|
|
|
|
+ yjxxsm.append(",人员照片:");
|
|
|
|
+ yjxxsm.append(ryzpUrl);
|
|
|
|
+ yjxxsm.append(",民族:");
|
|
|
|
+ yjxxsm.append(mz);
|
|
|
|
+ yjxxsm.append(",地址:");
|
|
|
|
+ yjxxsm.append(dz);
|
|
|
|
+ yjxxsm.append(",检查警员编号:");
|
|
|
|
+ yjxxsm.append(jybh);
|
|
|
|
+ yjxxsm.append(",检查时间:");
|
|
|
|
+ yjxxsm.append(jcsj);
|
|
|
|
+ yjxxsm.append(",检查站名称:");
|
|
|
|
+ yjxxsm.append(jczmc);
|
|
|
|
+ yjxxsm.append(",发证机关:");
|
|
|
|
+ yjxxsm.append(fzjg);
|
|
|
|
+ yjxxsm.append(",证件有效起始日期:");
|
|
|
|
+ yjxxsm.append(zjyxqsrq);
|
|
|
|
+ yjxxsm.append(",证件有效终止日期:");
|
|
|
|
+ yjxxsm.append(zjyxzzrq);
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, xm, sfzh, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, jcsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, jczmc, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeDzwl.equals(resourceCode)) { // =========== 电子围栏(火车站)
|
|
|
|
+ // 移动电话
|
|
|
|
+ String mob = oriField.getString("MOB");
|
|
|
|
+ String yddh = StringUtils.isNotBlank(mob)? mob : yjrySjh;
|
|
|
|
+ // 国际移动用户识别码
|
|
|
|
+ String imsiSrc = oriField.getString("IMSI");
|
|
|
|
+ String imsi = StringUtils.isNotBlank(imsiSrc)? imsiSrc : "暂无";
|
|
|
|
+ // 国际移动设备识别码
|
|
|
|
+ String imeiSrc = oriField.getString("IMEI");
|
|
|
|
+ String imei = StringUtils.isNotBlank(imeiSrc)? imeiSrc : "暂无";
|
|
|
|
+ // 手机MAC地址
|
|
|
|
+ String mobphoMac = oriField.getString("MOBPHO_MAC");
|
|
|
|
+ String sjMac = StringUtils.isNotBlank(mobphoMac)? mobphoMac : "暂无";
|
|
|
|
+ // 运营商名称
|
|
|
|
+// String spName = oriField.getString("SP_NAME");
|
|
|
|
+// String yysmc = StringUtils.isNotBlank(spName)? spName : "暂无";
|
|
|
|
+ // 设备编号
|
|
|
|
+ /*String equipmentNo = oriField.getString("EQUIPMENT_NO");
|
|
|
|
+ String sbbh = StringUtils.isNotBlank(equipmentNo)? equipmentNo : "暂无";*/
|
|
|
|
+ // 所在地区编号
|
|
|
|
+// String szdqbh = oriField.getString("IN_THE_AREA_NO");
|
|
|
|
+ // 厂商编号
|
|
|
|
+// String csbh = oriField.getString("COMP_NO");
|
|
|
|
+ // 网络类型名称
|
|
|
|
+// String wllxmc = oriField.getString("NET_TYPE_NAME");
|
|
|
|
+ // 频点
|
|
|
|
+// String pd = oriField.getString("FREPOI");
|
|
|
|
+ // 基站地球经度
|
|
|
|
+ String jzdqJd = oriField.getString("BASSTA_LON");
|
|
|
|
+ // 基站地球纬度
|
|
|
|
+ String jzdqWd = oriField.getString("BASSTA_LAT");
|
|
|
|
+ // 截获时间 ---样例:20250329061228
|
|
|
|
+ String captureTime = oriField.getString("CAPTURE_TIME");
|
|
|
|
+ String captureTimeDzwl = StringUtils.isNotBlank(captureTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(captureTime)) : "暂无";
|
|
|
|
+ Date captureTimeDzwlDateObj = StringUtils.isNotBlank(captureTime)? new Date(TimeTool.dateStringToTimeStamp3(captureTime) * 1000) : null;
|
|
|
|
+ String addressName = null;
|
|
|
|
+ if(StringUtils.isNotBlank(jzdqWd) && StringUtils.isNotBlank(jzdqJd)){
|
|
|
|
+ double[] jwdBD = GpsCoordinateUtils.calWGS84toBD09(Double.valueOf(jzdqWd), Double.valueOf(jzdqJd));
|
|
|
|
+ String rspStr = httpClient.sendGetRequst(addressQueryUrl.replace("x", String.valueOf(jwdBD[1])).replace("y", String.valueOf(jwdBD[0])), null);
|
|
|
|
+ JSONObject rspJSONObj = JSON.parseObject(rspStr);
|
|
|
|
+ addressName = rspJSONObj.getString("fullAddress");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ if(Constants.MODEL_CODE_BSJJ_HCZDW.equals(mxbh)){ // 单人预警-本市进京-火车站电围
|
|
|
|
+ // 业务需求:只保留命中点位在火车站区域内的数据
|
|
|
|
+ if(GeoUtils.isPointInCircle(Double.valueOf(jzdqWd), Double.valueOf(jzdqJd), Double.valueOf(centerPointLatTJZ), Double.valueOf(centerPointLonTJZ), Double.valueOf(radiusTJZ)) && captureTimeDzwlDateObj.compareTo(bkkssj) >= 0 && captureTimeDzwlDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("火车站电围 - 移动电话:");
|
|
|
|
+ yjxxsm.append(yddh);
|
|
|
|
+ yjxxsm.append(",IMSI:");
|
|
|
|
+ yjxxsm.append(imsi);
|
|
|
|
+ yjxxsm.append(",IMEI:");
|
|
|
|
+ yjxxsm.append(imei);
|
|
|
|
+ yjxxsm.append(",手机MAC地址:");
|
|
|
|
+ yjxxsm.append(sjMac);
|
|
|
|
+ yjxxsm.append(",命中区域:天津站");
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, yjrySfzh, yddh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeDzwlDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jzdqJd, jzdqWd, currentTime, currentTime, null, null, null, Constants.QYMC_TJZ, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (resCodeRlgz.equals(resourceCode)) { // =========== 人脸感知(火车站/本市)
|
|
|
|
+ // 抓拍机编号
|
|
|
|
+ /*String snashoMachNo = oriField.getString("SNASHO_MACH_NO");
|
|
|
|
+ String zpjbh = StringUtils.isNotBlank(snashoMachNo)? snashoMachNo : "暂无";*/
|
|
|
|
+ // 抓拍机名称
|
|
|
|
+ String snashoMachDesig = oriField.getString("SNASHO_MACH_DESIG");
|
|
|
|
+ String zpjmc = StringUtils.isNotBlank(snashoMachDesig)? snashoMachDesig : "暂无";
|
|
|
|
+ // 告警人员姓名
|
|
|
|
+// String gjryXm = oriField.getString("ALARM_PERSON_NAME");
|
|
|
|
+ // 证件号码
|
|
|
|
+ String credNum = oriField.getString("CRED_NUM");
|
|
|
|
+ String gjryZjhm = StringUtils.isNotBlank(credNum)? credNum : "暂无";
|
|
|
|
+ // 告警时间 ---样例:20250329061228
|
|
|
|
+ String alarmTime = oriField.getString("ALARM_TIME");
|
|
|
|
+ String gjsj = StringUtils.isNotBlank(alarmTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(alarmTime)) : "暂无";
|
|
|
|
+ Date gjsjDateObj = StringUtils.isNotBlank(alarmTime)? new Date(TimeTool.dateStringToTimeStamp3(alarmTime) * 1000) : null;
|
|
|
|
+ // 地址名称
|
|
|
|
+// String dzmc = oriField.getString("ADDR_NAME");
|
|
|
|
+ // 预警相似度
|
|
|
|
+// String yjxsd = oriField.getString("EARALA_SIMILA");
|
|
|
|
+ // 告警信息处理结果
|
|
|
|
+// String gjxxcljg = oriField.getString("ALARM_INFO_PROC_RESU");
|
|
|
|
+ // 人脸图片文件路径
|
|
|
|
+ String perFacePictureFilePath = oriField.getString("PER_FACE_PICTURE_FILE_PATH");
|
|
|
|
+ String rltpwjlj = StringUtils.isNotBlank(perFacePictureFilePath)? perFacePictureFilePath : "暂无";
|
|
|
|
+ // 经度
|
|
|
|
+ String jd = oriField.getString("LON");
|
|
|
|
+ // 纬度
|
|
|
|
+ String wd = oriField.getString("LAT");
|
|
|
|
+ String addressName = null;
|
|
|
|
+ if(StringUtils.isNotBlank(wd) && StringUtils.isNotBlank(jd)){
|
|
|
|
+ double[] jwdBD = GpsCoordinateUtils.calWGS84toBD09(Double.valueOf(wd), Double.valueOf(jd));
|
|
|
|
+ String rspStr = httpClient.sendGetRequst(addressQueryUrl.replace("x", String.valueOf(jwdBD[1])).replace("y", String.valueOf(jwdBD[0])), null);
|
|
|
|
+ JSONObject rspJSONObj = JSON.parseObject(rspStr);
|
|
|
|
+ addressName = rspJSONObj.getString("fullAddress");
|
|
|
|
+ }
|
|
|
|
+ for (Map<String, Object> modelInfoMap : modelInfoList) {
|
|
|
|
+ String mxbh = (String) modelInfoMap.get("mxbh");
|
|
|
|
+ if(Constants.MODEL_CODE_BSJJ_HCZRLGZ.equals(mxbh)){ // 单人预警-本市进京-火车站人脸感知
|
|
|
|
+ // 业务需求:只保留命中点位在火车站区域内的数据
|
|
|
|
+ if(GeoUtils.isPointInCircle(Double.valueOf(wd), Double.valueOf(jd), Double.valueOf(centerPointLatTJZ), Double.valueOf(centerPointLonTJZ), Double.valueOf(radiusTJZ)) && gjsjDateObj.compareTo(bkkssj) >= 0 && gjsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ yjxxsm.append("火车站人脸感知 - 抓拍机名称:");
|
|
|
|
+ yjxxsm.append(zpjmc);
|
|
|
|
+ yjxxsm.append(",告警人员证件号码:");
|
|
|
|
+ yjxxsm.append(gjryZjhm);
|
|
|
|
+ yjxxsm.append(",告警时间:");
|
|
|
|
+ yjxxsm.append(gjsj);
|
|
|
|
+ yjxxsm.append(",人脸图片文件路径:");
|
|
|
|
+ yjxxsm.append(rltpwjlj);
|
|
|
|
+ yjxxsm.append(",位置信息:");
|
|
|
|
+ yjxxsm.append(addressName);
|
|
|
|
+ yjxxsm.append(",命中区域:天津站");
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, gjryZjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, gjsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jd, wd, currentTime, currentTime, null, null, null, Constants.QYMC_TJZ, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ }
|
|
|
|
+ } else if (Constants.MODEL_CODE_BSMGQY_BSRL.equals(mxbh)) { // 单人预警-本市敏感区域-本市人脸
|
|
|
|
+ // 业务需求:只保留命中点位在当前任务记录的布控区域内的数据
|
|
|
|
+ // 过滤不在布控区域范围的数据
|
|
|
|
+ JSONArray areaInfoList = JSON.parseArray(bkqyxx);
|
|
|
|
+ if(areaInfoList != null && !areaInfoList.isEmpty()){
|
|
|
|
+ for (Object obj : areaInfoList) {
|
|
|
|
+ JSONObject ctrlAreaInfo = (JSONObject) obj;
|
|
|
|
+ String areaCode = (String) ctrlAreaInfo.get("qybh");
|
|
|
|
+ String areaName = (String) ctrlAreaInfo.get("qymc");
|
|
|
|
+ Integer geoType = (Integer) ctrlAreaInfo.get("qyjhlx");
|
|
|
|
+ JSONObject locationJSONObj = JSON.parseObject(String.valueOf(ctrlAreaInfo.get("qyfwjwdjhFh")));
|
|
|
|
+ JSONArray locationSet = locationJSONObj.getJSONArray("location");
|
|
|
|
+ // 如果出现多个布控区域范围存在重叠,并且命中点位也恰巧出现在重叠区域的极端情况,目前则只保存命中第一个布控区域时的一份数据,不再继续判断
|
|
|
|
+ if(Constants.NUM_0 == geoType){
|
|
|
|
+ JSONObject loc = locationSet.getJSONObject(0);
|
|
|
|
+ String centerLon84 = loc.getString("lon");
|
|
|
|
+ String centerLat84 = loc.getString("lat");
|
|
|
|
+ String radius = loc.getString("radius");
|
|
|
|
+ if(GeoUtils.isPointInCircle(Double.valueOf(wd), Double.valueOf(jd), Double.valueOf(centerLat84), Double.valueOf(centerLon84), Double.valueOf(radius)) && gjsjDateObj.compareTo(bkkssj) >= 0 && gjsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ if(Constants.QYBH_TJS.equals(areaCode)){
|
|
|
|
+ yjxxsm.append("进入本地预警");
|
|
|
|
+ } else {
|
|
|
|
+ yjxxsm.append("进入敏感区域");
|
|
|
|
+ }
|
|
|
|
+ yjxxsm.append(" - 抓拍机名称:");
|
|
|
|
+ yjxxsm.append(zpjmc);
|
|
|
|
+ yjxxsm.append(",告警人员证件号码:");
|
|
|
|
+ yjxxsm.append(gjryZjhm);
|
|
|
|
+ yjxxsm.append(",告警时间:");
|
|
|
|
+ yjxxsm.append(gjsj);
|
|
|
|
+ yjxxsm.append(",人脸图片文件路径:");
|
|
|
|
+ yjxxsm.append(rltpwjlj);
|
|
|
|
+ yjxxsm.append(",位置信息:");
|
|
|
|
+ yjxxsm.append(addressName);
|
|
|
|
+ if(!Constants.QYBH_TJS.equals(areaCode)){
|
|
|
|
+ yjxxsm.append(",命中区域:");
|
|
|
|
+ yjxxsm.append(areaName);
|
|
|
|
+ }
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, gjryZjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, gjsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jd, wd, currentTime, currentTime, null, null, null, areaName, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ List<Coordinate> coordinates = new ArrayList<>();
|
|
|
|
+ for (Object item : locationSet) {
|
|
|
|
+ JSONObject loc = (JSONObject) item;
|
|
|
|
+ String vertexLon84 = loc.getString("lon");
|
|
|
|
+ String vertexLat84 = loc.getString("lat");
|
|
|
|
+ coordinates.add(new Coordinate(Double.valueOf(vertexLon84), Double.valueOf(vertexLat84)));
|
|
|
|
+ }
|
|
|
|
+ if(GeoUtils.isPointInPolygon(coordinates, new Coordinate(Double.valueOf(jd), Double.valueOf(wd))) && gjsjDateObj.compareTo(bkkssj) >= 0 && gjsjDateObj.compareTo(bkjssj) <= 0){
|
|
|
|
+ StringBuilder yjxxsm = new StringBuilder();
|
|
|
|
+ if(Constants.QYBH_TJS.equals(areaCode)){
|
|
|
|
+ yjxxsm.append("进入本地预警");
|
|
|
|
+ } else {
|
|
|
|
+ yjxxsm.append("进入敏感区域");
|
|
|
|
+ }
|
|
|
|
+ yjxxsm.append(" - 抓拍机名称:");
|
|
|
|
+ yjxxsm.append(zpjmc);
|
|
|
|
+ yjxxsm.append(",告警人员证件号码:");
|
|
|
|
+ yjxxsm.append(gjryZjhm);
|
|
|
|
+ yjxxsm.append(",告警时间:");
|
|
|
|
+ yjxxsm.append(gjsj);
|
|
|
|
+ yjxxsm.append(",人脸图片文件路径:");
|
|
|
|
+ yjxxsm.append(rltpwjlj);
|
|
|
|
+ yjxxsm.append(",位置信息:");
|
|
|
|
+ yjxxsm.append(addressName);
|
|
|
|
+ if(!Constants.QYBH_TJS.equals(areaCode)){
|
|
|
|
+ yjxxsm.append(",命中区域:");
|
|
|
|
+ yjxxsm.append(areaName);
|
|
|
|
+ }
|
|
|
|
+ warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, gjryZjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, gjsjDateObj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKeyDept(zrdwbm), zrbmbm, CommonUtil.getConfValueByKeyDept(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jd, wd, currentTime, currentTime, null, null, null, areaName, addressName, yjlx, Constants.YJLX_DRYJ, null, null});
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // ========================= 批量入库符合条件的预警数据
|
|
|
|
+ if(!warningInfoList.isEmpty()){
|
|
|
|
+ batchSaveNum = ctrlDao.batchInsertWarningInfo(warningInfoList);
|
|
|
|
+ }
|
|
|
|
+ log.info("【QBEQSJYCTRL - 单人预警消费者服务】 当次消费到的数据量:{},符合条件保存入库的数据量:{}", warningInfoListOri.size(), batchSaveNum);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|