完成新消息采集,更新动态航班信息,发送动态航班信息,发送动态航班消息。功能

This commit is contained in:
zhouxiunai
2018-12-05 09:52:51 +08:00
parent 6c19f9ce4b
commit e920e67695
5 changed files with 76 additions and 12 deletions
@@ -7,5 +7,6 @@ package com.gzzn.omms.msgexchangeapi.redis;
*/
public class RedisKeyConstant {
public static String KEY_ISWAITSCHD="isWaitSchd";
public static String KEY_MSGPROGRESS="msgProgress";
public static String KEY_WAITSCHDDATE="waitSchdDate";
public static String KEY_LASTBEGINID="lastBeginId";
}
@@ -55,6 +55,6 @@ public class AppRunner implements CommandLineRunner {
//
redisService.set(RedisKeyConstant.KEY_ISWAITSCHD, true); //等待返回日计划状态
redisService.set(RedisKeyConstant.KEY_MSGPROGRESS,nowDate); //初始化消息进度
redisService.set(RedisKeyConstant.KEY_WAITSCHDDATE,nowDate); //初始化消息进度
}//end function run
}
@@ -4,6 +4,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -70,4 +71,21 @@ public class CminmsgServiceImpl implements ICminmsgService {
.findFirst();
return opCminmsg;
}//end function
@Override
public List<Cminmsg> updateBatchProcessed(List<Cminmsg> lsCminmsgs) {
//
List<Long> ids = lsCminmsgs.stream().map(node->{
return node.getCminmsgsId();
}).collect(Collectors.toList());
List<Cminmsg> lsCmins = (List<Cminmsg>) cminmsgDao.findAll(ids);
List<Cminmsg> lsCminsProcessed = lsCmins.stream().map(node->{
node.setCminmsgsDateReceived(new Date());
return node;
}).collect(Collectors.toList());
return (List<Cminmsg>) cminmsgDao.save(lsCminsProcessed);
}//end function
}
@@ -9,6 +9,13 @@ import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
public interface ICminmsgService {
/**
* 批量更新处理时间
* @return
*/
public List<Cminmsg> updateBatchProcessed(List<Cminmsg> lsCminmsgs);
/**
* 发送xml格式的消息到cminmsgs表
* @param xmlMsg
@@ -3,6 +3,7 @@ package com.gzzn.omms.msgexchangeapi.task;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -10,7 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
import com.gzzn.omms.msgexchangeapi.redis.RedisKeyConstant;
import com.gzzn.omms.msgexchangeapi.redis.RedisService;
import com.gzzn.omms.msgexchangeapi.service.ICminmsgService;
@@ -51,7 +51,7 @@ public class ExchangeTask {
logger.info("定时任务启动....");
Boolean isWaitSchd = (Boolean)redisService.get(RedisKeyConstant.KEY_ISWAITSCHD);
Date msgProgress = (Date)redisService.get(RedisKeyConstant.KEY_MSGPROGRESS);
Long beginId = null;
Integer tryTimes = 0;
@@ -59,7 +59,8 @@ public class ExchangeTask {
tryTimes++;
//查找回复的日计划消息
Optional<Cminmsg> opCminmsg = cminmsgService.getRespSchdCminmsg(msgProgress);
Date waitSchdDate = (Date)redisService.get(RedisKeyConstant.KEY_WAITSCHDDATE);
Optional<Cminmsg> opCminmsg = cminmsgService.getRespSchdCminmsg(waitSchdDate);
if(opCminmsg.isPresent())
{
//如果找到,添加到内存数据库动态航班信息表
@@ -84,29 +85,66 @@ public class ExchangeTask {
}
} // end while 获取航班日记录
if(beginId == null)
if(isWaitSchd == true)
{
//获取返回的航班计划回复失败,发送报警信息退出整个程序
logger.error("获取动态航班计划失败...");
return ;
}
if(null == beginId)
{
//获取上次的beginId
beginId = (Long)redisService.get(RedisKeyConstant.KEY_LASTBEGINID);
}
//获取航班动态消息
List<Cminmsg> lsCminmsgs = cminmsgService.getNewMsgsAfterId(beginId);
List<UpdateByCminmsgsResult> lsUpdatedFlightInfo = flightInfoService.updateByCminmsgs(lsCminmsgs);
//新增或变更 航班动态信息 发送 到kafka的SCHD topic
for (UpdateByCminmsgsResult updateResult : lsUpdatedFlightInfo) {
}
if(updateResult.getIsSuccess())
{
updateResult.getFltrs().forEach(node->{
String jsonMsg = exchangeService.objectToXmlstr(node);
kafkaservice.msgSend("schd", jsonMsg);
});
}
}//end for
//发送动态消息到kafka
for (Cminmsg cminmsg : lsCminmsgs) {
}
for (UpdateByCminmsgsResult updateResult : lsUpdatedFlightInfo) {
if(updateResult.getIsSuccess())
{
String jsonMsg = exchangeService.xmlToJson(
updateResult
.getCminmsg()
.getCminmsgsClobMsg()
);
kafkaservice.msgSend("msg", jsonMsg);
}//end if
}//end for
//更新消息处理状态
List<Cminmsg> lsCminmsgsSuccess = lsUpdatedFlightInfo.stream().filter(node->{
return node.getIsSuccess();
}).map(node->{
return node.getCminmsg();
}).collect(Collectors.toList());
cminmsgService.updateBatchProcessed(lsCminmsgsSuccess);
Long newBeginId = lsUpdatedFlightInfo
.get(lsUpdatedFlightInfo.size()-1)
.getCminmsg()
.getCminmsgsId();
redisService.set(RedisKeyConstant.KEY_LASTBEGINID,newBeginId);
logger.info("同步完成");
}
} //end function
}