优化航班延误的处理,添加航班延误增加航班异常信息功能
This commit is contained in:
@@ -7,9 +7,25 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||||||
public class ABNDATA {
|
public class ABNDATA {
|
||||||
@XmlElement(name = "TYPE", required = true)
|
@XmlElement(name = "TYPE", required = true)
|
||||||
@JsonProperty("TYPE")
|
@JsonProperty("TYPE")
|
||||||
protected String type;
|
protected ABNORMALTYPE type;
|
||||||
|
|
||||||
@XmlElement(name = "BODY")
|
@XmlElement(name = "BODY")
|
||||||
@JsonProperty("BODY")
|
@JsonProperty("BODY")
|
||||||
protected String body;//json 串或普通字符串,每个type一种
|
protected String body;//json 串或普通字符串,每个type一种
|
||||||
|
|
||||||
|
public ABNORMALTYPE getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(ABNORMALTYPE type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBody() {
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBody(String body) {
|
||||||
|
this.body = body;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.gzzn.omms.msgexchangeapi.entity.msg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常状态类型
|
||||||
|
* @author 航班异常状态类型
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public enum ABNORMALTYPE {
|
||||||
|
DLY,
|
||||||
|
CAN,
|
||||||
|
RTN,
|
||||||
|
ALT;
|
||||||
|
|
||||||
|
public String value() {
|
||||||
|
return name();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ABNORMALTYPE fromValue(String v) {
|
||||||
|
return valueOf(v);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2063,6 +2063,16 @@ public class SCHD
|
|||||||
this.lreno = lreno;
|
this.lreno = lreno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ABNDATA> getAbn() {
|
||||||
|
if (abn == null) {
|
||||||
|
abn = new ArrayList<ABNDATA>();
|
||||||
|
}
|
||||||
|
return abn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAbn(List<ABNDATA> abn) {
|
||||||
|
this.abn = abn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
package com.gzzn.omms.msgexchangeapi.msghandler.flop;
|
package com.gzzn.omms.msgexchangeapi.msghandler.flop;
|
||||||
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.msg.ABNDATA;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.msg.ABNORMALTYPE;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.DELAYDATA;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.DELAYDATA;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.OPTDELAYDATA;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.OPTDELAYDATA;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
|
||||||
import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler;
|
import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.utils.JsonUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 航班延误消息处理
|
* 航班延误消息处理
|
||||||
@@ -19,24 +22,68 @@ public class DELYHandler extends FlopBaseHandler {
|
|||||||
@Override
|
@Override
|
||||||
protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
|
protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
|
||||||
{
|
{
|
||||||
//update
|
//清空上次旧的航班延误信息
|
||||||
if(CollectionUtils.isEmpty(flop.getDELY()) )
|
fltr.getDELY().clear();
|
||||||
|
|
||||||
|
//空标签,取消航班延误状态
|
||||||
|
if(flop.getDELY().size() == 1
|
||||||
|
&& StringUtils.isEmpty(flop.getDELY().get(0).getCODE())
|
||||||
|
)
|
||||||
{
|
{
|
||||||
//清空延误信息
|
//清空航班异常信息中的延误信息
|
||||||
fltr.getDELY().clear();
|
fltr = clearDelyInfo(fltr);
|
||||||
}
|
return fltr;
|
||||||
else {
|
|
||||||
//延误信息只新增
|
|
||||||
for (OPTDELAYDATA optdelaydata : flop.getDELY() ) {
|
|
||||||
|
|
||||||
DELAYDATA delaydata = new DELAYDATA();
|
|
||||||
BeanUtils.copyProperties(optdelaydata, delaydata);
|
|
||||||
|
|
||||||
fltr.getDELY().add(delaydata);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//更新延误信息
|
||||||
|
for (OPTDELAYDATA optdelaydata : flop.getDELY() ) {
|
||||||
|
DELAYDATA delaydata = new DELAYDATA();
|
||||||
|
BeanUtils.copyProperties(optdelaydata, delaydata);
|
||||||
|
|
||||||
|
fltr.getDELY().add(delaydata);
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新航班异常信息,先清空旧的再加入新的
|
||||||
|
for(int i=0;i<fltr.getAbn().size();i++)
|
||||||
|
{
|
||||||
|
ABNDATA abndata = fltr.getAbn().get(i);
|
||||||
|
if(abndata.getType() == ABNORMALTYPE.DLY)
|
||||||
|
{
|
||||||
|
fltr.getAbn().remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (OPTDELAYDATA optdelaydata : flop.getDELY() ) {
|
||||||
|
ABNDATA abndata = new ABNDATA();
|
||||||
|
abndata.setType(ABNORMALTYPE.DLY);
|
||||||
|
abndata.setBody(JsonUtil.getString(optdelaydata));
|
||||||
|
|
||||||
|
fltr.getAbn().add(abndata);
|
||||||
|
}
|
||||||
|
|
||||||
return fltr;
|
return fltr;
|
||||||
}
|
}//end function
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清空航班动态异常信息中的延误信息
|
||||||
|
* @param fltr 航班动态
|
||||||
|
* @return 新的航班动态
|
||||||
|
*/
|
||||||
|
private SCHD.FLTR clearDelyInfo(SCHD.FLTR fltr)
|
||||||
|
{
|
||||||
|
int i=0;
|
||||||
|
while(i < fltr.getAbn().size() )
|
||||||
|
{
|
||||||
|
ABNDATA abndata = fltr.getAbn().get(i);
|
||||||
|
if(abndata.getType() == ABNORMALTYPE.DLY)
|
||||||
|
{
|
||||||
|
fltr.getAbn().remove(i);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}//end while
|
||||||
|
|
||||||
|
return fltr;
|
||||||
|
} //end function
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.gzzn.omms.msgexchangeapi.msghandler.flop;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import com.gzzn.omms.msgexchangeapi.dao.CminmsgDao;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.CminmsgWapper;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.service.exchange.IExchangeService;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.utils.JsonUtil;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest
|
||||||
|
public class DELYHandlerTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CminmsgDao cminmsgDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IExchangeService exchangeService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRun()
|
||||||
|
{
|
||||||
|
Cminmsg cminmsg = cminmsgDao.findOne(240451L);
|
||||||
|
CminmsgWapper cminmsgWapper = new CminmsgWapper(cminmsg);
|
||||||
|
cminmsgWapper.setMsg(exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()));
|
||||||
|
|
||||||
|
DELYHandler delyhandler = new DELYHandler();
|
||||||
|
HandlerResult result = delyhandler.run(cminmsgWapper);
|
||||||
|
|
||||||
|
System.out.println(JsonUtil.getString(result));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user