@@ -42,28 +42,31 @@ public class GZHeartJob extends QuartzJobBean { | |||||
String phone = device.getPhone(); | String phone = device.getPhone(); | ||||
GpsDeviceStatus gpsDeviceStatus = statusMapper.selectByImei(imei); | GpsDeviceStatus gpsDeviceStatus = statusMapper.selectByImei(imei); | ||||
int pow = 50; | int pow = 50; | ||||
int online = 0; | |||||
if(gpsDeviceStatus != null){ | if(gpsDeviceStatus != null){ | ||||
String statusStr = gpsDeviceStatus.getDeviceStatus(); | String statusStr = gpsDeviceStatus.getDeviceStatus(); | ||||
IOTDeviceStatus status = IOTDeviceStatus.build(statusStr); | IOTDeviceStatus status = IOTDeviceStatus.build(statusStr); | ||||
pow = status.getBattery(); | pow = status.getBattery(); | ||||
online = status.getOnline(); | |||||
} | |||||
if(online == 1){ | |||||
DianxinGzDeviceConfig config = configMapper.selectByImei(imei); | |||||
GZHeart heart = new GZHeart(); | |||||
GZDevicePower power = new GZDevicePower(); | |||||
power.setPower(pow); | |||||
power.setCharge(false); | |||||
heart.setPower(power); | |||||
GZDeviceStatus gzStatus = new GZDeviceStatus(); | |||||
heart.setStatus(gzStatus); | |||||
heart.setSignalIntensity(70); | |||||
try { | |||||
byte[] res = httpUtil.send(imei, phone, heart); | |||||
} catch (IOException e) { | |||||
e.printStackTrace(); | |||||
} | |||||
} | } | ||||
DianxinGzDeviceConfig config = configMapper.selectByImei(imei); | |||||
GZHeart heart = new GZHeart(); | |||||
GZDevicePower power = new GZDevicePower(); | |||||
power.setPower(pow); | |||||
power.setCharge(false); | |||||
heart.setPower(power); | |||||
GZDeviceStatus gzStatus = new GZDeviceStatus(); | |||||
heart.setStatus(gzStatus); | |||||
heart.setSignalIntensity(70); | |||||
try { | |||||
byte[] res = httpUtil.send(imei, phone, heart); | |||||
// System.out.println(ByteUtil.bytesToHexString(res)); | |||||
} catch (IOException e) { | |||||
e.printStackTrace(); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -4,9 +4,12 @@ package com.ssjl.zhaobiao.guizhou.quartz.job; | |||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.ssjl.zhaobiao.guizhou.entity.DianxinGzDeviceConfig; | import com.ssjl.zhaobiao.guizhou.entity.DianxinGzDeviceConfig; | ||||
import com.ssjl.zhaobiao.guizhou.entity.GZMessage.GZLocationInterval; | import com.ssjl.zhaobiao.guizhou.entity.GZMessage.GZLocationInterval; | ||||
import com.ssjl.zhaobiao.guizhou.entity.GpsDeviceStatus; | |||||
import com.ssjl.zhaobiao.guizhou.entity.IOT.Api.IotApiResponse; | import com.ssjl.zhaobiao.guizhou.entity.IOT.Api.IotApiResponse; | ||||
import com.ssjl.zhaobiao.guizhou.entity.IOT.IOTDeviceStatus; | |||||
import com.ssjl.zhaobiao.guizhou.entity.IOTDevice; | import com.ssjl.zhaobiao.guizhou.entity.IOTDevice; | ||||
import com.ssjl.zhaobiao.guizhou.repository.DianxinGzDeviceConfigMapper; | import com.ssjl.zhaobiao.guizhou.repository.DianxinGzDeviceConfigMapper; | ||||
import com.ssjl.zhaobiao.guizhou.repository.GpsDeviceStatusMapper; | |||||
import com.ssjl.zhaobiao.guizhou.utils.IOTApiUtil; | import com.ssjl.zhaobiao.guizhou.utils.IOTApiUtil; | ||||
import com.ssjl.zhaobiao.guizhou.utils.LocationUtil; | import com.ssjl.zhaobiao.guizhou.utils.LocationUtil; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
@@ -31,6 +34,8 @@ public class GZLocationSend extends QuartzJobBean { | |||||
LocationUtil locationUtil; | LocationUtil locationUtil; | ||||
@Autowired | @Autowired | ||||
IOTApiUtil iotApiUtil; | IOTApiUtil iotApiUtil; | ||||
@Autowired | |||||
GpsDeviceStatusMapper gpsDeviceStatusMapper; | |||||
@Value("${guizhou.device.testList}") | @Value("${guizhou.device.testList}") | ||||
String testList; | String testList; | ||||
@@ -40,31 +45,40 @@ public class GZLocationSend extends QuartzJobBean { | |||||
List<IOTDevice> deviceList = JSON.parseArray(testList, IOTDevice.class); | List<IOTDevice> deviceList = JSON.parseArray(testList, IOTDevice.class); | ||||
LocalDateTime time = LocalDateTime.now(); | LocalDateTime time = LocalDateTime.now(); | ||||
for (int i = 0; i < deviceList.size(); i++) { | for (int i = 0; i < deviceList.size(); i++) { | ||||
int online = 0; | |||||
IOTDevice device = deviceList.get(i); | IOTDevice device = deviceList.get(i); | ||||
try{ | |||||
// 找到上次发送的时间 | |||||
LocalDateTime lastTime = locationUtil.getTime(device.getImei()); | |||||
if(lastTime == null){ | |||||
lastTime = LocalDateTime.of(2020, 1 ,1,1,1); | |||||
} | |||||
DianxinGzDeviceConfig dianxinGzDeviceConfig = dianxinGzDeviceConfigMapper.selectByImei(device.getImei()); | |||||
List<GZLocationInterval> intervalList = GZLocationInterval.build(dianxinGzDeviceConfig.getLocationInterval()); | |||||
int interval = GZLocationInterval.timeInterval(time, intervalList); | |||||
if(interval == 0){ | |||||
// 不发送 | |||||
continue; | |||||
} | |||||
// 按时间段设计,下次发送的时间 | |||||
if(lastTime.plusMinutes(interval).isAfter(time)){ | |||||
continue; | |||||
GpsDeviceStatus deviceStatus = gpsDeviceStatusMapper.selectByImei(device.getImei()); | |||||
if(deviceStatus != null){ | |||||
IOTDeviceStatus status = IOTDeviceStatus.build(deviceStatus.getDeviceStatus()); | |||||
online = status.getOnline(); | |||||
} | |||||
if(online == 1){ | |||||
try{ | |||||
// 找到上次发送的时间 | |||||
LocalDateTime lastTime = locationUtil.getTime(device.getImei()); | |||||
if(lastTime == null){ | |||||
lastTime = LocalDateTime.of(2020, 1 ,1,1,1); | |||||
} | |||||
DianxinGzDeviceConfig dianxinGzDeviceConfig = dianxinGzDeviceConfigMapper.selectByImei(device.getImei()); | |||||
List<GZLocationInterval> intervalList = GZLocationInterval.build(dianxinGzDeviceConfig.getLocationInterval()); | |||||
int interval = GZLocationInterval.timeInterval(time, intervalList); | |||||
if(interval == 0){ | |||||
// 不发送 | |||||
continue; | |||||
} | |||||
// 按时间段设计,下次发送的时间 | |||||
if(lastTime.plusMinutes(interval).isAfter(time)){ | |||||
continue; | |||||
} | |||||
// 当前时间已达到,则发起即时定位,由于即时定位平台要等待定时数据,耗时很长,因而要开一条线程 | |||||
getLocation(device.getImei()); | |||||
// 更新发送时间 | |||||
locationUtil.saveTime(device.getImei(), time); | |||||
}catch (Exception e){ | |||||
e.printStackTrace(); | |||||
} | } | ||||
// 当前时间已达到,则发起即时定位,由于即时定位平台要等待定时数据,耗时很长,因而要开一条线程 | |||||
getLocation(device.getImei()); | |||||
// 更新发送时间 | |||||
locationUtil.saveTime(device.getImei(), time); | |||||
}catch (Exception e){ | |||||
e.printStackTrace(); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -2,8 +2,11 @@ package com.ssjl.zhaobiao.guizhou.quartz.job; | |||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.ssjl.zhaobiao.guizhou.entity.GZMessage.GZAskSetting; | import com.ssjl.zhaobiao.guizhou.entity.GZMessage.GZAskSetting; | ||||
import com.ssjl.zhaobiao.guizhou.entity.GpsDeviceStatus; | |||||
import com.ssjl.zhaobiao.guizhou.entity.IOT.IOTDeviceStatus; | |||||
import com.ssjl.zhaobiao.guizhou.entity.IOTDevice; | import com.ssjl.zhaobiao.guizhou.entity.IOTDevice; | ||||
import com.ssjl.zhaobiao.guizhou.handle.GZResponseHandle; | import com.ssjl.zhaobiao.guizhou.handle.GZResponseHandle; | ||||
import com.ssjl.zhaobiao.guizhou.repository.GpsDeviceStatusMapper; | |||||
import com.ssjl.zhaobiao.guizhou.utils.ByteUtil; | import com.ssjl.zhaobiao.guizhou.utils.ByteUtil; | ||||
import com.ssjl.zhaobiao.guizhou.utils.GZHttpUtil; | import com.ssjl.zhaobiao.guizhou.utils.GZHttpUtil; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
@@ -28,6 +31,8 @@ public class GZSyncSetting extends QuartzJobBean { | |||||
String testList; | String testList; | ||||
@Autowired | @Autowired | ||||
GZResponseHandle responseHandle; | GZResponseHandle responseHandle; | ||||
@Autowired | |||||
GpsDeviceStatusMapper statusMapper; | |||||
@Override | @Override | ||||
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { | protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { | ||||
@@ -35,17 +40,22 @@ public class GZSyncSetting extends QuartzJobBean { | |||||
List<IOTDevice> devices = JSON.parseArray(testList, IOTDevice.class); | List<IOTDevice> devices = JSON.parseArray(testList, IOTDevice.class); | ||||
for (int i = 0; i < devices.size(); i++) { | for (int i = 0; i < devices.size(); i++) { | ||||
IOTDevice device = devices.get(i); | IOTDevice device = devices.get(i); | ||||
GZAskSetting askSetting = new GZAskSetting(); | |||||
try { | |||||
byte[] res = httpUtil.send(device.getImei(), device.getPhone(), askSetting); | |||||
// System.out.println(ByteUtil.bytesToHexString(res)); | |||||
res = (byte[]) responseHandle.process(device.getImei(), res); | |||||
// System.out.println(ByteUtil.bytesToHexString(res)); | |||||
} catch (IOException e) { | |||||
e.printStackTrace(); | |||||
GpsDeviceStatus gpsDeviceStatus = statusMapper.selectByImei(device.getImei()); | |||||
int online = 0; | |||||
if(gpsDeviceStatus != null){ | |||||
String statusStr = gpsDeviceStatus.getDeviceStatus(); | |||||
IOTDeviceStatus status = IOTDeviceStatus.build(statusStr); | |||||
online = status.getOnline(); | |||||
} | |||||
if(online == 1){ | |||||
GZAskSetting askSetting = new GZAskSetting(); | |||||
try { | |||||
byte[] res = httpUtil.send(device.getImei(), device.getPhone(), askSetting); | |||||
res = (byte[]) responseHandle.process(device.getImei(), res); | |||||
} catch (IOException e) { | |||||
e.printStackTrace(); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } |
@@ -48,7 +48,7 @@ guizhou.device.version=RZL_2021 | |||||
#guizhou.factory=zhanneng | #guizhou.factory=zhanneng | ||||
#guizhou.device.model=TPE390 | #guizhou.device.model=TPE390 | ||||
#guizhou.device.version=TPE_0056 | #guizhou.device.version=TPE_0056 | ||||
guizhou.http.url=http://120.24.195.54:24183 | |||||
guizhou.http.url=http://139.9.239.216:7735 | |||||
guizhou.device.testList= [{ "imei": "862622050654340","phone": "" },{ "imei": "862622050317740","phone": "" }] | guizhou.device.testList= [{ "imei": "862622050654340","phone": "" },{ "imei": "862622050317740","phone": "" }] | ||||
guizhou.device.zhizhong=862622050654340,862622050317740 | guizhou.device.zhizhong=862622050654340,862622050317740 | ||||
guizhou.device.zhanneng=862622050925104,862622050927027 | guizhou.device.zhanneng=862622050925104,862622050927027 | ||||