修改最新数据来了不更新通讯表数据,通讯表由前置状态维护
This commit is contained in:
@@ -20,6 +20,9 @@ public class PqsCommunicateDto {
|
||||
private Integer type;
|
||||
//是否更新updateTime标志;数据上送更新1,状态翻转不更新0
|
||||
private Integer flag=0;
|
||||
//是否更新、pqs_communicate标志,0更新,1不更新
|
||||
|
||||
private Integer updateCommunicateFlag=0;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -137,6 +137,7 @@ public class LnDataDealServiceImpl implements LnDataDealService {
|
||||
pqsCommunicateDto.setDevId(temp);
|
||||
pqsCommunicateDto.setType(1);
|
||||
pqsCommunicateDto.setFlag(1);
|
||||
pqsCommunicateDto.setUpdateCommunicateFlag(1);
|
||||
updatefutures.add(CompletableFuture.runAsync(() -> iPqsCommunicate.insertion(pqsCommunicateDto), executor));
|
||||
|
||||
|
||||
|
||||
@@ -112,28 +112,33 @@ public class InfluxdbPqsCommunicateImpl implements IPqsCommunicate {
|
||||
public void insertion(PqsCommunicateDto pqsCommunicateDto) {
|
||||
// log.info("进出Influxdb实现类");
|
||||
//获取最新一条数据
|
||||
long start = System.currentTimeMillis();
|
||||
if(Objects.equals(pqsCommunicateDto.getUpdateCommunicateFlag(),0)){
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
PqsCommunicate dto = new PqsCommunicate();
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class);
|
||||
influxQueryWrapper.eq(PqsCommunicate::getDevId,pqsCommunicateDto.getDevId()).timeDesc().limit(1);
|
||||
List<PqsCommunicate> pqsCommunicates = pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper);
|
||||
PqsCommunicate dto = new PqsCommunicate();
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class);
|
||||
influxQueryWrapper.eq(PqsCommunicate::getDevId,pqsCommunicateDto.getDevId()).timeDesc().limit(1);
|
||||
List<PqsCommunicate> pqsCommunicates = pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper);
|
||||
|
||||
long end1 = System.currentTimeMillis();
|
||||
long end1 = System.currentTimeMillis();
|
||||
|
||||
log.info("查询通讯表最新数据:" + (end1 - start) + " ms");
|
||||
PqsCommunicate pqsCommunicate = new PqsCommunicate();
|
||||
pqsCommunicate.setTime(LocalDateTime.parse(pqsCommunicateDto.getTime(), DATE_TIME_FORMATTER).atZone(ZoneId.systemDefault()).toInstant());
|
||||
pqsCommunicate.setDevId(pqsCommunicateDto.getDevId());
|
||||
pqsCommunicate.setType(pqsCommunicateDto.getType());
|
||||
//如果不存数据或者状态不一样则插入数据
|
||||
//可能存在掉线后最后一组数据还未入库,添加时间判断
|
||||
if(CollectionUtils.isEmpty(pqsCommunicates)|| (!Objects.equals( pqsCommunicates.get(0).getType(),pqsCommunicateDto.getType())&&pqsCommunicates.get(0).getTime().isBefore(pqsCommunicate.getTime()))){
|
||||
pqsCommunicateMapper.insertOne(pqsCommunicate);
|
||||
log.info("查询通讯表最新数据:" + (end1 - start) + " ms");
|
||||
PqsCommunicate pqsCommunicate = new PqsCommunicate();
|
||||
pqsCommunicate.setTime(LocalDateTime.parse(pqsCommunicateDto.getTime(), DATE_TIME_FORMATTER).atZone(ZoneId.systemDefault()).toInstant());
|
||||
pqsCommunicate.setDevId(pqsCommunicateDto.getDevId());
|
||||
pqsCommunicate.setType(pqsCommunicateDto.getType());
|
||||
//如果不存数据或者状态不一样则插入数据
|
||||
//可能存在掉线后最后一组数据还未入库,添加时间判断
|
||||
if(CollectionUtils.isEmpty(pqsCommunicates)|| (!Objects.equals( pqsCommunicates.get(0).getType(),pqsCommunicateDto.getType())&&pqsCommunicates.get(0).getTime().isBefore(pqsCommunicate.getTime()))){
|
||||
pqsCommunicateMapper.insertOne(pqsCommunicate);
|
||||
|
||||
}
|
||||
long end2 = System.currentTimeMillis();
|
||||
log.info("更新通讯表最新数据:" + (end2 - end1) + " ms");
|
||||
}
|
||||
|
||||
long end3 = System.currentTimeMillis();
|
||||
|
||||
}
|
||||
long end2 = System.currentTimeMillis();
|
||||
log.info("更新通讯表最新数据:" + (end2 - end1) + " ms");
|
||||
|
||||
//更新mysql数据
|
||||
DevComFlagDTO devComFlagDTO = new DevComFlagDTO();
|
||||
@@ -144,8 +149,8 @@ public class InfluxdbPqsCommunicateImpl implements IPqsCommunicate {
|
||||
devComFlagDTO.setStatus(pqsCommunicateDto.getType());
|
||||
|
||||
deviceFeignClient.updateDevComFlag(devComFlagDTO);
|
||||
long end3 = System.currentTimeMillis();
|
||||
log.info("更新device表状态和时间:" + (end3 - end2) + " ms");
|
||||
long end4 = System.currentTimeMillis();
|
||||
log.info("更新device表状态和时间:" + (end4 - end3) + " ms");
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user