diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/entity/msg/SUBSYSTEMS.java b/src/main/java/com/gzzn/omms/msgexchangeapi/entity/msg/SUBSYSTEMS.java index 65ea7242..e77b7797 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/entity/msg/SUBSYSTEMS.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/entity/msg/SUBSYSTEMS.java @@ -65,6 +65,7 @@ public enum SUBSYSTEMS { AODB, OSH5, + OMMS, OSH5RQFD, BHS, FIDS, diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/CHOTHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/CHOTHandler.java index eedea188..765d6201 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/CHOTHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/CHOTHandler.java @@ -1,13 +1,13 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; -import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import com.gzzn.omms.msgexchangeapi.entity.msg.CHOCKSDATA; -import com.gzzn.omms.msgexchangeapi.entity.msg.DELAYDATA; import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP; import com.gzzn.omms.msgexchangeapi.entity.msg.OPTCHOCKSDATA; -import com.gzzn.omms.msgexchangeapi.entity.msg.OPTDELAYDATA; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler; @@ -17,28 +17,51 @@ import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler; * */ public class CHOTHandler extends FlopBaseHandler { + private static Logger logger = LoggerFactory.getLogger(CHOTHandler.class); @Override protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr) { - //update - if(CollectionUtils.isEmpty(flop.getCHOT()) ) - { - //清空轮档时间事件 - fltr.getCHOT().clear(); - } - else { - //新增 - for (OPTCHOCKSDATA optchocksdata : flop.getCHOT() ) { + + //靠桥,撤桥,取消靠桥,取消撤桥 + if(flop.getCHOT().size() != 1) + { + logger.error("CHOT 的xml消息不符合只有一条的接口约定"); + return fltr; + } - CHOCKSDATA chocksdata = new CHOCKSDATA(); - BeanUtils.copyProperties(optchocksdata, chocksdata); + // + OPTCHOCKSDATA optchocksdata = flop.getCHOT().get(0); + + //更新对应的撤桥或者靠桥数据,没有则新增 + Boolean updated = false; + for(int i = 0; i < fltr.getCHOT().size(); i++) + { + CHOCKSDATA chocksdata = fltr.getCHOT().get(i); + + if(chocksdata.getCHID().equals(optchocksdata.getCHID())) + { + if(StringUtils.isEmpty(optchocksdata.getCHTM())) + { + //撤销上下轮档 + fltr.getCHOT().remove(i); + } + else { + BeanUtils.copyProperties(optchocksdata, chocksdata);//tofix 检查可能的错误 + } + updated = true; + break; + } + }//end for + // + if(updated == false) + { + CHOCKSDATA chocksdata = new CHOCKSDATA(); + BeanUtils.copyProperties(optchocksdata, chocksdata); + fltr.getCHOT().add(chocksdata); + } - fltr.getCHOT().add(chocksdata); - } - } - - return fltr; + return fltr; } } diff --git a/src/test/java/com/gzzn/omms/msgexchangeapi/msghandler/CHOTHandlerTest.java b/src/test/java/com/gzzn/omms/msgexchangeapi/msghandler/CHOTHandlerTest.java new file mode 100644 index 00000000..f9850b15 --- /dev/null +++ b/src/test/java/com/gzzn/omms/msgexchangeapi/msghandler/CHOTHandlerTest.java @@ -0,0 +1,38 @@ +package com.gzzn.omms.msgexchangeapi.msghandler; + +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.flop.CHOTHandler; +import com.gzzn.omms.msgexchangeapi.service.exchange.IExchangeService; +import com.gzzn.omms.msgexchangeapi.utils.JsonUtil; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class CHOTHandlerTest { + + @Autowired + private CminmsgDao cminmsgDao; + + @Autowired + private IExchangeService exchangeService; + + @Test + public void testRun() + { + Cminmsg cminmsg = cminmsgDao.findOne(99381L); + CminmsgWapper cminmsgWapper = new CminmsgWapper(cminmsg); + cminmsgWapper.setMsg(exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg())); + + CHOTHandler chothandler = new CHOTHandler(); + HandlerResult result = chothandler.run(cminmsgWapper); + + System.out.println(JsonUtil.getString(result)); + } +}