From 6d90f7e4e7a1989af3dfa8017c892da251617742 Mon Sep 17 00:00:00 2001 From: zhouxiunai <154707516@qq.com> Date: Tue, 26 Feb 2019 09:16:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=99=BB=E6=9C=BA=E6=A1=A5?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basicdata/entity/OrmsStandAirbridge.java | 5 ++ .../basicdata/manager/OrmsStandAirbridge.java | 10 --- .../manager/OrmsStandAirbridgeManager.java | 68 +++++++++++++++++++ .../basicdata/service/IOrmsStandService.java | 2 + .../service/OrmsStandServiceImpl.java | 24 ++++++- .../msghandler/flop/PSDTHandler.java | 27 +++++++- src/main/resources/application-dev.yml | 3 +- src/main/resources/application-pro.yml | 3 +- .../OrmsStandAirbridgeManagerTest.java | 28 ++++++++ .../basicdata/OrmsStandServiceImplTest.java | 8 ++- 10 files changed, 161 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/entity/OrmsStandAirbridge.java delete mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/manager/OrmsStandAirbridge.java create mode 100644 src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/manager/OrmsStandAirbridgeManager.java create mode 100644 src/test/java/com/gzzn/omms/msgexchangeapi/basicdata/OrmsStandAirbridgeManagerTest.java diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/entity/OrmsStandAirbridge.java b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/entity/OrmsStandAirbridge.java new file mode 100644 index 00000000..9835f563 --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/entity/OrmsStandAirbridge.java @@ -0,0 +1,5 @@ +package com.gzzn.omms.msgexchangeapi.basicdata.entity; + +public class OrmsStandAirbridge { + +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/manager/OrmsStandAirbridge.java b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/manager/OrmsStandAirbridge.java deleted file mode 100644 index fbdaa8cd..00000000 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/manager/OrmsStandAirbridge.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.gzzn.omms.msgexchangeapi.basicdata.manager; - -/** - * 机位登机桥,关系管理 - * @author zhouxiunai - * - */ -public class OrmsStandAirbridge { - -} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/manager/OrmsStandAirbridgeManager.java b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/manager/OrmsStandAirbridgeManager.java new file mode 100644 index 00000000..6af003d5 --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/manager/OrmsStandAirbridgeManager.java @@ -0,0 +1,68 @@ +package com.gzzn.omms.msgexchangeapi.basicdata.manager; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.gzzn.omms.msgexchangeapi.basicdata.entity.OrmsStand; +import com.gzzn.omms.msgexchangeapi.basicdata.service.IOrmsStandService; +import com.gzzn.omms.msgexchangeapi.redis.RedisService; +import com.gzzn.omms.msgexchangeapi.utils.JsonUtil; +import com.gzzn.omms.msgexchangeapi.utils.SpringUtil; + +/** + * 机位登机桥,关系管理 + * @author zhouxiunai + * + */ +public class OrmsStandAirbridgeManager { + private static final String KEY_ORMSSTANDAIRBRIDGE = "orms_stand_airbridge"; + private static OrmsStandAirbridgeManager instance = new OrmsStandAirbridgeManager(); + + private OrmsStandAirbridgeManager() + { + + } + + public static OrmsStandAirbridgeManager getInstance() + { + return instance; + } + + public List getAirbridgeCodeByStandCodeCode(String standCode) throws JsonParseException, JsonMappingException, IOException + { + + List rtList = new ArrayList(); + + synchronized(OrmsStandAirbridgeManager.class) + { + //缓存获取 + RedisService redisService = (RedisService) SpringUtil + .getBean("redisService"); + Boolean keyExists = redisService.hasKey(KEY_ORMSSTANDAIRBRIDGE); + + + if(!keyExists) + { + //远程获取 + IOrmsStandService ormsStandService = (IOrmsStandService) SpringUtil + .getBean("ormsStandService"); + List lsAirbridgeCodes = ormsStandService.getAirbridgeCodeByStandCode(standCode); + Map map = new HashMap<>(); + map.put(standCode, JsonUtil.getString(lsAirbridgeCodes)); + + redisService.hmset(KEY_ORMSSTANDAIRBRIDGE, map, 3600L); + } + + //本地获取 + String jsonListStr = (String) redisService.hget(KEY_ORMSSTANDAIRBRIDGE, standCode); + rtList = JsonUtil.getObject(jsonListStr , List.class); + } + + return rtList; + } // en +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/service/IOrmsStandService.java b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/service/IOrmsStandService.java index a1730018..2cdefbf4 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/service/IOrmsStandService.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/service/IOrmsStandService.java @@ -15,4 +15,6 @@ public interface IOrmsStandService { * @return */ public List findAll(); + + public List getAirbridgeCodeByStandCode(String StandCode); } diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/service/OrmsStandServiceImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/service/OrmsStandServiceImpl.java index 585f01c9..98b34c76 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/service/OrmsStandServiceImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/basicdata/service/OrmsStandServiceImpl.java @@ -1,6 +1,5 @@ package com.gzzn.omms.msgexchangeapi.basicdata.service; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -21,6 +20,9 @@ public class OrmsStandServiceImpl implements IOrmsStandService{ @Value("${adminApi.ormsStandsUrl}") private String ormsStandsUrl; + @Value("${adminApi.getAirbridgeCodeByStandCodeUrl}") + private String getAirbridgeCodeByStandCodeUrl; + @Autowired private RestTemplate restTemplate; @@ -32,7 +34,6 @@ public class OrmsStandServiceImpl implements IOrmsStandService{ ResponseDto.class); ResponseDto responseDto = responseEntity.getBody(); if (responseDto.getIs_success()) { - List lsLinked = (List)responseDto.getBody(); // @@ -45,4 +46,23 @@ public class OrmsStandServiceImpl implements IOrmsStandService{ throw new RuntimeException("未知错误"+responseDto.getErr_msg()); } }//end function + + + @Override + public List getAirbridgeCodeByStandCode(String StandCode) { + ResponseEntity responseEntity = restTemplate + .getForEntity( + getAirbridgeCodeByStandCodeUrl, + ResponseDto.class,StandCode); + + ResponseDto responseDto = responseEntity.getBody(); + if (!responseDto.getIs_success()) { + throw new RuntimeException("未知错误"+responseDto.getErr_msg()); + } + + //正常逻辑 + List rt = (List)responseDto.getBody(); + + return rt; + } //end function } diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/PSDTHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/PSDTHandler.java index f609d900..81d1a951 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/PSDTHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/PSDTHandler.java @@ -1,5 +1,7 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; @@ -7,6 +9,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import com.gzzn.omms.msgexchangeapi.basicdata.entity.OrmsStand; +import com.gzzn.omms.msgexchangeapi.basicdata.manager.OrmsStandAirbridgeManager; import com.gzzn.omms.msgexchangeapi.basicdata.manager.OrmsStandManager; import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP; import com.gzzn.omms.msgexchangeapi.entity.msg.OPTSTANDDATA; @@ -67,8 +70,28 @@ public class PSDTHandler extends FlopBaseHandler { //获取机位对应的登机桥 if("near".equalsIgnoreCase(ormsStand.getStandType())) { - String abdg = standata.getPSST();//登机桥 - fltr.setAbdg(abdg);//登机桥叠加 + String standCode = standata.getPSST();//登机桥 + + List lsBridge = new ArrayList(); + try { + lsBridge = OrmsStandAirbridgeManager + .getInstance() + .getAirbridgeCodeByStandCodeCode(standCode); + } catch (IOException e) { + logger.error("获取登机桥信息失败:{}",e.getMessage()); + } + + StringBuffer abdgBuffer = new StringBuffer(); + lsBridge.forEach(node->{ + abdgBuffer.append(node); + abdgBuffer.append(","); + }); + if(abdgBuffer.toString().endsWith(",")) + { + abdgBuffer.deleteCharAt(abdgBuffer.length() - 1); + } + + fltr.setAbdg(abdgBuffer.toString());//登机桥叠加 } } //添加新数据 diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 2a5438e3..7575d124 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -98,4 +98,5 @@ adminApi: port: 92 schema: http baseUrl: ${adminApi.schema}://ADMINAPI - ormsStandsUrl: ${adminApi.baseUrl}/basicdata/ormsStands \ No newline at end of file + ormsStandsUrl: ${adminApi.baseUrl}/basicdata/ormsStands + getAirbridgeCodeByStandCodeUrl: ${adminApi.baseUrl}/basicdata/ormsStands/{standCode}/airbridgeCode \ No newline at end of file diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml index 53507a3e..43eeea11 100644 --- a/src/main/resources/application-pro.yml +++ b/src/main/resources/application-pro.yml @@ -99,4 +99,5 @@ adminApi: port: 92 schema: http baseUrl: ${adminApi.schema}://ADMINAPI - ormsStandsUrl: ${adminApi.baseUrl}/basicdata/ormsStands \ No newline at end of file + ormsStandsUrl: ${adminApi.baseUrl}/basicdata/ormsStands + getAirbridgeCodeByStandCodeUrl: ${adminApi.baseUrl}/basicdata/ormsStands/{standCode}/airbridgeCode \ No newline at end of file diff --git a/src/test/java/com/gzzn/omms/msgexchangeapi/basicdata/OrmsStandAirbridgeManagerTest.java b/src/test/java/com/gzzn/omms/msgexchangeapi/basicdata/OrmsStandAirbridgeManagerTest.java new file mode 100644 index 00000000..1dcf03c0 --- /dev/null +++ b/src/test/java/com/gzzn/omms/msgexchangeapi/basicdata/OrmsStandAirbridgeManagerTest.java @@ -0,0 +1,28 @@ +package com.gzzn.omms.msgexchangeapi.basicdata; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.gzzn.omms.msgexchangeapi.basicdata.manager.OrmsStandAirbridgeManager; +import com.gzzn.omms.msgexchangeapi.config.TestRestTemplateConfig; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes=TestRestTemplateConfig.class) +public class OrmsStandAirbridgeManagerTest { + + @Test + public void testFindAll() throws JsonParseException, JsonMappingException, IOException + { + List ls = OrmsStandAirbridgeManager.getInstance().getAirbridgeCodeByStandCodeCode("147"); + assertThat(ls).isNotNull(); + } +} diff --git a/src/test/java/com/gzzn/omms/msgexchangeapi/basicdata/OrmsStandServiceImplTest.java b/src/test/java/com/gzzn/omms/msgexchangeapi/basicdata/OrmsStandServiceImplTest.java index 98a2710e..b1967756 100644 --- a/src/test/java/com/gzzn/omms/msgexchangeapi/basicdata/OrmsStandServiceImplTest.java +++ b/src/test/java/com/gzzn/omms/msgexchangeapi/basicdata/OrmsStandServiceImplTest.java @@ -28,6 +28,12 @@ public class OrmsStandServiceImplTest { assertThat(lsOrmsStands).isNotEmpty(); } - + @Test + public void testGetAirbridgeCodeByStandCode() + { + List ls = ormsStandService.getAirbridgeCodeByStandCode("147"); + assertThat(ls).isNotEmpty() + .hasSize(2); + } }