From 86875c20036822d7aad7303b284ffd83b5a7808c Mon Sep 17 00:00:00 2001 From: zhouxiunai <154707516@qq.com> Date: Tue, 26 Feb 2019 12:01:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=9B=B4=E6=96=B0=E6=97=A5?= =?UTF-8?q?=E8=88=AA=E7=8F=AD=E8=AE=A1=E5=88=92=E7=9A=84=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=99=BB=E6=9C=BA=E6=A1=A5=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flightInfo/FlightInfoServiceImpl.java | 102 +++++++++++++----- .../redis/RedisServiceTest.java | 23 ++++ 2 files changed, 98 insertions(+), 27 deletions(-) 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); + + } }