diff --git a/sec-api/src/main/java/com/imdroid/secapi/dto/ResendRecord.java b/sec-api/src/main/java/com/imdroid/secapi/dto/ResendRecord.java index f30cebc5..db7d59cf 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/dto/ResendRecord.java +++ b/sec-api/src/main/java/com/imdroid/secapi/dto/ResendRecord.java @@ -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; diff --git a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java index 0af94ad0..52f92a16 100644 --- a/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java +++ b/sec-beidou-fwd/src/main/java/com/imdroid/beidou_fwd/task/Forwarder.java @@ -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,27 +199,22 @@ public class Forwarder { int sendNum = send(projectId, records, sendTime); - // 记录推送 - FwdRecord fwdRecord = new FwdRecord(); - fwdRecord.setProjectid(projectId); - fwdRecord.setTenantid(tenantId); - fwdRecord.setDevicenum((short) records.size()); - fwdRecord.setRecordtime(sendTime); - fwdRecord.setCreatetime(LocalDateTime.now()); - fwdRecord.setFwd_group_id(fwdGroupId); - if(sendNum > 0) { - totalSendNum += sendNum; - fwdRecord.setResult(FwdRecord.RESULT_OK); - if(resendRecord != null){ - resendRecord.setState(ResendRecord.STATE_FWD_OK); - resendRecordMapper.updateById(resendRecord); - } - } - else{ - fwdResult = false; - fwdRecord.setResult(FwdRecord.RESULT_FAILED); - // 新增重发记录 - if(resendRecord == null) { + // 非重发的才产生推送记录 + if(resendRecord==null) { + FwdRecord fwdRecord = new FwdRecord(); + fwdRecord.setProjectid(projectId); + fwdRecord.setTenantid(tenantId); + fwdRecord.setDevicenum((short) records.size()); + fwdRecord.setRecordtime(sendTime); + fwdRecord.setCreatetime(LocalDateTime.now()); + fwdRecord.setFwd_group_id(fwdGroupId); + if (sendNum > 0) { + totalSendNum += sendNum; + fwdRecord.setResult(FwdRecord.RESULT_OK); + } else { + fwdResult = false; + fwdRecord.setResult(FwdRecord.RESULT_FAILED); + // 新增重发记录 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); } - 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 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 resendRecordsList = resendRecordMapper.selectList(queryWrapper); + if(resendRecordsList!=null){ - logger.info("{} forward history records: {}",fwdGroupId, resendRecordsList.size()); + //修改状态 + UpdateWrapper 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 records, LocalDateTime sentTime) { diff --git a/sec-beidou/src/main/resources/templates/page/resend_records.html b/sec-beidou/src/main/resources/templates/page/resend_records.html index 9927c410..014bd506 100644 --- a/sec-beidou/src/main/resources/templates/page/resend_records.html +++ b/sec-beidou/src/main/resources/templates/page/resend_records.html @@ -128,8 +128,10 @@ 推送成功 {{# } else if(d.state == 1){ }} 推送失败 + {{# } else if(d.state == 2){ }} + 断点补传 {{# } else { }} - 断点补传 + 推送中 {{# } }}