Commit 8547a15c by liuys

新增时空伴随的任务采集界面,并且调整保存方法,将其保存到数据库,为脑图提供链接

parents f5df1a04 163e132b
package com.founder.interservice.bkxx.controller;
import com.founder.interservice.VO.ResultVO;
import com.founder.interservice.bkxx.model.BkTaskResult;
import com.founder.interservice.bkxx.model.Bkxx;
import com.founder.interservice.bkxx.model.BkxxFilter;
import com.founder.interservice.bkxx.repository.BkTaskResultRepository;
import com.founder.interservice.bkxx.repository.BkxxRepository;
import com.founder.interservice.bkxx.service.BkService;
import com.founder.interservice.exception.InterServiceException;
import com.founder.interservice.util.EasyUIPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@CrossOrigin //跨域访问
public class BkController {
@Autowired
BkService bkService;
@Autowired
BkxxRepository bkxxRepository;
@Autowired
BkTaskResultRepository bkTaskResultRepository;
/**
* 标识号布控 新增界面
* @return
*/
@RequestMapping(value = "/toBshbkInsertJsp")
public ModelAndView toBshbkInsertJsp(){
public ModelAndView toBshbkInsertJsp(Bkxx bkxx){
ModelAndView modelAndView = new ModelAndView("bkxx/bkxxInsert");
modelAndView.addObject("flag","bsh");
modelAndView.addObject("bkxx",bkxx);
return modelAndView;
}
/**
......@@ -43,9 +57,10 @@ public class BkController {
* @return
*/
@RequestMapping(value = "/toSssbbkInsertJsp")
public ModelAndView toSssbbkInsertJsp(){
public ModelAndView toSssbbkInsertJsp(Bkxx bkxx){
ModelAndView modelAndView = new ModelAndView("bkxx/bkxxInsert");
modelAndView.addObject("flag","sssb");
modelAndView.addObject("bkxx",bkxx);
return modelAndView;
}
@RequestMapping(value = "/toBkxxListJsp")
......@@ -53,9 +68,9 @@ public class BkController {
return "/bkxx/bkxxlist";
}
@RequestMapping(value ="/saveBkxx",method = {RequestMethod.POST})
@RequestMapping(value ="/saveBkxx",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public String saveBkxx( Bkxx bkxx){
public ResultVO saveBkxx( Bkxx bkxx){
return bkService.saveBkxx(bkxx);
}
......@@ -90,4 +105,34 @@ public class BkController {
return "success";
}
/**
* 根据案件编号查询布控任务信息
* @param asjbh
* @return
*/
@RequestMapping("/getBkxxList")
@ResponseBody
public List<Bkxx> getBkxxList(@Validated String asjbh){
System.out.println("asjbh ========================"+asjbh);
List<Bkxx> list = bkxxRepository.findBkxxsByAsjbh(asjbh);
System.out.println(list);
return list;
}
/**
* 查询结果集
* @param bkTaskResult
* @return
*/
@RequestMapping("/getBkResult")
@ResponseBody
public List<BkTaskResult> getBkResult(@Validated BkTaskResult bkTaskResult){
List<BkTaskResult> results = null;
if(bkTaskResult!=null&&bkTaskResult.getBkXxzjbh()!=null){
results = bkTaskResultRepository.findBkResultsByBkXxzjbh(bkTaskResult.getBkXxzjbh());
}
return results;
}
}
package com.founder.interservice.bkxx.model;
import lombok.Data;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.Proxy;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* Created by liuys on 20private String 9/3/6.
*/
@Entity
@Proxy(lazy = false)
@Data
@DynamicUpdate
@Table(name = "TB_BK_TASKRESULT")
public class BkTaskResult {
@Id
private String xxzjbh;
private String bkXxzjbh;
private String bkbsh;
private String bshlxdm;
private String bshlxmc;
private String asjbh;
private String sfzh;
private String sjhm;
private String imei;
private String imsi;
private String newLocation;
private String j;
private String w;
private Date zqsj;
private String flag;
private String car;
private Date djsj;
private Date xgsj;
}
......@@ -5,11 +5,17 @@ import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.Proxy;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Entity
@Proxy(lazy = false)
@Data
@DynamicUpdate
@Table(name = "TB_ST_BKXX")
public class Bkxx {
@Id
......@@ -32,10 +38,11 @@ public class Bkxx {
private String sqr_xm;
private String sqr_jh;
private String sqr_lxdh;
private String bkzt;//布控状态(0正常;1停止)
private String bkzt;//布控状态,01开始,02已有结果返回,03结束
@JSONField(format = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private java.util.Date djsj;//登记时间
private Date xgsj;//修改时间
private String bkqx;//布控期限
/* private String bkbsh; //布控标识号
......@@ -48,5 +55,4 @@ public class Bkxx {
private Date bkKssj;//布控开始时间*/
}
package com.founder.interservice.bkxx.repository;
import com.founder.interservice.bkxx.model.BkTaskResult;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
* Created by liuys on 2019/3/6.
*/
public interface BkTaskResultRepository extends JpaRepository<BkTaskResult,String>,JpaSpecificationExecutor<BkTaskResult> {
List<BkTaskResult> findBkResultsByBkXxzjbh(String bkXxzjbh);
}
......@@ -2,10 +2,12 @@ package com.founder.interservice.bkxx.repository;
import com.founder.interservice.bkxx.model.Bkxx;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
public interface BkxxRepository extends JpaRepository<Bkxx,String> {
public interface BkxxRepository extends JpaRepository<Bkxx,String> ,JpaSpecificationExecutor<Bkxx> {
List<Bkxx> findBkxxsByAsjbh(String asjbh);
}
package com.founder.interservice.bkxx.service;
import com.founder.interservice.VO.ResultVO;
import com.founder.interservice.bkxx.model.Bkxx;
import com.founder.interservice.bkxx.model.BkxxFilter;
import com.founder.interservice.exception.InterServiceException;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
......@@ -17,7 +16,7 @@ import java.util.Map;
*/
public interface BkService {
public String saveBkxx(Bkxx bkxx) ;
public ResultVO saveBkxx(Bkxx bkxx) ;
/**
* 分页查询布控信息
......
package com.founder.interservice.bkxx.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.founder.interservice.bkxx.model.BkTaskResult;
import com.founder.interservice.bkxx.model.Bkxx;
import com.founder.interservice.bkxx.repository.BkTaskResultRepository;
import com.founder.interservice.bkxx.repository.BkxxRepository;
import com.founder.interservice.model.Track;
import com.founder.interservice.service.IphoneTrackService;
import com.founder.interservice.util.DateUtil;
import com.founder.interservice.util.HttpUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.*;
/**
* Created by liuys on 2019/3/8.
*/
@Component
@Async
public class BkScheduleService {
@Autowired
BkxxRepository bkxxRepository;
@Autowired
BkServiceCommon bkServiceCommon;
@Autowired
BkTaskResultRepository bkTaskResultRepository;
/**
* 根据手机号码进行布控
*/
@Scheduled(initialDelay = 6000,fixedDelay = 8*60*60*1000)
//@Scheduled(initialDelay = 6000,fixedDelay = 60*1000)
public void SjhmBkTask(){
/**
* 根据手机号布控的任务
*/
//布控类型是手机号的,和布控状态是01的,即布控状态是开始的
//QQ和微信id布控,微信id/QQ跟其他的不同,
// 首先,录入QQ/微信id布控保存之后,即开始调一次布控结果,
// 然后运行布控线程,调回来结果,然后首次调用结果进行比对,
// 比对有新的结果,则属于出现新的设备号
List<Bkxx> allTasks = new ArrayList<>();
List<Bkxx> sjhmTasks = getBkTasks("001");
List<Bkxx> QQTasks = getBkTasks("002");
List<Bkxx> WXTasks = getBkTasks("003");
allTasks.addAll(sjhmTasks);
allTasks.addAll(QQTasks);
allTasks.addAll(WXTasks);
taskBody( allTasks);
}
/**
* 布控IMEI/IMSI,每天晚上运行一次
* 首先,录入IMEI/IMSI布控保存之后,即开始调一次布控结果,
* 然后运行布控线程,调回来结果,然后与首次调用结果进行比对,
* 比对有新的结果,则属于出现新的设备号
*/
//
//@Scheduled(initialDelay = 6000,fixedDelay = 8*60*60*1000)
@Scheduled(cron = "0 0 22 * * ?")
public void IMBSH(){
//布控类型是IMSI/IMEI的,和布控状态不是03的,即布控状态是开始的
List<Bkxx> allTasks = new ArrayList<>();
List<Bkxx> IMSITasks = getBkTasks("006");
List<Bkxx> IMEITasks = getBkTasks("007");
allTasks.addAll(IMSITasks);
allTasks.addAll(IMEITasks);
//更新需要停止的布控任务
taskBody(allTasks);
}
/**
* 任务执行体
*/
private void taskBody(List<Bkxx> allTasks) {
Date now = new Date();
//更新需要停止的布控任务
stopTak(allTasks,now);
//开始布控任务
startTask(allTasks);
}
/**
* 查询任务
* @param type
* @return
*/
private List<Bkxx> getBkTasks(String type) {
return bkxxRepository.findAll(new Specification<Bkxx>(){
@Override
public Predicate toPredicate(Root<Bkxx> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Predicate p1 = criteriaBuilder.equal(root.get("bkdxlx").as(String.class), type);
//任务状态不是03的,即状态是01(布控中),或者02(布控有结果)的
Predicate p2 = criteriaBuilder.notEqual(root.get("bkzt").as(String.class), "03");
criteriaQuery.where(criteriaBuilder.and(p1,p2));
return criteriaQuery.getRestriction();
}
});
}
/**
* 开启布控任务
*/
public void startTask(List<Bkxx> bkTaskList){
/**
* 首先对任务进行分类:
* 1.如果是手机号,通过手机号调取IMSI,然后通过IMSI调取最新轨迹
* 2.如果是QQ/微信号,--》先调用IMSI,然后调取最新位置和新出现的设置
* 3.如果是IMSI/IMEI,--》新出现的设备号(IMEI/IMSI?手机号),最新位置信息
* 4.如果是sfzh,先不作考虑
*/
String bshlx = "",bshhm = "";
for(Bkxx task:bkTaskList){
bshlx = task.getBkdxlx();
bshhm = task.getBkdxhm();
//通过手机号调取imsi
List<String> imsis= bkServiceCommon.queryTargetBshByBsh(bshhm,"IMSI");
if ("001".equals(bshlx)){
//1.手机号码,QQ/微信id调取轨迹信息
getTrackAndImsi(task, imsis);
}else if ("002".equals(bshlx)||"003".equals(bshlx)||"007".equals(bshlx)){
//2.QQ号码或者微信id/IMEI
//通过QQ号/微信id,其一:调取新出现的设备号,其二:最新位置
//新出现的设备号:即如果在布控过程中出现新的IMSI号,则属于新的设备号
//注:经过测试通过QQ/微信id只能调取到IMSI号码和其他信息,不能调取IMEI信息
//QQ/微信id跟手机号不同的地方在于,QQ/微信id需要判重,是否有新的设备号返还
//查看首次推送回的imsi,进行重复判断,即判断是不是新出现的imsi号码
getTrackAndImsi(task, imsis);
}else if ("006".equals(bshlx)){
//3.通过IMSI调取新出现的设备号IMEI
List<String> imeis= bkServiceCommon.queryTargetBshByBsh(bshhm,"IMEI");
List<String> oldImeis = new ArrayList<>();
if(imeis != null && !imeis.isEmpty()){
for (String imei:imeis) {
//每次保存之前进行重复判断
List<BkTaskResult> bkTaskResults = bkTaskResultRepository.findBkResultsByBkXxzjbh(task.getXxzjbh());
if(bkTaskResults!=null&&bkTaskResults.size()>0){
for (BkTaskResult oldResult:bkTaskResults) {
oldImeis.add(oldResult.getImei());
}
if(!oldImeis.contains(imei)){
//出现新的imei号码,即出现新的设备号
BkTaskResult bkTaskResult = bkServiceCommon.setBkResult( null, task, "",imei);
bkTaskResult.setFlag("01");
bkTaskResultRepository.save(bkTaskResult);
}
}else{
//此数据库中没有
//出现新的imei号码,即出现新的设备号
BkTaskResult bkTaskResult = bkServiceCommon.setBkResult( null, task, "",imei);
bkTaskResult.setFlag("01");
bkTaskResultRepository.save(bkTaskResult);
}
}
//保存结果之后,更新任务状态,表示有结果返回
task.setBkzt("02");
task.setXgsj(new Date());
bkxxRepository.save(task);
}
}
}
}
private void getTrackAndImsi(Bkxx task, List<String> imsis) {
if(imsis != null && !imsis.isEmpty()){
for (String imsi:imsis) {
//通过imsi调取最新位置
bkServiceCommon.saveNewLocation(task, imsi);
}
//保存结果之后,更新任务状态,表示有结果返回
task.setBkzt("02");
task.setXgsj(new Date());
bkxxRepository.save(task);
}
}
/**
* 停止需要停止的布控任务,即比对当前时间和布控任务结束时间,超过当前日期,则更新布控任务状态
* @param bkTaskList
*/
public void stopTak(List<Bkxx> bkTaskList,Date now){
Date jssj = null;
for (Bkxx task:bkTaskList) {
jssj = task.getBksj_end();
if (jssj.before(now)){
task.setBkzt("03");
task.setXgsj(now);
bkxxRepository.save(task);
}
}
}
}
package com.founder.interservice.bkxx.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.founder.interservice.bkxx.model.BkTaskResult;
import com.founder.interservice.bkxx.model.Bkxx;
import com.founder.interservice.bkxx.repository.BkTaskResultRepository;
import com.founder.interservice.bkxx.repository.BkxxRepository;
import com.founder.interservice.model.Track;
import com.founder.interservice.service.IphoneTrackService;
import com.founder.interservice.util.DateUtil;
import com.founder.interservice.util.HttpUtil;
import com.founder.interservice.util.KeyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Created by liuys on 2019/3/12.
*/
@Service
public class BkServiceCommon {
@Autowired
BkTaskResultRepository bkTaskResultRepository;
@Autowired
BkxxRepository bkxxRepository;
@Value("${wabigdata.gettrack.url}")
private String gettrack_url;
@Value("${wabigdata.objectrelation.url}")
private String objectrelation_url;
/**
* 设置布控结果参数
* @param newLocation
* @param task
* @param imsi
* @param imei
* @return
*/
public BkTaskResult setBkResult(Track newLocation, Bkxx task, String imsi, String imei) {
BkTaskResult bkTaskResult = new BkTaskResult();
bkTaskResult.setXxzjbh(KeyUtil.getUniqueKey("BK"));
bkTaskResult.setBkXxzjbh(task.getXxzjbh());
bkTaskResult.setAsjbh(task.getXxzjbh());
bkTaskResult.setBkbsh(task.getBkdxhm());
bkTaskResult.setBshlxdm(task.getBkdxlx());
bkTaskResult.setBshlxmc(task.getBkdxlxmc());
bkTaskResult.setImsi(imsi);
bkTaskResult.setImei(imei);
if(newLocation!=null){
bkTaskResult.setNewLocation(newLocation.getAddress());
bkTaskResult.setJ(newLocation.getJ());
bkTaskResult.setW(newLocation.getW());
bkTaskResult.setZqsj(new Date(newLocation.getTimestamp()));
}
return bkTaskResult;
}
/**
* 通过标识号调取目标标识号
* @param objValue
* @param bshType
* @return
*/
public List<String> queryTargetBshByBsh(String objValue, String bshType) {
JSONObject jsonObject = null;
String url = objectrelation_url+"&objectValue="+objValue;
String result = HttpUtil.getWaData(url);
//String result = "{\"results\":[{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"500231198608201872\",\"objectToType\":4315,\"objectToTypeName\":\"指纹编号\",\"objectToValue\":\"5002316713060001\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"刑总-海鑫-人员基本信息\",\"timestamp\":1545627478000},{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"500231198608201872\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"大情报-二代证办理信息\",\"timestamp\":1545627478000},{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"500231198608201872\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"大情报-二代证办理信息\",\"timestamp\":1545627478000},{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"500231198608201872\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"大情报-看守所人员信息\",\"timestamp\":1545627478000},{\"count\":375,\"first_timestamp\":1541832396000,\"objectFromType\":4314,\"objectFromTypeName\":\"IMSI\",\"objectFromValue\":\"460010858605079\",\"objectToType\":4315,\"objectToTypeName\":\"IMEI\",\"objectToValue\":\"864552034163647\",\"relativeType\":4403,\"relativeTypeName\":\"IMEI-IMSI\",\"source\":1376,\"sourceName\":\"4G-联通-QQ\",\"timestamp\":1545627478000}],\"status\":\"ok\"}";
if(null != result && result.startsWith("{")){
jsonObject = JSONObject.parseObject(result);
}
List<String> targetBsh = new ArrayList<>();
if(jsonObject != null){
JSONArray jsonArray = jsonObject.getJSONArray("results");
if(jsonArray != null && jsonArray.size() > 0){
for (int i = 0; i <= jsonArray.size() - 1;i++){
JSONObject resObj = jsonArray.getJSONObject(i);
String objectType = resObj.getString("objectToTypeName");
if (objectType != null && bshType.equals(objectType)){
String Bsh = (String) resObj.get("objectToValue");
if(!targetBsh.contains(Bsh)){
targetBsh.add(Bsh);
}
}
}
}
}
return targetBsh;
}
/**
* 保存最新位置,并判重
* @param task
* @param imsi
*/
public void saveNewLocation(Bkxx task, String imsi) {
String kssj = DateUtil.getDate().getTime()+"";
String jssj = DateUtil.convertStringToDate(DateUtil.beforeDate(-1).substring(0,10)).getTime()+"";
//每次保存之前进行重复判断
List<BkTaskResult> bkTaskResults = bkTaskResultRepository.findBkResultsByBkXxzjbh(task.getXxzjbh());
Track newLocation = getNewLocation(imsi,kssj,jssj);
List<String> oldImsis = new ArrayList<>();
if(bkTaskResults!=null&&bkTaskResults.size()>0){
for (BkTaskResult oldResult:bkTaskResults){
//将所有的旧的imsi存入list中
oldImsis.add(oldResult.getImsi());
if(imsi.equals(oldResult.getImsi())&&newLocation!=null){
oldResult.setNewLocation(newLocation.getAddress());
oldResult.setJ(newLocation.getJ());
oldResult.setW(newLocation.getW());
oldResult.setZqsj(new Date(newLocation.getTimestamp()));
bkTaskResultRepository.save(oldResult);
}
}
if(!oldImsis.contains(imsi)){
//当前imsi号不存在
BkTaskResult bkTaskResult = setBkResult( newLocation, task, imsi, "");
bkTaskResult.setFlag("01");
bkTaskResultRepository.save(bkTaskResult);
}
}else{
//关于此条数据,从来没有存储结果,无需判重,直接存储
BkTaskResult bkTaskResult = setBkResult( newLocation, task, imsi, "");
bkTaskResultRepository.save(bkTaskResult);
}
}
/**
* 通过imsi调取最新位置
* @param obj
* @param kssj
* @param jssj
*/
public Track getNewLocation(String obj,String kssj,String jssj){
String url = gettrack_url + "&objectValue="+obj+"&startTime="+kssj+"&endTime="+jssj;
String result = HttpUtil.getWaData(url);
Track newLocation = null;
JSONObject jsonObejct = null;
if(null != result && result.startsWith("{")){
jsonObejct = JSONObject.parseObject(result);
}
if(jsonObejct != null) {
JSONArray jsonArray = jsonObejct.getJSONArray("results");
if (jsonArray != null && jsonArray.size() > 0) {
List<Track> tracks = jsonArray.toJavaList(Track.class);
newLocation = tracks.get(0);
}
}
return newLocation;
}
public static void main(String[] args){
/* long now = 1547332440000l;
Date date = new Date(now);
System.out.println(date);*/
List<String> str = new ArrayList<>();
str.add("123");
str.add("456");
boolean s = str.contains("789");
String kssj = DateUtil.getDate().getTime()+"";
String jssj = DateUtil.convertStringToDate(DateUtil.beforeDate(-1).substring(0,10)).getTime()+"";
System.out.println(kssj);
System.out.println(jssj);
System.out.println(s);
}
}
package com.founder.interservice.bkxx.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.founder.interservice.VO.ResultVO;
import com.founder.interservice.bkxx.model.BkTaskResult;
import com.founder.interservice.bkxx.model.Bkxx;
import com.founder.interservice.bkxx.model.BkxxFilter;
import com.founder.interservice.bkxx.repository.BkTaskResultRepository;
import com.founder.interservice.bkxx.repository.BkxxRepository;
import com.founder.interservice.bkxx.service.BkService;
import com.founder.interservice.enums.ResultEnum;
import com.founder.interservice.exception.InterServiceException;
import com.founder.interservice.mapper.xzxt.BkxxMapper;
import com.founder.interservice.util.KeyUtil;
import com.founder.interservice.util.ResultVOUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -16,31 +23,110 @@ public class BkServiceImpl implements BkService{
@Autowired
private BkxxMapper bkxxMapper;
@Autowired
BkServiceCommon bkServiceCommon;
@Autowired
BkxxRepository bkxxRepository;
@Autowired
BkTaskResultRepository bkTaskResultRepository;
@Override
public String saveBkxx(Bkxx bkxx) {
public ResultVO saveBkxx(Bkxx bkxx) {
//先查询是否存在这条数据(案事件编号、布控人警号、布控标识号、布控类型)
//获取客户端查询条件
String flag="success";
JSONObject result = new JSONObject();
ResultVO resultVO = null;
try {
int bkxxs = bkxxMapper.selectBkxx(bkxx);
if(bkxxs<1){
bkxx.setXxzjbh(get32UUID());
String id = KeyUtil.getUniqueKey("BK");
bkxx.setXxzjbh(id);
bkxx.setDjsj(new Date());
bkxx.setBkzt("01");
bkxxRepository.save(bkxx);
}else{
flag = "error";//已存在
result.put("id", bkxx.getXxzjbh());
result.put("status", ResultEnum.SUCCESS.getCode());
result.put("message", "保存成功!");
/**
* 同时新增布控任务,这里需要作如下几件事:
* 其一:如果布控的是手机号码,无需干扰
* 其二:如果布控的是微信id/QQ,则首先需要调取一次其所关联的imsi信息,
* 然后保存结果
* 其三:如果是IMEI,则首先需要调取一次其所关联的imsi信息,
* 然后保存结果
* 其四:如果是IMSI,则首先需要调取一次其所关联的imei信息,
* 然后保存结果
* 001:手机号布控,002:QQ号码布控,003:微信id,004:身份证号,005:车牌号,006:IMSI,007:IMEI,008:护照,009:微信号码
*/
if ("002".equals(bkxx.getBkdxlx())||"003".equals(bkxx.getBkdxlx())||"007".equals(bkxx.getBkdxlx())){
//QQ号码/微信id/IMEI
List<String> imsis= bkServiceCommon.queryTargetBshByBsh(bkxx.getBkdxhm(),"IMSI");
List<String> oldImsis = new ArrayList<>();
if(imsis != null && !imsis.isEmpty()) {
for (String imsi : imsis) {
List<BkTaskResult> bkTaskResults = bkTaskResultRepository.findBkResultsByBkXxzjbh(bkxx.getXxzjbh());
if(bkTaskResults!=null&&bkTaskResults.size()>0){
for (BkTaskResult oldResult:bkTaskResults){
oldImsis.add(oldResult.getImsi());
}
if (!oldImsis.contains(imsi)){
//在库中不存在
BkTaskResult bkTaskResult = bkServiceCommon.setBkResult( null, bkxx, imsi, "");
bkTaskResultRepository.save(bkTaskResult);
}
}else{
//关于此数据,库中没有结果
BkTaskResult bkTaskResult = bkServiceCommon.setBkResult( null, bkxx, imsi, "");
bkTaskResultRepository.save(bkTaskResult);
}
}
}
}else if("006".equals(bkxx.getBkdxlx())){
//通过IMSI查询IMEI
List<String> imeis= bkServiceCommon.queryTargetBshByBsh(bkxx.getBkdxhm(),"IMSI");
List<String> oldImeis = new ArrayList<>();
if(imeis != null && !imeis.isEmpty()) {
for (String imei : imeis) {
List<BkTaskResult> bkTaskResults = bkTaskResultRepository.findBkResultsByBkXxzjbh(bkxx.getXxzjbh());
if(bkTaskResults!=null&&bkTaskResults.size()>0){
for (BkTaskResult oldResult:bkTaskResults){
oldImeis.add(oldResult.getImei());
}
if (oldImeis.contains(imei)){
//在库中不存在
BkTaskResult bkTaskResult = bkServiceCommon.setBkResult( null, bkxx, "", imei);
bkTaskResultRepository.save(bkTaskResult);
}
}else {
//关于此数据,库中没有结果
BkTaskResult bkTaskResult = bkServiceCommon.setBkResult( null, bkxx, "", imei);
bkTaskResultRepository.save(bkTaskResult);
}
}
}
}
} else {
result.put("id", null);
result.put("status", ResultEnum.PARAM_ERROR.getCode());
result.put("message", "数据已存在,不可重复!");
}
return flag;
}
//32位UUID
public static String get32UUID(){
UUID id=UUID.randomUUID();
String[] idd=id.toString().split("-");
return idd[0]+idd[1]+idd[2]+idd[3]+idd[4];
resultVO = ResultVOUtil.success(result);
}catch(Exception e){
e.printStackTrace();
resultVO = ResultVOUtil.error(ResultEnum.RESULT_ERROR.getCode(),ResultEnum.RESULT_ERROR.getMessage());
}
return resultVO;
}
/**
* 分页查询布控信息
* @param bkxxFilter
......
......@@ -28,7 +28,7 @@ public class CaseInformationContorller {
@ResponseBody
public JSONObject selectCaseInformationList(@RequestParam(value = "sfzh") String sfzh){
JSONObject resultObj = new JSONObject();
List<CaseInformation> caseInformationList = new ArrayList<>();
List<CaseInformation> caseInformationList = null;
try {
caseInformationList = caseInformationService.selectCaseInformationList(sfzh);
if(caseInformationList != null && !caseInformationList.isEmpty() ){
......
......@@ -15,7 +15,7 @@ import java.util.concurrent.Executors;
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
//设定一个长度10的定时任务线程池
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(20));
//设定一个长度50的定时任务线程池
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(50));
}
}
......@@ -3,14 +3,14 @@ package com.founder.interservice.controller;
import com.founder.interservice.enums.ResultEnum;
import com.founder.interservice.qgzyfw.action.CallDygabxxfw;
import com.founder.interservice.qgzyfw.domain.GabConfig;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -22,10 +22,11 @@ public class MinistrySuspectInfoController {
@Autowired
private GabConfig gabConfig;
@RequestMapping("/queryMinistrySuspectInfo")
@RequestMapping(value = "/queryMinistrySuspectInfo",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public JSONObject queryMinistrySuspectInfo(String sfzh){//ZHFZXYR_CYZJ_ZJHM 查询资源所需的条件 513624198110310011 510211198301103713 510218198208064953
JSONObject resultObj = new JSONObject();
System.out.println("resultObj============================="+resultObj);
List<Map<String,Object>> resultList = new ArrayList<Map<String, Object>>();
try {
//通过身份证号调取案事件编号list(asjbhList)
......@@ -35,10 +36,8 @@ public class MinistrySuspectInfoController {
JSONArray jsonArray = new JSONArray();
jsonArray.add(jsonObject);
Object[] os = jsonArray.toArray();
Map<String,Object> mapQg = new HashMap<String, Object>();
mapQg = call.getGabZyInfoByJyaq("fzxyr",os,gabConfig);
Map<String,Object> mapQg = call.getGabZyInfoByJyaq("fzxyr",os,gabConfig);
List<Map<String,Object>> asjbhList = (List<Map<String,Object>>)mapQg.get("dataResult");
System.out.println("------------------asjbhList(第一)------------------------"+ asjbhList);
//通过案事件编号调取案事件信息resultList
for (Map<String,Object> asjbh:asjbhList) {
JSONObject jsonObject1 = new JSONObject();
......@@ -46,14 +45,14 @@ public class MinistrySuspectInfoController {
JSONArray jsonArray1 = new JSONArray();
jsonArray1.add(jsonObject1);
Object[] objects = jsonArray1.toArray();
Map<String,Object> m = new HashMap<String, Object>();
m = call.getGabZyInfoByJyaq("asj",objects,gabConfig);
Map<String,Object> m = call.getGabZyInfoByJyaq("asj",objects,gabConfig);
int count = Integer.valueOf((String)m.get("account"));
List<Map<String,Object>> result = (List<Map<String,Object>>)m.get("dataResult");
for (int i=0;i<count;i++){
resultList.add(result.get(i));
}
}
System.out.println("resultList============================="+resultList);
if(!resultList.isEmpty() && resultList != null){
resultObj.put("code", ResultEnum.SUCCESS.getCode());
resultObj.put("message",ResultEnum.SUCCESS.getMessage());
......@@ -62,11 +61,10 @@ public class MinistrySuspectInfoController {
resultObj.put("message","无数据");
}
resultObj.put("dataList",resultList);
System.out.println("------------------返回dataList------------------------"+resultList);
} catch (Exception e) {
e.printStackTrace();
resultObj.put("code", ResultEnum.RESULT_ERROR.getCode());
resultObj.put("message",ResultEnum.RESULT_ERROR.getMessage());
e.printStackTrace();
}
return resultObj;
}
......
......@@ -280,17 +280,13 @@ public class CallDygabxxfw{
}
return datalist;
}
public Map<String, String> getDataMap() {
return DataMap;
}
public void setDataMap(Map<String, String> dataMap) {
DataMap = dataMap;
}
// @Override
public boolean hasPermission() {
// TODO Auto-generated method stub
return false;
}
}
......@@ -67,10 +67,13 @@ public class ScheduledService {
List<Predicate> list = new ArrayList<>();
Expression<String> exp = root.<String>get("state");
list.add(exp.in(Arrays.asList("QUEUEING","STARTING","RUNNING")));
Predicate p1 = criteriaBuilder.like(root.get("taskCaseId").as(String.class), "A%");
list.add(p1);
Predicate[] p = new Predicate[list.size()];
return criteriaBuilder.and(list.toArray(p));
}
});
System.out.println("taskList====================================="+taskList);
if(taskList != null && !taskList.isEmpty()){
String taskId = null,progress=null,state=null,result=null;Map<String,String> taskMap=null;
......
......@@ -20,65 +20,6 @@ public class TestSendTask {
private String REGION_ALANALYSIS_URL; //发送任务接口
@Value(value = "${wabigdata.trackTravelTogetherForPhoneTask.url}")
private String TOGETHER_TASK_URL;
/**
* 定时任务测试区域碰撞接口发送
* 定时线程 项目启动后两分钟后开始执行,每隔三分钟执行一次
*/
@Scheduled(initialDelay = 1000,fixedDelay = 300000) //项目启动后1秒开始执行 每个五分钟执行一次
public void doTestSendTask(){
System.out.println("测试线程开始执行");
long day1 = System.currentTimeMillis();
String param0 = "{\"taskName\":\"0308测试任务碰撞\",\"perform\":{\"expression\":\"A1∩A2\",\"regional\":[{\"startTime\":1552017600000,\"endTime\":1552028400000,\"name\":\"A1\",\"source\":[0],\"lc\":[{\"j\":106.45365179918545,\"w\":29.72276345368788},{\"j\":106.451926590033,\"w\":29.715865237868453},{\"j\":106.4610922150265,\"w\":29.713692156324868},{\"j\":106.46306846181835,\"w\":29.721531105706845}]},{\"startTime\":1551999600000,\"endTime\":1552003200000,\"name\":\"A2\",\"source\":[0],\"lc\":[{\"j\":106.47868907688176,\"w\":29.739880302076706},{\"j\":106.47495138004449,\"w\":29.73141713703786},{\"j\":106.4876030212831,\"w\":29.728832496999747},{\"j\":106.49098157454996,\"w\":29.73848800075083}]}]},\"taskCaseId\":\"A5002316100002010125009\"}";
String param1 = "{\"taskName\":\"0308测试数据2\",\"perform\":{\"expression\":\"A1∩A2∩A3\",\"regional\":[{\"startTime\":1551999600000,\"endTime\":1552006800000,\"name\":\"A1\",\"source\":[0],\"lc\":[{\"j\":106.48005544068074,\"w\":29.740317929307647},{\"j\":106.47717991858055,\"w\":29.733483884898916},{\"j\":106.487602981047,\"w\":29.729836485935863},{\"j\":106.49098157194565,\"w\":29.738551000033393}]},{\"startTime\":1552024800000,\"endTime\":1552032000000,\"name\":\"A2\",\"source\":[0],\"lc\":[{\"j\":106.45424901331486,\"w\":29.721526874468},{\"j\":106.45194961015589,\"w\":29.715507218808916},{\"j\":106.46251664004187,\"w\":29.71292474618398},{\"j\":106.46416978345204,\"w\":29.721141012674796}]},{\"startTime\":1552006800000,\"endTime\":1552014000000,\"name\":\"A3\",\"source\":[0],\"lc\":[{\"j\":106.58392451501742,\"w\":29.64318553331031},{\"j\":106.5831524663565,\"w\":29.636814327637232},{\"j\":106.59168777893633,\"w\":29.636053074748915},{\"j\":106.59156256674235,\"w\":29.64322514505666}]}]},\"taskCaseId\":\"A5002316100002010125009\"}";
String param2 = "{\"taskName\":\"0308测试数据4\",\"perform\":{\"expression\":\"A1∩A2∩A3∩A4\",\"regional\":[{\"startTime\":1551999600000,\"endTime\":1552006800000,\"name\":\"A1\",\"source\":[0],\"lc\":[{\"j\":106.48027044321213,\"w\":29.741696698155923},{\"j\":106.47574257055277,\"w\":29.732168337439152},{\"j\":106.48975961496463,\"w\":29.72908133193557},{\"j\":106.49392941328695,\"w\":29.738171047468047}]},{\"startTime\":1552017600000,\"endTime\":1552032000000,\"name\":\"A2\",\"source\":[0],\"lc\":[{\"j\":106.45439301623477,\"w\":29.722467721445025},{\"j\":106.45101436816898,\"w\":29.715069150192157},{\"j\":106.46266069910358,\"w\":29.712422607924626},{\"j\":106.46524813252731,\"w\":29.719884951342372}]},{\"startTime\":1552006800000,\"endTime\":1552014000000,\"name\":\"A3\",\"source\":[0],\"lc\":[{\"j\":106.58424758119362,\"w\":29.644001213955516},{\"j\":106.58291843613114,\"w\":29.63546456416532},{\"j\":106.59474361876339,\"w\":29.63510813983358},{\"j\":106.59467135759317,\"w\":29.644807140999305}]},{\"startTime\":1551931200000,\"endTime\":1551938400000,\"name\":\"A4\",\"source\":[0],\"lc\":[{\"j\":107.3790778161817,\"w\":30.309489039553455},{\"j\":107.37631263222399,\"w\":30.306961472257793},{\"j\":107.37931191647654,\"w\":30.304610307340198},{\"j\":107.38302982364938,\"w\":30.30771577718766}]}]},\"taskCaseId\":\"A5002316100002010125009\"}";
Random ra =new Random();
int i = ra.nextInt(2);
String taskId = null;
String name = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(new Date());
int qycount = 0;
switch(i){
case 0:
qycount = 2;
break;
case 1:
qycount = 3;
break;
case 2:
qycount = 4;
break;
}
try{
switch(i){
case 0:
taskId = HttpUtil.doPostJson(REGION_ALANALYSIS_URL,param0);
break;
case 1:
taskId = HttpUtil.doPostJson(REGION_ALANALYSIS_URL,param1);
break;
case 2:
taskId = HttpUtil.doPostJson(REGION_ALANALYSIS_URL,param2);
break;
}
String logValue = null;
if ("Rate Limit".equals(taskId) || "null".equals(taskId)) {
logValue="区域碰撞日志:区域个数:"+qycount + ";任务状态:FAIL;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}else if(taskId == null || "".equals(taskId)){
logValue="区域碰撞日志:区域个数:"+qycount + ";任务状态:TIMEOUT;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}else{
logValue="区域碰撞日志:区域个数:"+qycount + ";任务状态:SUCCESS;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}
writeProperties("regionalTaskLogFile.properties", name, logValue);
}catch (Exception e){
try{
e.printStackTrace();
String logValue="区域碰撞日志:区域个数:"+ qycount + ";任务状态:TIMEOUT;任务编号:null;用时"+(System.currentTimeMillis()-day1+"毫秒");
writeProperties("regionalTaskLogFile.properties", name, logValue);
}catch (Exception e1){
e1.printStackTrace();
}
}
}
@Scheduled(initialDelay = 2000,fixedDelay = 300000) //项目启动后两秒开始执行一次 每个五分钟执行一次
public void doTestTogetherSendTask(){
System.out.println("测试伴随线程开始执行");
......@@ -86,15 +27,15 @@ public class TestSendTask {
String taskId = null;
String name = "T"+new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(new Date());
try{
String url = TOGETHER_TASK_URL + "&objectType=" + "460029789430171"
+ "&objectValue=" + "4314"
String url = TOGETHER_TASK_URL + "&objectType=" + "4314"
+ "&objectValue=" + "460029789430171"
+ "&taskName="+"测试伴随任务"
+ "&taskCaseId=" + "A5001231231234234"
+ "&startTime=" + System.currentTimeMillis()
+ "&endTime=" + System.currentTimeMillis();
taskId = HttpUtil.getWaData(url);
String logValue = null;
if("Rate Limit".equals(taskId) || "null".equals(taskId)){
if("Rate Limit".equals(taskId.trim()) || "null".equals(taskId)){
logValue="伴随任务:任务状态:FAIL;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
}else if(taskId == null || "".equals(taskId)){
logValue="伴随任务:任务状态:TIMEOUT;任务编号:"+taskId+";用时"+(System.currentTimeMillis()-day1+"毫秒");
......
......@@ -208,6 +208,7 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
List<Track> tracks = jsonArray.toJavaList(Track.class);
List<TrackVO> trackVOs = new ArrayList<TrackVO>();
if(tracks != null && tracks.size() > 0){
tracks = removeTrack(tracks); //对数据进行去重
for (Track track : tracks ) {
if(track.getTimestamp() != 0){
track.setTimestr(DateUtil.getDateTime(new Date(track.getTimestamp())));
......@@ -270,7 +271,6 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
Track pTrack = new Track();
pTrack.setAddress(track.getAddress());
pTrack.setObjectvalue(track.getObjectvalue());
pTrack.setSource_md5(track.getSource_md5());
pTrack.setTimestamp(track.getTimestamp());
Example<Track> example = Example.of(pTrack);
boolean bol = trackRepository.exists(example);
......@@ -426,12 +426,9 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
r.setTimestamp(DateUtil.getDateTime(new Date(Long.valueOf(r.getTimestamp()))));
}
Relation relation = new Relation();
relation.setObjectfromtype(r.getObjectfromtype());
relation.setObjectfromvalue(r.getObjectfromvalue());
relation.setObjecttotype(r.getObjecttotype());
relation.setObjecttovalue(r.getObjecttovalue());
relation.setRelativetype(r.getRelativetype());
relation.setSource(r.getSource());
Example<Relation> example = Example.of(relation);
boolean bol = relationRepository.exists(example);
if(!bol){
......@@ -738,8 +735,7 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
private List<Relation> removeRelation(List<Relation> relations){
HashMap<String,Relation> tempMap = new HashMap<>();
for (Relation r : relations) {
String key = r.getObjectfromtype()+r.getObjectfromvalue()+r.getObjecttotype()+
r.getObjecttovalue()+r.getRelativetype()+r.getSource();
String key = r.getObjectfromvalue()+r.getObjecttovalue()+r.getRelativetype();
if(!tempMap.containsKey(key)){
tempMap.put(key, r);
}
......@@ -750,6 +746,26 @@ public class IphoneTrackServiceImpl implements IphoneTrackService {
}
return tempList;
}
/**
* 批量插入Track轨迹数据时,防止有重复的数据出现,报违反唯一标识错误
* 所以先对其进行去重
* @param tracks
* @return
*/
private List<Track> removeTrack(List<Track> tracks){
HashMap<String,Track> tempMap = new HashMap<>();
for (Track r : tracks) {
String key = r.getObjectvalue() + r.getTimestamp() + r.getAddress();
if(!tempMap.containsKey(key)){
tempMap.put(key, r);
}
}
List<Track> tempList = new ArrayList<>();
for(String key : tempMap.keySet()){
tempList.add(tempMap.get(key));
}
return tempList;
}
}
package com.founder.interservice.user.model;
import lombok.Data;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.util.Date;
/**
* @ClassName: UserContoller
* @Auther: 朱琳瑛
* @Description: java类作用描述
* @CreateDate: 2019-03-18 15:21
* @Version: 1.0
*/
@Data
@Entity
@Table(name = "TB_ST_USER")
@DynamicUpdate
public class User {
@Id
private String taskId; //任务编号
private String objectValue; //对象值
private String imsi; //imsi
private String objectType; //对象类型
private String taskName; //任务名称
private String taskCaseId; //案件编号
private String state; //任务状态
private String progress;// 任务进度
private Date startTime; //开始时间
private Date endTime; //结束时间
private String fsrjh;//发送人警号
private String fsrIdentity;//发送人身份证号
@Column(insertable = false)
private Date djsj; //登记时间
//单独给实体添加私有属性
@Transient
private int begin;
@Transient
private int end;
}
package com.founder.interservice.user.service;
/**
* @ClassName: UserService
* @Auther: 朱琳瑛
* @Description: java类作用描述
* @CreateDate: 2019-03-18 15:16
* @Version: 1.0
*/
public interface UserService {
}
package com.founder.interservice.user.service.impl;
import com.founder.interservice.user.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @ClassName: UserService
* @Auther: 朱琳瑛
* @Description: java类作用描述
* @CreateDate: 2019-03-18 15:19
* @Version: 1.0
*/
@Transactional
@Service
public class UserServiceImpl implements UserService {
/* @Value(value = "${wabigdata.trackTravelTogetherForPhoneTask.url}")
private String TOGETHER_TASK_URL;*/
}
......@@ -58,9 +58,9 @@ public class PropertieUtil {
// 获取配置文件
Properties pps = new Properties();
InputStream in = new BufferedInputStream(new FileInputStream(filePath));
pps.load(in);
pps.load(new InputStreamReader(in,"UTF-8"));
in.close();
OutputStream out = new FileOutputStream(filePath,true);//true表示追加打开,false表示每次都是清空重写
OutputStream out = new FileOutputStream(filePath);//true表示追加打开,false表示每次都是清空重写
// 设置配置名称和值
pps.setProperty(parameterName, parameterValue);
// comments 等于配置文件的注释
......
......@@ -52,29 +52,29 @@ xdhbigdata:
getCjDataServiceId: XDHWS0022
wabigdata:
objectrelation:
url: http://www.adu.cq:6080/api?name=objectRelation&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=objectRelation&key=62bf1b59c14bf770ccbc48767db26c48
gettrack:
url: http://www.adu.cq:6080/api?name=getTrack&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=getTrack&key=62bf1b59c14bf770ccbc48767db26c48
relationGetAll:
url: http://www.adu.cq:6080/api?name=relationGetAll&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=relationGetAll&key=62bf1b59c14bf770ccbc48767db26c48
pgis:
url: http://77.1.24.49:8080/lbs/poiController/poiMarkers
pgis_title:
url: http://77.1.24.49:8080/lbs?flag=search&jdObj=&wdObj=&inputFlag=&saveFlag=
#区域碰撞 相关的url
regionalAnalysisTask: #提交任务
url: http://www.adu.cq:6080/api?name=regionalAnalysisTask&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=regionalAnalysisTask&key=62bf1b59c14bf770ccbc48767db26c48
regionalAnalysisTaskStatus: #获取任务状态
url: http://www.adu.cq:6080/api?name=regionalAnalysisTaskStatus&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=regionalAnalysisTaskStatus&key=62bf1b59c14bf770ccbc48767db26c48
regionalAnalysisTaskInfo: #获取任务结果
url: http://www.adu.cq:6080/api?name=regionalAnalysisTaskInfo&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=regionalAnalysisTaskInfo&key=62bf1b59c14bf770ccbc48767db26c48
#IMSI伴随 相关的url
trackTravelTogetherForPhoneTask: #提交任务
url: http://www.adu.cq:6080/api?name=trackTravelTogetherForPhoneTask&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=trackTravelTogetherForPhoneTask&key=62bf1b59c14bf770ccbc48767db26c48
trackTravelTogetherForPhoneTaskStatus: #查询任务状态
url: http://www.adu.cq:6080/api?name=trackTravelTogetherForPhoneTaskStatus&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=trackTravelTogetherForPhoneTaskStatus&key=62bf1b59c14bf770ccbc48767db26c48
trackTravelTogetherForPhoneTaskInfo: #获取任务数据
url: http://www.adu.cq:6080/api?name=trackTravelTogetherForPhoneTaskInfo&key=62bf1b59c14bf770ccbc48767db26c48
url: http://77.19.1.20:8608/api?name=trackTravelTogetherForPhoneTaskInfo&key=62bf1b59c14bf770ccbc48767db26c48
#mysql sql打印
logging:
level:
......
......@@ -76,7 +76,7 @@
AND t.sqr_jh= #{sqr_jh, jdbcType=VARCHAR }
</if>
<if test="asjbh != null and asjbh != ''">
and t.ASJBH= #{ASJBH, jdbcType=VARCHAR }
and t.asjbh= #{asjbh, jdbcType=VARCHAR }
</if>
<if test="bkdxhm != null and bkdxhm != ''">
and t.bkdxhm= #{bkdxhm, jdbcType=VARCHAR }
......
......@@ -496,4 +496,77 @@ a.re_qs:hover{
}
table.datagrid-btable td[field="zlwh"] .datagrid-cell{
overflow: visible;
}
\ No newline at end of file
}
/*用户提示弹窗样式*/
.wrap_mask{
width:100%;
height:100%;
position:fixed;
top:0;
left:0;
background-color:rgba(0,0,0,0.5);
z-index:9998;
}
.xtyhts_wrap{
width:906px;
padding-bottom:25px;
background-color:#fff;
border-radius:10px;
-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.2);
-o-box-shadow: 0 1px 3px rgba(0,0,0,0.2);
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
-webkit-box-shadow: 0 2px 10px rgba(0,0,0,0.3);
position:fixed;
top:50%;
left:50%;
margin-top:-180px;
margin-left:-453px;
z-index:9999;
}
.xtyhts_wrap h1{
width:100%;
height:60px;
line-height:60px;
text-align:center;
font-size:20px;
border-bottom:1px solid #acc4cc;
vertical-align:middle;
}
.xtyhts_wrap h1 img{
vertical-align:middle;
margin-right:6px;
margin-bottom:3px;
}
.xtyhts_center{
width:90%;
margin:0 auto;
}
.xtyhts_wrap p{
font-size:16px;
color:#000;
line-height:34px;
}
.xtyhts_wrap p.xtyhts_center_p{
text-indent:2em;
line-height:30px;
}
.btn_div{
width:100%;
text-align:center;
margin-top:35px;
}
.xtyhts_wrap .close_btn{
display:inline-block;
text-align:center;
font-size:14px;
padding:8px 12px;
border:1px solid #ccc;
border-radius:8px;
background-color:#09f;
color:#fff;
}
.xtyhts_wrap .close_btn:hover{
background-color:#048be4;
}
/*用户提示弹窗样式*/
\ No newline at end of file
......@@ -109,14 +109,14 @@
dateType:'json',
data : $('#form1').serializeArray(),
success:function(data){
if(data=="success"){
$.messager.show({title:'提示',msg:'保存成功'});
if(data.data.id!=null){
$.messager.alert({title:'提示',msg:'保存成功'});
}else{
$.messager.show({title:'提示',msg:'数据已存在,不可重复提交'});
$.messager.alert({title:'提示',msg:'数据已存在,不可重复提交'});
}
},
error:function(e) {
$.messager.show({title:'提示',msg:"出错:"+e});
$.messager.alert({title:'提示',msg:"出错:"+e});
}
})
}
......
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S027',0);
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S027',0);
COMMIT;
-------------------------------------------------------------------------------------------
--创建布控信息表
CREATE TABLE XZXT.TB_BK_TASKRESULT
(
XXZJBH VARCHAR2(30 BYTE),
BK_XXZJBH VARCHAR2(30 BYTE),
BKBSH VARCHAR2(20),
BSHLXDM VARCHAR2(10 BYTE),
BSHLXMC VARCHAR2(50 BYTE),
ASJBH VARCHAR2(50 BYTE),
SFZH VARCHAR2(50 BYTE),
SJHM VARCHAR2(20 BYTE),
IMEI VARCHAR2(20 BYTE),
IMSI VARCHAR2(20 BYTE),
NEW_LOCATION VARCHAR2(200 BYTE),
J VARCHAR2(40 BYTE),
W VARCHAR2(40 BYTE),
ZQSJ DATE,
FLAG VARCHAR2(2 BYTE),
CAR VARCHAR2(20 BYTE),
DJSJ DATE DEFAULT sysdate,
XGSJ DATE DEFAULT sysdate
)TABLESPACE TBS_BIGDATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
COMMENT ON table XZXT.TB_BK_TASKRESULT is '布控信息表';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.XXZJBH IS '信息主键编号,主键';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.BK_XXZJBH IS '布控信息主键编号';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.BKBSH IS '标识号号码';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.BSHLXDM IS '标识号类型代码';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.BSHLXMC IS '标识号类型名称';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.ASJBH IS '案事件编号';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.SFZH IS '身份证号';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.SJHM IS '手机号码';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.IMEI IS 'IMEI号';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.IMSI IS 'IMSI号';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.NEW_LOCATION IS '最新位置';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.J IS '经度';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.W IS '纬度';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.ZQSJ IS '抓取时间';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.FLAG IS '是否是新出现的设备号(00,表示不是,01表示是新出现的设备号)';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.CAR IS '车牌号';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.DJSJ IS '登记时间';
COMMENT ON COLUMN XZXT.TB_BK_TASKRESULT.XGSJ IS '修改时间';
--创建主键
CREATE UNIQUE INDEX PK_BKTASKRESULT_XXZJBH ON XZXT.TB_BK_TASKRESULT
(XXZJBH)
LOGGING
TABLESPACE TBS_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
ALTER TABLE XZXT.TB_BK_TASKRESULT ADD (
CONSTRAINT PK_BKTASKRESULT_XXZJBH
PRIMARY KEY
(XXZJBH)
USING INDEX
TABLESPACE TBS_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
));
-------------------------------------------------------------------------------------------
UPDATE XZXT.SYS_DBLOG SET STATUS=1 WHERE SID='S027';
COMMIT;
\ No newline at end of file
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S028',0);
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S028',0);
COMMIT;
-------------------------------------------------------------------------------------------
-- Add/modify columns
alter table TB_ST_BKXX add XGSJ DATE;
-- Add comments to the columns
comment on column TB_ST_BKXX.XGSJ
is '修改时间';
-------------------------------------------------------------------------------------------
UPDATE XZXT.SYS_DBLOG SET STATUS=1 WHERE SID='S028';
COMMIT;
\ No newline at end of file
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S021',0);
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S021',0);
COMMIT;
-------------------------------------------------------------------------------------------
delete from relation a where (a.objectfromvalue,A.OBJECTTOVALUE,A.RELATIVETYPE) in (select OBJECTFROMVALUE,OBJECTTOVALUE,RELATIVETYPE from relation group by OBJECTFROMVALUE,OBJECTTOVALUE,RELATIVETYPE having count(*) > 1)
and ROWID not in (select min(ROWID) from relation group by OBJECTFROMVALUE,OBJECTTOVALUE,RELATIVETYPE having count(*) > 1);
drop index XZXT.inx_RelaFromToValue;
drop index XZXT.inx_rela_formval_totype;
CREATE UNIQUE INDEX XZXT.inx_RelaFromToValue ON XZXT.Relation
(OBJECTFROMVALUE,OBJECTTOVALUE,RELATIVETYPE)
LOGGING
TABLESPACE TBS_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
-------------------------------------------------------------------------------------------
UPDATE XZXT.SYS_DBLOG SET STATUS=1 WHERE SID='S021';
COMMIT;
\ No newline at end of file
INSERT INTO XZXT.SYS_DBLOG(SID,STATUS)VALUES('S030',0);
COMMIT;
-------------------------------------------------------------------------------------------
delete from Track a where (a.OBJECTVALUE,a.ADDRESS,A.TIMESTAMP) in (select OBJECTVALUE,ADDRESS,TIMESTAMP from Track group by OBJECTVALUE,ADDRESS,TIMESTAMP having count(*) > 1)
and ROWID not in (select min(ROWID) from Track group by OBJECTVALUE,ADDRESS,TIMESTAMP having count(*) > 1);
DROP INDEX XZXT.inx_TrackObjtvalTime;
CREATE UNIQUE INDEX XZXT.inx_TrackObjtvalTime ON XZXT.Track
(ADDRESS,OBJECTVALUE,TIMESTAMP)
LOGGING
TABLESPACE TBS_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOPARALLEL;
-----------------------------------------------------------------------
UPDATE XZXT.SYS_DBLOG SET STATUS=1 WHERE SID='S030';
COMMIT;
\ No newline at end of file
......@@ -30,9 +30,7 @@
</header>
<article class="main-cen-box">
<div class="cxtj">
<form name="wfqdzczlForm" id="form1" class="easyui-form" data-options="novalidate:true">
<input type = "hidden" name="yhCate" id = "yhCate" value="00" />
<input type = "hidden" name="projectName" id = "projectName" value="00" />
<form name="wfqdzczlForm" id="form1" class="easyui-form" data-options="">
<fieldset>
<legend>采集时空伴随任务信息 </legend>
<table>
......@@ -41,18 +39,19 @@
<td class="ar" width="13.3%">案事件编号:</td>
<td width="20%">
<span class="textbox">
<input type="text" id = "taskCaseId" name="taskCaseId" class="easyui-textbox" disabled="disabled" style="height:26px;" value="${taskCaseId}"/>
<input type="text" id = "" name="" class="easyui-textbox" disabled="disabled" style="height:26px;"/>
</span>
</td>
<td class="ar" width="13.3%">标识号:</td>
<td width="20%">
<span class="textbox" style="border:none">
<input type="text" id = "objectValue" name="objectValue" class="easyui-textbox" style="height:26px;" data-options="required:true"/>
<span class="textbox">
<input type="text" id = "" name="" class="easyui-textbox" style="height:26px;"/>
</span>
</td>
<td class="ar" width="13.3%">标识号类型:</td>
<td width="20%">
<span class="textbox" style="border:none;">
<span class="textbox">
<select name = "bkdxlx" id = "bkdxlx" class="easyui-combobox" style="height:26px;">
<option value=""></option>
<option value="3996">手机号码</option>
......@@ -65,20 +64,20 @@
<tr>
<td class="ar">任务名称:</td>
<td>
<span class="textbox" style="border:none;">
<input type="text" id = "taskName" name="taskName" class="easyui-textbox" style="height:26px;" data-options="required:true"/>
<span class="textbox">
<input type="text" id = "" name="" class="easyui-textbox" style="height:26px;"/>
</span>
</td>
<td class="ar">伴随开始时间:</td>
<td>
<span class="textbox" style="border:none;">
<input id="datepicker1" name="sTime" class="val easyui-validatebox Wdate zdy-wdate" type="text" onkeypress="return checkDateFmt();" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',maxDate:'%y-%M-%d'})" data-options="required:true"/>
<span class="textbox">
<input id="datepicker1" name="" class="Wdate" type="text" onkeypress="return checkDateFmt();" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',maxDate:'%y-%M-%d'})"/>
</span>
</td>
<td class="ar">伴随结束时间:</td>
<td>
<span class="textbox" style="border:none;">
<input id="datepicker2" name="eTime" class="val easyui-validatebox Wdate zdy-wdate" type="text" onkeypress="return checkDateFmt();" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'datepicker1\')}',maxDate:'#F{$dp.$D(\'datepicker1\',{d:+1})&&\'%y-%M-%d\'}'})" data-options="required:true"/>
<span class="textbox">
<input id="datepicker2" name="" class="Wdate" type="text" onkeypress="return checkDateFmt();" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'datepicker1\')}',maxDate:'#F{$dp.$D(\'datepicker1\',{d:+1})&&\'%y-%M-%d\'}'})"/>
</span>
</td>
</tr>
......@@ -86,20 +85,20 @@
<td class="ar" width="13.3%">发送人警号:</td>
<td width="20%">
<span class="textbox">
<input type="text" name="fsrjh" disabled="disabled" id = "fsrjh" value="${fsrjh}" class="easyui-textbox" style="height:26px;">
<input type="text" name="" disabled="disabled" id = "" class="easyui-textbox" style="height:26px;">
</span>
</td>
<td class="ar" width="13.3%">发送人身份证号:</td>
<td width="20%">
<span class="textbox">
<input type="text" disabled="disabled" class="easyui-textbox" name="fsrIdentity" id = "fsrIdentity" value="${fsrIdentity}" style="height:26px;">
<input type="text" disabled="disabled" class="easyui-textbox" name="" id = "" style="height:26px;">
</span>
</td>
</tr>
<tr>
<td colspan="6" style="text-align: center;height:50px;">
<a class="btn_a btn_search easyui-linkbutton" onclick="submit()" >发送</a>
<a class="btn_a btn_empty easyui-linkbutton" onclick="dreset()">重置</a>
<a class="btn_a btn_search easyui-linkbutton" onclick="" >发送</a>
<a class="btn_a btn_empty easyui-linkbutton" onclick="">重置</a>
<input type="hidden" id="bkdxlxmc" name="bkdxlxmc" />
<input type="hidden" id="asjbh" name="asjbh" />
<input type="hidden" id="sqr_sfzh" name="sqr_sfzh" />
......@@ -145,6 +144,5 @@
return h+"-"+m+"-"+d+" "+hh+":"+mm+":"+ss;
}
</script>
<script type="text/javascript" src="/js/bsrwInsert.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -114,21 +114,21 @@
<td class="ar" width="13.3%"><span class="red">*</span>申请人_姓名:</td>
<td width="20%">
<span class="textbox" style="border:none">
<input type="text" name="sqr_xm" id = "sqr_xm" class="easyui-textbox" style="height:26px;" data-options="required:true">
<input type="text" name="sqr_xm" id = "sqr_xm" readonly value="${bkxx.sqr_xm}" class="easyui-textbox" style="height:26px;" data-options="required:true">
</span>
</td>
<td class="ar" width="13.3%">申请人_警号:</td>
<td width="20%">
<span class="textbox">
<input type="text" name="sqr_jh" id = "sqr_jh">
<input type="text" name="sqr_jh" id = "sqr_jh" readonly value="${bkxx.sqr_jh}">
</span>
</td>
<%-- <td class="ar" width="13.3%">登记时间:</td>
<td class="ar" width="13.3%"><span class="red">*</span>申请人_联系电话:</td>
<td width="20%">
<span class="textbox">
<input id="djsj" name="djsj" class="Wdate" type="text" onkeypress="return checkDateFmt();" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd'})"/>
<span class="textbox" style="border:none">
<input type="text" name="sqr_lxdh" id = "sqr_lxdh" value="${bkxx.sqr_lxdh}" class="easyui-textbox" style="height:26px;" data-options="required:true">
</span>
</td>--%>
</td>
</tr>
<tr>
......@@ -159,10 +159,9 @@
<a class="btn_a btn_search easyui-linkbutton" onclick="submit()" >保存 </a>
<a class="btn_a btn_empty easyui-linkbutton" onclick="doClear()">重置</a>
<input type="hidden" id="bkdxlxmc" name="bkdxlxmc" />
<input type="hidden" id="asjbh" name="asjbh" />
<input type="hidden" id="sqr_sfzh" name="sqr_sfzh" />
<input type="hidden" id="sqr_lxdh" name="sqr_lxdh" />
<input type="hidden" id="bkzt" name="bkzt" value="0"/>
<input type="hidden" id="asjbh" name="asjbh" value="${bkxx.asjbh}"/>
<input type="hidden" id="sqr_sfzh" name="sqr_sfzh" value="${bkxx.sqr_sfzh}"/>
</td>
</tr>
</tbody>
......@@ -184,5 +183,34 @@
<script type="text/javascript" src="/common/datepicker/WdatePicker.js"></script>
<script type="text/javascript" src="/common/datepicker/calendar.js"></script>
<script type="text/javascript" src="/js/bkxxInsert.js"></script>
<!--用户提示-->
<div id="yhtsxx" style="display: none">
<div class="wrap_mask" id="wrap_mask_yhts"></div>
<div class="xtyhts_wrap" id="xtyhts_wrap">
<h1>布控注意事项</h1>
<div class="xtyhts_center">
<p>1、强轨迹布控和关联关系两种布控的数据源均来自于网安,都属于涉密机数据,在使用过程中一定要慎重,严防数据泄露。</p>
<p>2、强轨迹布控:系统会在布控时间段内,每天早晨6时、中午14时、夜间23时调取可疑标识号的最新轨迹数据,并将其推荐。</p>
<p>3、关联关系布控:系统会在布控时间段内,每天夜间23点调取可疑标识号的关联数据,并自动计算比对,将新增的关联数据推荐。</p>
<p>4、系统会自动将布控结果以短消息推送给布控人,如果不想接受短消息,手机号码可选择不填。</p>
</div>
<div class="btn_div"><a class="close_btn" onclick='hideTip();'>我 知 道 了</a></div>
</div>
</div>
<script type="text/javascript">
//用户提示弹窗
$(function() {
$("#yhtsxx").show();
});
function hideTip(){
$("#wrap_mask_yhts").fadeOut();
$("#xtyhts_wrap").fadeOut();
}
</script>
</body>
</html>
\ No newline at end of file
......@@ -123,7 +123,7 @@
{title : '操作', field : 'opt', align : 'center',width:'10%', formatter :
function(value, row, index) {
var str = "";
if(row.bkzt==0){
if(row.bkzt=='01'){
str += '<span class="icon_chakan"><a href="javascript:ck(\'' + row.xxzjbh +'\');" title="撤控">撤控</a></span>';
}
return str;
......@@ -157,7 +157,7 @@
if (data) {
$.ajax({
url : "updateBkztByXxzjbh",
data:{xxzjbh:xxzjbh,bkzt:1},
data:{xxzjbh:xxzjbh,bkzt:'04'},
success:function(data){
if(data=="success"){
$.messager.alert({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment