1、优化推送。如果一次推送超过30分钟,会造成重复推送
This commit is contained in:
parent
e1e67b11a2
commit
3a29e6118a
@ -18,6 +18,7 @@ public class ResendRecord {
|
||||
static public final short STATE_FWD_OK = 0;
|
||||
static public final short STATE_FWD_FAILED = 1;
|
||||
static public final short STATE_BREAK_POINT = 2;
|
||||
static public final short STATE_FWDING = 3;
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
Long id;
|
||||
Integer tenantid;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.imdroid.beidou_fwd.task;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.github.yulichang.query.MPJQueryWrapper;
|
||||
import com.imdroid.beidou_fwd.entity.GZYMQTTData;
|
||||
import com.imdroid.common.util.GsonUtil;
|
||||
@ -198,7 +199,8 @@ public class Forwarder {
|
||||
|
||||
int sendNum = send(projectId, records, sendTime);
|
||||
|
||||
// 记录推送
|
||||
// 非重发的才产生推送记录
|
||||
if(resendRecord==null) {
|
||||
FwdRecord fwdRecord = new FwdRecord();
|
||||
fwdRecord.setProjectid(projectId);
|
||||
fwdRecord.setTenantid(tenantId);
|
||||
@ -206,19 +208,13 @@ public class Forwarder {
|
||||
fwdRecord.setRecordtime(sendTime);
|
||||
fwdRecord.setCreatetime(LocalDateTime.now());
|
||||
fwdRecord.setFwd_group_id(fwdGroupId);
|
||||
if(sendNum > 0) {
|
||||
if (sendNum > 0) {
|
||||
totalSendNum += sendNum;
|
||||
fwdRecord.setResult(FwdRecord.RESULT_OK);
|
||||
if(resendRecord != null){
|
||||
resendRecord.setState(ResendRecord.STATE_FWD_OK);
|
||||
resendRecordMapper.updateById(resendRecord);
|
||||
}
|
||||
}
|
||||
else{
|
||||
} else {
|
||||
fwdResult = false;
|
||||
fwdRecord.setResult(FwdRecord.RESULT_FAILED);
|
||||
// 新增重发记录
|
||||
if(resendRecord == null) {
|
||||
resendRecord = new ResendRecord();
|
||||
resendRecord.setProjectid(projectId);
|
||||
resendRecord.setTenantid(tenantId);
|
||||
@ -229,17 +225,15 @@ public class Forwarder {
|
||||
resendRecord.setState(ResendRecord.STATE_FWD_FAILED);
|
||||
resendRecordMapper.insert(resendRecord);
|
||||
}
|
||||
else{
|
||||
resendRecord.setState(ResendRecord.STATE_FWD_FAILED);
|
||||
resendRecordMapper.updateById(resendRecord);
|
||||
}
|
||||
}
|
||||
fwdRecordsMapper.insert(fwdRecord);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新推送记录
|
||||
if(totalSendNum>0) updateFwd(totalSendNum, true);
|
||||
else if(!fwdResult) updateFwd(totalSendNum, false);
|
||||
if(resendRecord==null) {
|
||||
if (totalSendNum > 0) updateFwd(totalSendNum, true);
|
||||
else if (!fwdResult) updateFwd(totalSendNum, false);
|
||||
}
|
||||
|
||||
return fwdResult;
|
||||
}
|
||||
@ -258,10 +252,20 @@ public class Forwarder {
|
||||
QueryWrapper<ResendRecord> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("fwd_group_id",fwdGroupId);
|
||||
queryWrapper.ne("state",ResendRecord.STATE_FWD_OK);
|
||||
queryWrapper.ne("state",ResendRecord.STATE_FWDING);
|
||||
queryWrapper.ge("createtime", LocalDateTime.now().minusDays(30));
|
||||
List<ResendRecord> resendRecordsList = resendRecordMapper.selectList(queryWrapper);
|
||||
|
||||
if(resendRecordsList!=null){
|
||||
logger.info("{} forward history records: {}",fwdGroupId, resendRecordsList.size());
|
||||
//修改状态
|
||||
UpdateWrapper<ResendRecord> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.eq("fwd_group_id",fwdGroupId);
|
||||
updateWrapper.ne("state",ResendRecord.STATE_FWD_OK);
|
||||
updateWrapper.ne("state",ResendRecord.STATE_FWDING);
|
||||
updateWrapper.ge("createtime", LocalDateTime.now().minusDays(30));
|
||||
updateWrapper.set("state",ResendRecord.STATE_FWDING);
|
||||
int updateNum = resendRecordMapper.update(null, updateWrapper);
|
||||
logger.info("{} forward history records: {}, update {}",fwdGroupId, resendRecordsList.size(),updateNum);
|
||||
// 2.检索这个这个时间段的解算结果,如果有数据则单个终端转发,标志记录为已补传
|
||||
for(ResendRecord record:resendRecordsList){
|
||||
if(record.getProjectid()!=null)
|
||||
@ -273,10 +277,21 @@ public class Forwarder {
|
||||
|
||||
void forwardBatchGnssRecords(ResendRecord record) {
|
||||
LocalDateTime sendTime = record.getStarttime();
|
||||
|
||||
int totalSend = 0;
|
||||
|
||||
while(sendTime.isBefore(record.getEndtime()) || sendTime.isEqual(record.getEndtime())){
|
||||
forwardGnssRecords(sendTime,record);
|
||||
if(forwardGnssRecords(sendTime,record)) totalSend++;
|
||||
sendTime = sendTime.plusMinutes(fwdCycleMinutes);
|
||||
}
|
||||
if(totalSend>0) {
|
||||
record.setState(ResendRecord.STATE_FWD_OK);
|
||||
}
|
||||
else{
|
||||
record.setState(ResendRecord.STATE_FWD_FAILED);
|
||||
}
|
||||
resendRecordMapper.updateById(record);
|
||||
|
||||
}
|
||||
|
||||
int send(String projectId, List<GnssCalcData> records, LocalDateTime sentTime) {
|
||||
|
||||
@ -128,8 +128,10 @@
|
||||
<span class="layui-badge layui-bg-green">推送成功</span>
|
||||
{{# } else if(d.state == 1){ }}
|
||||
<span class="layui-badge layui-bg-red">推送失败</span>
|
||||
{{# } else if(d.state == 2){ }}
|
||||
<span class="layui-badge layui-bg-red">断点补传</span>
|
||||
{{# } else { }}
|
||||
<span class="layui-badge layui-bg-orange">断点补传</span>
|
||||
<span class="layui-badge layui-bg-orange">推送中</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user