diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java index 2913ff31..73abb6ad 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java @@ -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 lsFltrWithMa = this.updateMafltr(lsFltr); //重组主航班字段 + List lsFltrWithBridge = this.updatefltrBridge(lsFltr);//重组登机桥字段 - //建立Map索引,便于查找 + + //拼装为hashmap,保存到redis Map 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 updateMafltr(List lsFltr) + { + //建立Map索引,便于查找 + Map 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 updatefltrBridge(List lsFltr) + { + //建立Map索引,便于查找 + Map mapFltr = new HashMap(); + for(FLTR fltr : lsFltr) + { + mapFltr.put(fltr.getFLID().toString(), fltr); + } + //设置主航班的共享航班信息 + for(FLTR fltr : lsFltr) + { + List 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 } diff --git a/src/test/java/com/gzzn/omms/msgexchangeapi/redis/RedisServiceTest.java b/src/test/java/com/gzzn/omms/msgexchangeapi/redis/RedisServiceTest.java index fc94932b..a4a18dfb 100644 --- a/src/test/java/com/gzzn/omms/msgexchangeapi/redis/RedisServiceTest.java +++ b/src/test/java/com/gzzn/omms/msgexchangeapi/redis/RedisServiceTest.java @@ -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 mapData1 = new HashMap<>(); + mapData1.put("key1", "value1"); + mapData1.put("key2", "value2"); + redisService.hmset("hkey", mapData1); + + + Map mapData2 = new HashMap<>(); + mapData2.put("key1", "value2"); + mapData2.put("key3", "value4"); + mapData2.put("key4", "value5"); + redisService.hmset("hkey", mapData2); + + } }