package com.thhy.materials.modules.biz.helmet.scheduled; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.util.StringUtil; import com.thhy.materials.modules.biz.helmet.entity.*; import com.thhy.materials.modules.biz.helmet.service.HelmetService; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.logging.SimpleFormatter; import java.util.stream.Collectors; @Component public class PictureScheduled { @Resource private HelmetService helmetService; //图片记录 @Scheduled(fixedRate = 2000000) // 每隔3秒执行一次任务 public void task() { String token = token(); List helmetDevices = helmetService.helmetServiceList(); System.out.println(helmetDevices); for (THelmetDevice device : helmetDevices){ RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_FORM_URLENCODED_VALUE)); HttpEntity> mapHttpEntity = new HttpEntity<>(null, headers); String s = restTemplate.postForObject("https://caps.runde.pro/api/index.php?ctl=report&act=get_user_image&user_id="+device.getUserId()+"&p=1"+"&token="+token, mapHttpEntity, String.class); JSONObject jsonObject = JSONObject.parseObject(s); // System.out.println("----------------------------------------------"); // System.out.println("----------------------------------------------"); // System.out.println("----------------------------------------------"); // System.out.println("----------------------------------------------"); // System.out.println("----------------------------------------------"); // System.out.println(jsonObject); if(jsonObject.get("status").toString().equals("true")){ //图片值 List> data = (List>) jsonObject.get("data"); // System.out.println("----------map------------"); // System.out.println(data); for (Integer i =data.size()-1;i!=0;i--){ Integer iId = helmetService.userIdIid(Integer.valueOf(data.get(i).get("user_id").toString())); if((iId!=null && Integer.valueOf(data.get(i).get("i_id").toString())>iId)||iId==null){ THelmetPicture tHelmetPicture = new THelmetPicture(); tHelmetPicture.setUserId(Integer.valueOf(data.get(i).get("user_id").toString())); tHelmetPicture.setIId(Integer.valueOf(data.get(i).get("i_id").toString())); tHelmetPicture.setCreTime(data.get(i).get("time").toString()); tHelmetPicture.setXPoint(data.get(i).get("x_point").toString()); tHelmetPicture.setYPoint(data.get(i).get("y_point").toString()); tHelmetPicture.setImageUrl(data.get(i).get("image_url").toString()); Date date = new Date(Long.valueOf(data.get(i).get("time").toString()+"000")); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); tHelmetPicture.setSmTime(sdf.format(date)); helmetService.helmetPictureInsert(tHelmetPicture); } } } } } //报警记录 @Scheduled(fixedRate = 3000000) // 每隔3秒执行一次任务 public void taskReport() { String token = token(); // System.out.println(token); List helmetDevices = helmetService.helmetServiceList(); for (THelmetDevice device : helmetDevices){ RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_FORM_URLENCODED_VALUE)); HttpEntity> mapHttpEntity = new HttpEntity<>(null, headers); String s = restTemplate.postForObject("https://caps.runde.pro/api/index.php?ctl=task&act=get_sos_list&admin_id=8630&user_id="+device.getUserId()+"&p=1"+"&token="+token, mapHttpEntity, String.class); JSONObject jsonObject = JSONObject.parseObject(s); // System.out.println("-----------------------------------报警--------------------------"); // System.out.println(jsonObject); List> data = (List>) jsonObject.get("data"); if(data.size()>0){ for(int i=data.size()-1;i>0;i--){ Integer sId = helmetService.userIdReport(Integer.valueOf(data.get(i).get("user_id").toString())); if((sId!=null && Integer.valueOf(data.get(i).get("s_id").toString())>sId)||sId==null){ THelmetReport tHelmetReport = new THelmetReport(); tHelmetReport.setSId(Integer.valueOf(data.get(i).get("s_id").toString())); tHelmetReport.setUserId(Integer.valueOf(data.get(i).get("user_id").toString())); tHelmetReport.setUserName(data.get(i).get("user_name").toString()); tHelmetReport.setDeviceId(data.get(i).get("device_id").toString()); tHelmetReport.setXPoint(data.get(i).get("x_point").toString()); tHelmetReport.setYPoint(data.get(i).get("y_point").toString()); tHelmetReport.setCTime(data.get(i).get("c_time").toString()); tHelmetReport.setSosType(data.get(i).get("sos_type").toString()); tHelmetReport.setMsg(data.get(i).get("msg").toString()); //tHelmetReport.setImgurl(data.get(i).get("msg").toString()); tHelmetReport.setMobile(data.get(i).get("mobile").toString()); Date date = new Date(Long.valueOf(data.get(i).get("c_time").toString()+"000")); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); tHelmetReport.setSmTime(sdf.format(date)); helmetService.helmetReportInsert(tHelmetReport); } } } } } //轨迹记录 @Scheduled(fixedRate = 3000000) // 每隔3秒执行一次任务 public void taskTrajectory() throws ParseException { String token = token(); //System.out.println(token); List helmetDevices = helmetService.helmetServiceList(); Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); String format = simpleDateFormat.format(date); String format1 = simpleDateFormat1.format(date); Date str = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(format); Date end = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(format1); long time = str.getTime(); long time1 = end.getTime(); System.out.println(); String strTime = String.valueOf(time).substring(0, 10); String endTime = String.valueOf(time1).substring(0, 10); for(THelmetDevice helmetDevice : helmetDevices){ RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_FORM_URLENCODED_VALUE)); HttpEntity> mapHttpEntity = new HttpEntity<>(null, headers); String s = restTemplate.postForObject("https://caps.runde.pro/api/index.php?ctl=device&act=get_devices_online_time_days&admin_id=8630&user_id="+helmetDevice.getUserId()+"&stime="+strTime+"&etime="+endTime+"&token="+token, mapHttpEntity, String.class); JSONObject jsonObject = JSONObject.parseObject(s); //Object data = jsonObject.get("data"); // System.out.println("-----------轨迹回放--------------"); // System.out.println("-----------轨迹回放--------------"); // System.out.println("-----------轨迹回放--------------"); // System.out.println("-----------轨迹回放--------------"); // System.out.println("-----------轨迹回放--------------"); // System.out.println(jsonObject); Object date1 = jsonObject.get("data"); JSONObject jsonObject1 = JSONObject.parseObject(date1.toString()); List> list = (List>) jsonObject1.get("list"); for (Map map : list){ THelmetTrajectory helmetTrajectory = helmetService.trajectory(helmetDevice.getUserId(),map.get("ctime").toString()); if(helmetTrajectory==null){ THelmetTrajectory helmetTrajectory1 = new THelmetTrajectory(); helmetTrajectory1.setCtime(map.get("ctime").toString()); helmetTrajectory1.setUserId(helmetDevice.getUserId()); helmetTrajectory1.setLtime(map.get("ltime").toString()); helmetTrajectory1.setSec(map.get("sec").toString()); helmetService.helmetTrajectoryInsert(helmetTrajectory1); }else { helmetTrajectory.setLtime(map.get("ltime").toString()); helmetTrajectory.setSec(map.get("sec").toString()); helmetService.helmetTrajectoryUpdate(helmetTrajectory); } } RestTemplate restTemplate1 = new RestTemplate(); HttpHeaders headers1 = new HttpHeaders(); headers1.setContentType(MediaType.valueOf(MediaType.APPLICATION_FORM_URLENCODED_VALUE)); HttpEntity> mapHttpEntity1 = new HttpEntity<>(null, headers1); String s1 = restTemplate1.postForObject("https://caps.runde.pro/api/index.php?ctl=location&act=get_user_path_web&admin_id=8630&user_id="+helmetDevice.getUserId()+"&start="+strTime+"&end="+endTime+"&token="+token, mapHttpEntity1, String.class); JSONObject jsonObject11 = JSONObject.parseObject(s1); System.out.println("--------------------------轨迹 坐标点----------------------"); System.out.println("--------------------------轨迹 坐标点----------------------"); System.out.println("--------------------------轨迹 坐标点----------------------"); System.out.println("--------------------------轨迹 坐标点----------------------"); System.out.println("--------------------------轨迹 坐标点----------------------"); System.out.println("--------------------------轨迹 坐标点----------------------"); System.out.println(jsonObject11); if(jsonObject11.get("status").toString().equals("true")){ List> data = (List>) jsonObject11.get("data"); if(data.size()>0){ for (Map map :data){ String times = helmetService.helmetMotion(helmetDevice.getUserId()); if(StringUtil.isEmpty(times) || (!StringUtil.isEmpty(times)&& Integer.valueOf(map.get("time").toString())>Integer.valueOf(times))){ THelmetMotion tHelmetMotion = new THelmetMotion(); tHelmetMotion.setUserId(helmetDevice.getUserId()); tHelmetMotion.setXPoint(map.get("x_point").toString()); tHelmetMotion.setYPoint(map.get("y_point").toString()); tHelmetMotion.setTimes(map.get("time").toString()); tHelmetMotion.setCAngle(map.get("c_angle").toString()); tHelmetMotion.setCSpeed(map.get("c_speed").toString()); tHelmetMotion.setCTrust(map.get("c_trust").toString()); Date date2 = new Date(Long.valueOf(map.get("time").toString()+"000")); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); tHelmetMotion.setSmTime(sdf.format(date2)); helmetService.helmetMotionInsert(tHelmetMotion); } } } } } } public String token(){ //用户token RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_FORM_URLENCODED_VALUE)); HttpEntity> mapHttpEntity = new HttpEntity<>(null, headers); String s = restTemplate.postForObject("https://caps.runde.pro/api/index.php?ctl=tool&act=get_pkey&user_name=NJBBT8204&pwd=Bbt162534@", mapHttpEntity, String.class); JSONObject jsonObject = JSONObject.parseObject(s); Object data = jsonObject.get("data"); RestTemplate restTemplate1 = new RestTemplate(); HttpHeaders headers1 = new HttpHeaders(); headers1.setContentType(MediaType.valueOf(MediaType.APPLICATION_FORM_URLENCODED_VALUE)); HttpEntity> mapHttpEntity1 = new HttpEntity<>(null, headers1); String s1 = restTemplate1.postForObject("https://caps.runde.pro/api/index.php?ctl=tool&act=get_token&user_name=NJBBT8204&pkey="+data.toString(), mapHttpEntity1, String.class); JSONObject jsonObject1 = JSONObject.parseObject(s1); Object data1 = jsonObject1.get("token"); return data1.toString(); } }