1、优化推送逻辑
This commit is contained in:
parent
eed05660ab
commit
d62777bc91
@ -62,7 +62,7 @@ public class Forwarder {
|
|||||||
* @param fwdNameType,推送设备名:deviceid或fwdid或projectid-sector-name
|
* @param fwdNameType,推送设备名:deviceid或fwdid或projectid-sector-name
|
||||||
* @param cycle,发送周期
|
* @param cycle,发送周期
|
||||||
*/
|
*/
|
||||||
void init(String fwdGroupId, String desc, Integer tenantId, byte fwdNameType, int cycle){
|
public void init(String fwdGroupId, String desc, Integer tenantId, byte fwdNameType, int cycle){
|
||||||
this.fwdGroupId = fwdGroupId;
|
this.fwdGroupId = fwdGroupId;
|
||||||
this.description = desc;
|
this.description = desc;
|
||||||
this.tenantId = tenantId;
|
this.tenantId = tenantId;
|
||||||
@ -90,10 +90,18 @@ public class Forwarder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void forwardCurrentGnss() {
|
||||||
|
if(forwardGnssRecords(LocalDateTime.now(), null)){
|
||||||
|
// 推送失败记录、补发记录
|
||||||
|
ThreadManager.getScheduledThreadPool().schedule(() -> {
|
||||||
|
this.forwardHistoryGnss();
|
||||||
|
},100, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 推送指定企业、设备ID、时间的GNSS记录,查找指定时间前cycle分钟的有效数据推送
|
* 推送指定企业、设备ID、时间的GNSS记录,查找指定时间前cycle分钟的有效数据推送
|
||||||
* @param sendTime:要推送的记录的时间
|
* @param sendTime:要推送的记录的时间
|
||||||
* @param resendRecord:重发记录
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private boolean forwardGnssRecords(LocalDateTime sendTime, ResendRecord resendRecord) {
|
private boolean forwardGnssRecords(LocalDateTime sendTime, ResendRecord resendRecord) {
|
||||||
@ -101,24 +109,45 @@ public class Forwarder {
|
|||||||
String beginTime = sendTime.minusMinutes(fwdCycleMinutes).format(formatter);
|
String beginTime = sendTime.minusMinutes(fwdCycleMinutes).format(formatter);
|
||||||
|
|
||||||
// 查找属于指定推送组的设备列表
|
// 查找属于指定推送组的设备列表
|
||||||
/* QueryWrapper<GnssDevice> queryWrapper = new QueryWrapper<>();
|
List<GnssDeviceJoin> gnssDeviceList;
|
||||||
if(deviceId != null){
|
MPJQueryWrapper jquery = null;
|
||||||
queryWrapper.eq("deviceid", deviceId);
|
|
||||||
}
|
if(resendRecord!=null && resendRecord.getDeviceid()!=null){
|
||||||
queryWrapper.eq("fwd_group_id", fwdGroupId)
|
jquery = new MPJQueryWrapper<GnssDevice> ()
|
||||||
.or()
|
|
||||||
.eq("fwd_group_id2", fwdGroupId);
|
|
||||||
List<GnssDevice> gnssDeviceList = deviceMapper.selectList(queryWrapper);
|
|
||||||
*/
|
|
||||||
MPJQueryWrapper jquery = new MPJQueryWrapper<GnssDevice> ()
|
|
||||||
.selectAll(GnssDevice.class)
|
.selectAll(GnssDevice.class)
|
||||||
.select("d.latitude as latitude")
|
.select("d.latitude as latitude")
|
||||||
.select("d.longitude as longitude")
|
.select("d.longitude as longitude")
|
||||||
.leftJoin("gnssstatus d on t.deviceid = d.deviceid")
|
.leftJoin("gnssstatus d on t.deviceid = d.deviceid")
|
||||||
.eq("fwd_group_id", fwdGroupId)
|
.and(warpper->warpper.eq("fwd_group_id", fwdGroupId)
|
||||||
.or()
|
.or()
|
||||||
.eq("fwd_group_id2", fwdGroupId);
|
.eq("fwd_group_id2", fwdGroupId)).
|
||||||
List<GnssDeviceJoin> gnssDeviceList = deviceMapper.selectJoinList(GnssDeviceJoin.class, jquery);
|
eq("deviceid", resendRecord.getDeviceid());
|
||||||
|
}
|
||||||
|
else if(resendRecord!=null && resendRecord.getProjectid()!=null){
|
||||||
|
jquery = new MPJQueryWrapper<GnssDevice> ()
|
||||||
|
.selectAll(GnssDevice.class)
|
||||||
|
.select("d.latitude as latitude")
|
||||||
|
.select("d.longitude as longitude")
|
||||||
|
.leftJoin("gnssstatus d on t.deviceid = d.deviceid")
|
||||||
|
.and(warpper->warpper.eq("fwd_group_id", fwdGroupId)
|
||||||
|
.or()
|
||||||
|
.eq("fwd_group_id2", fwdGroupId))
|
||||||
|
.and(warpper->warpper.eq("project_id",resendRecord.getProjectid())
|
||||||
|
.or()
|
||||||
|
.eq("project2_id",resendRecord.getProjectid()));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
jquery = new MPJQueryWrapper<GnssDevice> ()
|
||||||
|
.selectAll(GnssDevice.class)
|
||||||
|
.select("d.latitude as latitude")
|
||||||
|
.select("d.longitude as longitude")
|
||||||
|
.leftJoin("gnssstatus d on t.deviceid = d.deviceid")
|
||||||
|
.and(warpper->warpper.eq("fwd_group_id", fwdGroupId)
|
||||||
|
.or()
|
||||||
|
.eq("fwd_group_id2", fwdGroupId));
|
||||||
|
}
|
||||||
|
gnssDeviceList = deviceMapper.selectJoinList(GnssDeviceJoin.class, jquery);
|
||||||
|
logger.debug("candidate fwd devices {}", gnssDeviceList.size());
|
||||||
|
|
||||||
// 查询最近半小时的GNSS记录
|
// 查询最近半小时的GNSS记录
|
||||||
QueryWrapper<GnssCalcData> gnssQueryWrapper = new QueryWrapper<>();
|
QueryWrapper<GnssCalcData> gnssQueryWrapper = new QueryWrapper<>();
|
||||||
@ -131,7 +160,9 @@ public class Forwarder {
|
|||||||
if(resendRecord != null && resendRecord.getDeviceid()!=null){
|
if(resendRecord != null && resendRecord.getDeviceid()!=null){
|
||||||
gnssQueryWrapper.eq("deviceid", resendRecord.getDeviceid());
|
gnssQueryWrapper.eq("deviceid", resendRecord.getDeviceid());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<GnssCalcData> locationRecords = gnssDataMapper.selectList(gnssQueryWrapper);
|
List<GnssCalcData> locationRecords = gnssDataMapper.selectList(gnssQueryWrapper);
|
||||||
|
logger.debug("candidate fwd records {}", locationRecords.size());
|
||||||
if(locationRecords.size() == 0) return false;
|
if(locationRecords.size() == 0) return false;
|
||||||
|
|
||||||
// 构造按项目id分类的GNSS记录
|
// 构造按项目id分类的GNSS记录
|
||||||
@ -216,15 +247,15 @@ public class Forwarder {
|
|||||||
fwdResult = false;
|
fwdResult = false;
|
||||||
fwdRecord.setResult(FwdRecord.RESULT_FAILED);
|
fwdRecord.setResult(FwdRecord.RESULT_FAILED);
|
||||||
// 新增重发记录
|
// 新增重发记录
|
||||||
resendRecord = new ResendRecord();
|
ResendRecord resendRecord1 = new ResendRecord();
|
||||||
resendRecord.setProjectid(projectId);
|
resendRecord1.setProjectid(projectId);
|
||||||
resendRecord.setTenantid(tenantId);
|
resendRecord1.setTenantid(tenantId);
|
||||||
resendRecord.setCreatetime(LocalDateTime.now());
|
resendRecord1.setCreatetime(LocalDateTime.now());
|
||||||
resendRecord.setStarttime(sendTime);
|
resendRecord1.setStarttime(sendTime);
|
||||||
resendRecord.setEndtime(sendTime);
|
resendRecord1.setEndtime(sendTime);
|
||||||
resendRecord.setFwd_group_id(fwdGroupId);
|
resendRecord1.setFwd_group_id(fwdGroupId);
|
||||||
resendRecord.setState(ResendRecord.STATE_FWD_FAILED);
|
resendRecord1.setState(ResendRecord.STATE_FWD_FAILED);
|
||||||
resendRecordMapper.insert(resendRecord);
|
resendRecordMapper.insert(resendRecord1);
|
||||||
}
|
}
|
||||||
fwdRecordsMapper.insert(fwdRecord);
|
fwdRecordsMapper.insert(fwdRecord);
|
||||||
}
|
}
|
||||||
@ -239,14 +270,6 @@ public class Forwarder {
|
|||||||
return fwdResult;
|
return fwdResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
void forwardCurrentGnss() {
|
|
||||||
if(forwardGnssRecords(LocalDateTime.now(),null)) {
|
|
||||||
// 推送失败记录、补发记录
|
|
||||||
ThreadManager.getScheduledThreadPool().schedule(() -> {
|
|
||||||
this.forwardHistoryGnss();
|
|
||||||
},100, TimeUnit.SECONDS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void forwardHistoryGnss() {
|
void forwardHistoryGnss() {
|
||||||
// 1.从转发记录表里检索待补传记录时间表,含设备Id,时间段
|
// 1.从转发记录表里检索待补传记录时间表,含设备Id,时间段
|
||||||
@ -257,7 +280,7 @@ public class Forwarder {
|
|||||||
queryWrapper.ge("createtime", LocalDateTime.now().minusDays(30));
|
queryWrapper.ge("createtime", LocalDateTime.now().minusDays(30));
|
||||||
List<ResendRecord> resendRecordsList = resendRecordMapper.selectList(queryWrapper);
|
List<ResendRecord> resendRecordsList = resendRecordMapper.selectList(queryWrapper);
|
||||||
|
|
||||||
if(resendRecordsList!=null){
|
if(resendRecordsList!=null && resendRecordsList.size()>0){
|
||||||
//修改状态
|
//修改状态
|
||||||
UpdateWrapper<ResendRecord> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<ResendRecord> updateWrapper = new UpdateWrapper<>();
|
||||||
updateWrapper.eq("fwd_group_id",fwdGroupId);
|
updateWrapper.eq("fwd_group_id",fwdGroupId);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user