package org.springblade.modules.equipage.controller;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONException;
|
import net.sf.json.JSONObject;
|
import org.springblade.common.utils.HttpReqUtil;
|
import org.springblade.common.utils.Md5SignUtil;
|
import org.springblade.core.mp.support.Condition;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.modules.FTP.FtpUtil;
|
import org.springblade.modules.equipage.service.CarService;
|
import org.springblade.modules.location.entity.LiveLocation;
|
import org.springblade.modules.location.entity.Locus;
|
import org.springblade.modules.location.service.LiveLocationService;
|
import org.springblade.modules.location.service.LocusService;
|
import org.springblade.modules.system.entity.User;
|
import org.springblade.modules.system.service.IUserService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.io.IOException;
|
import java.text.DateFormat;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
@Component
|
public class fixed {
|
private static final DateFormat JSON = null;
|
@Autowired
|
private LiveLocationService liveLocationService;
|
@Autowired
|
private IUserService userService;
|
@Autowired
|
private LocusService locusService;
|
@Autowired
|
private CarService carService;
|
|
/**
|
* 押运人员
|
*
|
* @return
|
* @throws Exception
|
*/
|
//@Scheduled(cron = "0 */1 * * * ?")
|
public void Peo() throws Exception {
|
String url = "http://223.82.109.183:2080/Escort/getgis.php";
|
//查询有押运人员的数据
|
List<Map<String, Object>> list = userService.selectEquipent();
|
for (int i = 0; i < list.size(); i++) {
|
//实时位置实体类
|
LiveLocation liveLocation = new LiveLocation();
|
liveLocation.setType(1);
|
String id = list.get(i).get("id").toString();
|
liveLocation.setWorkerId(id);
|
Map<String, Object> params = new HashMap<>();
|
String equipmentCode = list.get(i).get("code").toString();
|
//设备imei号
|
params.put("acc", equipmentCode);
|
String res = null;
|
res = HttpReqUtil.getInstance().doPost(url, params, null);
|
JSONArray jsonArray = JSONArray.fromObject(res);
|
JSONArray sortedJsonArray = new JSONArray();
|
List<JSONObject> jsonValues = new ArrayList<JSONObject>();
|
for (int j = 0; j < jsonArray.size(); j++) {
|
jsonValues.add(jsonArray.getJSONObject(j));
|
}
|
Collections.sort(jsonValues, new Comparator<JSONObject>() {
|
private static final String KEY_NAME = "date";
|
String string1;
|
String string2;
|
|
@Override
|
public int compare(JSONObject a, JSONObject b) {
|
try {
|
string1 = a.getString(KEY_NAME).replaceAll("-", "");
|
string2 = b.getString(KEY_NAME).replaceAll("-", "");
|
} catch (JSONException e) {
|
// 处理异常
|
}
|
//这里是按照时间逆序排列,不加负号为正序排列
|
return -string1.compareTo(string2);
|
}
|
});
|
for (int c = 0; c < jsonArray.size(); c++) {
|
sortedJsonArray.add(jsonValues.get(c));
|
}
|
//经度
|
String gis_jd = sortedJsonArray.getJSONObject(0).getString("gis_jd");
|
//纬度
|
String gis_wd = sortedJsonArray.getJSONObject(0).getString("gis_wd");
|
String date = sortedJsonArray.getJSONObject(0).getString("date");
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
Date dates = formatter.parse(date);
|
//经度
|
liveLocation.setLongitude(gis_jd);
|
liveLocation.setLatitude(gis_wd);
|
//纬度
|
liveLocation.setRecordTime(dates);
|
//先查询是否已有实时位置信息,如果有,则更新,没有则插入
|
LiveLocation liveLocationInfo = liveLocationService.getLiveLocationInfo(liveLocation);
|
boolean status = false;
|
if (null == liveLocationInfo) {
|
//新增
|
status = liveLocationService.save(liveLocation);
|
//数据推送
|
String s1 =
|
"insert into sys_live_location(id,type,worker_id,longitude,latitude,record_time,location) " +
|
"values(" + "'" + liveLocation.getId() + "'" + "," +
|
"'" + liveLocation.getType() + "'" + "," +
|
"'" + liveLocation.getWorkerId() + "'" + "," +
|
"'" + liveLocation.getLongitude() + "'" + "," +
|
"'" + liveLocation.getLatitude() + "'" + "," +
|
"'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocation.getRecordTime()) + "'" + "," +
|
"'" + liveLocation.getLocation() + "'" + ")";
|
FtpUtil.sqlFileUpload(s1);
|
} else {
|
status = liveLocationService.updateById(liveLocationInfo);
|
//内网同步
|
String s1 =
|
"update sys_live_location set type = " + "'" + liveLocationInfo.getType() + "'" +
|
",worker_id = " + "'" + liveLocationInfo.getWorkerId() + "'" +
|
",longitude = " + "'" + liveLocationInfo.getLongitude() + "'" +
|
",latitude = " + "'" + liveLocationInfo.getLatitude() + "'" +
|
",record_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocationInfo.getRecordTime()) + "'" +
|
",location = " + "'" + liveLocationInfo.getLocation() + "'" +
|
" " + "where id = " + "'" + liveLocationInfo.getId() + "'";
|
FtpUtil.sqlFileUpload(s1);
|
}
|
}
|
}
|
|
/**
|
* 押运人员轨迹
|
*
|
* @return
|
* @throws Exception
|
*/
|
//@Scheduled(cron = "0 */1 * * * ?")
|
public void Peog() throws Exception {
|
String url = "http://47.104.104.46/api/client/getgistrack.php";
|
Calendar calendar = Calendar.getInstance();
|
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
//查询有押运人员的数据
|
List<Map<String, Object>> list = userService.selectEquipent();
|
for (int i = 0; i < list.size(); i++) {
|
//实时位置实体类
|
Locus locus = new Locus();
|
locus.setType(1);
|
String id = list.get(i).get("id").toString();
|
locus.setWorkerId(id);
|
Map<String, Object> params = new HashMap<>();
|
String equipmentCode = list.get(i).get("code").toString();
|
//设备imei号
|
params.put("number", 7730);
|
params.put("acc", 7731);
|
params.put("startTime", df.format(calendar.getTime()));
|
params.put("endTime", df.format(new Date()));
|
String res = null;
|
res = HttpReqUtil.getInstance().doPost(url, params, null);
|
String a="["+res+"]";
|
JSONArray jsonArray = JSONArray.fromObject(a);
|
String track = jsonArray.getJSONObject(0).get("track").toString();
|
JSONArray jsonArray1 = JSONArray.fromObject(track);
|
for (int j = 0; j < jsonArray1.size(); j++) {
|
String gis_jd = jsonArray1.getJSONObject(j).get("gis_jd").toString();
|
String gis_wd = jsonArray1.getJSONObject(j).get("gis_wd").toString();
|
String date = jsonArray1.getJSONObject(j).get("date").toString();
|
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
try {
|
//使用SimpleDateFormat的parse()方法生成Date
|
Date dates = sf.parse(date);
|
locus.setRecordTime(dates);
|
//打印Date
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
locus.setLongitude(gis_jd);
|
locus.setLatitude(gis_wd);
|
locusService.save(locus);
|
// //数据推送
|
// String s1 = "insert into sys_locus(id,type,worker_id,longitude,latitude,record_time) " +
|
// "values(" + "'" + locus.getId() + "'" + "," +
|
// "'" + locus.getType() + "'" + "," +
|
// "'" + locus.getWorkerId() + "'" + "," +
|
// "'" + locus.getLongitude() + "'" + "," +
|
// "'" + locus.getLatitude() + "'" + "," +
|
// "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(locus.getRecordTime()) + "'" + ")";
|
// FtpUtil.sqlFileUpload(s1);
|
}
|
}
|
}
|
|
|
/**
|
* 车辆实时位置
|
*/
|
//@Scheduled(cron = "0 */1 * * * ?")
|
public void locationcar() {
|
String url = "http://dvopenapi.aimap.net.cn/openapi/device/location";
|
String res = null;
|
List<Map<Object, Object>> maps = carService.selectCar();
|
for (int i = 0; i < maps.size(); i++) {
|
Map<String, Object> params = new HashMap<>();
|
params.put("imei", maps.get(i).get("code").toString());
|
params.put("appId", "PO00000761");
|
params.put("timestamp", System.currentTimeMillis());
|
String secert = "dXRGb2pRNVdWOGQ3d1ouV29UYzc1MnJaUnBwTzUx";
|
String computeSign = "";
|
try {
|
computeSign = Md5SignUtil.signRequest(params, secert);
|
} catch (IOException e1) {
|
e1.printStackTrace();
|
}
|
params.put("sign", computeSign);
|
try {
|
res = HttpReqUtil.getInstance().doPost(url, params, null);
|
String a = "[" + res + "]";
|
JSONArray jsonArray = JSONArray.fromObject(a);
|
String data = jsonArray.getJSONObject(0).get("data").toString();
|
String b = "[" + data + "]";
|
JSONArray jsonArrayb = JSONArray.fromObject(b);
|
String x = jsonArrayb.getJSONObject(0).get("x").toString();
|
String y = jsonArrayb.getJSONObject(0).get("y").toString();
|
String timestamp = jsonArrayb.getJSONObject(0).get("timestamp").toString();
|
//实时位置实体类
|
LiveLocation liveLocation = new LiveLocation();
|
liveLocation.setType(2);
|
String carnumber = maps.get(i).get("carnumber").toString();
|
liveLocation.setWorkerId(carnumber);
|
//经度
|
liveLocation.setLongitude(x);
|
//纬度
|
liveLocation.setLatitude(y);
|
Date date = timeStamp2Date(timestamp);
|
liveLocation.setRecordTime(date);
|
//先查询是否已有实时位置信息,如果有,则更新,没有则插入
|
LiveLocation liveLocationInfo = liveLocationService.getLiveLocationInfo(liveLocation);
|
boolean status = false;
|
if (null == liveLocationInfo) {
|
//新增
|
status = liveLocationService.save(liveLocation);
|
//数据推送
|
String s1 =
|
"insert into sys_live_location(id,type,worker_id,longitude,latitude,record_time,location) " +
|
"values(" + "'" + liveLocation.getId() + "'" + "," +
|
"'" + liveLocation.getType() + "'" + "," +
|
"'" + liveLocation.getWorkerId() + "'" + "," +
|
"'" + liveLocation.getLongitude() + "'" + "," +
|
"'" + liveLocation.getLatitude() + "'" + "," +
|
"'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocation.getRecordTime()) + "'" + "," +
|
"'" + liveLocation.getLocation() + "'" + ")";
|
FtpUtil.sqlFileUpload(s1);
|
} else {
|
status = liveLocationService.updateById(liveLocationInfo);
|
//内网同步
|
String s1 =
|
"update sys_live_location set type = " + "'" + liveLocation.getType() + "'" +
|
",worker_id = " + "'" + liveLocation.getWorkerId() + "'" +
|
",longitude = " + "'" + liveLocation.getLongitude() + "'" +
|
",latitude = " + "'" + liveLocation.getLatitude() + "'" +
|
",record_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(liveLocation.getRecordTime()) + "'" +
|
",location = " + "'" + liveLocation.getLocation() + "'" +
|
" " + "where id = " + "'" + liveLocation.getId() + "'";
|
FtpUtil.sqlFileUpload(s1);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
public static Date timeStamp2Date(String time) {
|
Long timeLong = Long.parseLong(time);
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00");//要转换的时间格式
|
Date date;
|
try {
|
date = sdf.parse(sdf.format(timeLong));
|
return date;
|
} catch (ParseException e) {
|
e.printStackTrace();
|
return null;
|
}
|
|
}
|
|
/**
|
* 查询车辆轨迹
|
*/
|
//@Scheduled(cron = "0 */1 * * * ?")
|
public void locationhistoryTrack() {
|
Calendar calendar = Calendar.getInstance();
|
/* HOUR_OF_DAY 指示一天中的小时 */
|
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);
|
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHH");
|
String url = "http://dvopenapi.aimap.net.cn/openapi/device/historyTrack";
|
String res = null;
|
List<Map<Object, Object>> maps = carService.selectCar();
|
for (int i = 0; i < maps.size(); i++) {
|
Map<String, Object> params = new HashMap<>();
|
params.put("imei", maps.get(i).get("code").toString());
|
params.put("beginTime", df.format(calendar.getTime()));
|
params.put("endTime", df.format(new Date()));
|
params.put("rectify", 0);
|
params.put("callbackUrl", "http://2h3f861221.wicp.vip/locus/SaveUrl");
|
params.put("callbackId", maps.get(i).get("carnumber").toString());
|
params.put("appId", "PO00000761");
|
params.put("timestamp", System.currentTimeMillis());
|
String secert = "dXRGb2pRNVdWOGQ3d1ouV29UYzc1MnJaUnBwTzUx";
|
String computeSign = "";
|
try {
|
computeSign = Md5SignUtil.signRequest(params, secert);
|
} catch (IOException e1) {
|
e1.printStackTrace();
|
}
|
params.put("sign", computeSign);
|
try {
|
res = HttpReqUtil.getInstance().doPost(url, params, null);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|
|
|
}
|