完善更新日航班计划的同时更新登机桥信息

This commit is contained in:
zhouxiunai
2019-02-26 12:01:14 +08:00
parent 2166556f49
commit 86875c2003
2 changed files with 98 additions and 27 deletions
@@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
import com.gzzn.omms.msgexchangeapi.entity.msg.BRIDGEDATA;
import com.gzzn.omms.msgexchangeapi.entity.msg.MAFLDATA;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
@@ -45,38 +46,16 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
.getSCHD()
.getFLTR();
List<SCHD.FLTR> lsFltrWithMa = this.updateMafltr(lsFltr); //重组主航班字段
List<SCHD.FLTR> lsFltrWithBridge = this.updatefltrBridge(lsFltr);//重组登机桥字段
//建立Map索引,便于查找
//拼装为hashmap,保存到redis
Map<String, Object> mapFltr = new HashMap();
for(FLTR fltr : lsFltr)
for(FLTR fltr : lsFltrWithBridge)
{
mapFltr.put(fltr.getFLID().toString(), fltr);
}
//设置主航班的共享航班信息
for(FLTR fltr : lsFltr)
{
if(fltr.getMAID() == null)
{
continue; //不是共享航班
}
String maid = fltr.getMAID().toString();
FLTR fltrMa = (FLTR) mapFltr.get(maid);
if(null == fltrMa)
{
logger.error("共享航班:{},未找到航班id为:{}的主航班信息{}",fltr.getFLID(),maid);
continue;
}
MAFLDATA mafldata = new MAFLDATA();
mafldata.setFlid(fltr.getFLID());
mafldata.setFlno(fltr.getFLNO());
fltrMa.getMafl().add(mafldata);
}
//保存到redis
return redisService.hmset(redisKey, mapFltr);
} //end function
@@ -128,4 +107,73 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
redisService.hdel(redisKey, flids.toArray());
return true;
}
/**
* 更新主航班信息字段
*/
private List<SCHD.FLTR> updateMafltr(List<SCHD.FLTR> lsFltr)
{
//建立Map索引,便于查找
Map<String, Object> mapFltr = new HashMap();
for(FLTR fltr : lsFltr)
{
mapFltr.put(fltr.getFLID().toString(), fltr);
}
//设置主航班的共享航班信息
for(FLTR fltr : lsFltr)
{
if(fltr.getMAID() == null)
{
continue; //不是共享航班
}
String maid = fltr.getMAID().toString();
FLTR fltrMa = (FLTR) mapFltr.get(maid);
if(null == fltrMa)
{
logger.error("共享航班:{},未找到航班id为:{}的主航班信息{}",fltr.getFLID(),maid);
continue;
}
MAFLDATA mafldata = new MAFLDATA();
mafldata.setFlid(fltr.getFLID());
mafldata.setFlno(fltr.getFLNO());
fltrMa.getMafl().add(mafldata);
}
return lsFltr;
} //end function
/**
* 登机桥信息重组
* @return
*/
private List<SCHD.FLTR> updatefltrBridge(List<SCHD.FLTR> lsFltr)
{
//建立Map索引,便于查找
Map<String, Object> mapFltr = new HashMap();
for(FLTR fltr : lsFltr)
{
mapFltr.put(fltr.getFLID().toString(), fltr);
}
//设置主航班的共享航班信息
for(FLTR fltr : lsFltr)
{
List<BRIDGEDATA> lsBridgedata = fltr.getABTM();
StringBuffer abdgBuffer = new StringBuffer();
lsBridgedata.forEach(node->{
abdgBuffer.append(node.getABDG());
});
if(abdgBuffer.toString().endsWith(","))
{
abdgBuffer.deleteCharAt(abdgBuffer.length() - 1);
}
fltr.setAbdg(abdgBuffer.toString());
}
return lsFltr;
} //end function
}
@@ -1,6 +1,8 @@
package com.gzzn.omms.msgexchangeapi.redis;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -20,4 +22,25 @@ public class RedisServiceTest {
{
redisService.del(Arrays.asList("flightInfo"));
}
/**
* 测试多几次调用,后面的是否会把前面的值覆盖 (经测试,是更新式的)
*/
@Test
public void testHmset()
{
Map<String,Object> mapData1 = new HashMap<>();
mapData1.put("key1", "value1");
mapData1.put("key2", "value2");
redisService.hmset("hkey", mapData1);
Map<String,Object> mapData2 = new HashMap<>();
mapData2.put("key1", "value2");
mapData2.put("key3", "value4");
mapData2.put("key4", "value5");
redisService.hmset("hkey", mapData2);
}
}