package com.java110;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
* Unit test for simple App.
*/
public class AppTest
{
/**
* Rigorous Test :-)
*/
@Test
public void shouldAnswerWithTrue()
{
String xml = "\n" +
"\n" +
"\t\n" +
"\t\t0\n" +
"\t\t1000000001201805072111632360\n" +
"\t\t1\n" +
"\t\t100000\n" +
"\t\t1000000001\n" +
"\t\t******\n" +
"\t\t600405\n" +
"\t\t6004050001\n" +
"\t\tBUS35011\n" +
"\t\tSVC80003\n" +
"\t\tSVC3300620121001\n" +
"\t\t20180507111632\n" +
"\t\n" +
"\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t100\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630000\n" +
"\t\t\t\t\n" +
"\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" +
"\t\t\t\tT\n" +
"\t\t\t\t$100000$\n" +
"\t\t\t\tQH201800000031-1(1)\n" +
"\t\t\t\t发起人名称\n" +
"\t\t\t\t发起人联系电话\n" +
"\t\t\t\t发起人EMAIL\n" +
"\t\t\t\t原客户订单标识\n" +
"\t\t\t\t客户名称\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t200\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630000\n" +
"\t\t\t\t\n" +
"\t\t\t\t20180503102650\n" +
"\t\t\t\t453289158\n" +
"\t\t\t\t$100000$\n" +
"\t\t\t\t4010100000\n" +
"\t\t\t\t新装\n" +
"\t\t\t\t\n" +
"\t\t\t\t提供测试报告\n" +
"\t\t\t\t要求完成日期\n" +
"\t\t\t\t优先级别\n" +
"\t\t\t\t加急类型\n" +
"\t\t\t\t割接截址时间\n" +
"\t\t\t\t是否等待起租\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t300\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289158\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t\n" +
"\t\t\t\t8630000\n" +
"\t\t\t\t13410725\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\t146748949\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\t00103022000000000000\n" +
"\t\t\t\t\n" +
"\t\t\t\t2210200301100007\n" +
"\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" +
"\t\t\t\t\n" +
"\t\t\t\t\n" +
"\t\t\t\t接入类型 \n" +
"\t\t\t\tMTU数值\n" +
"\t\t\t\t起租/退租系数\n" +
"\t\t\t\t电路类别\n" +
"\t\t\t\t电路类型\n" +
"\t\t\t\t付费方式\n" +
"\t\t\t\t受理运营商\n" +
"\t\t\t\t租用性质\n" +
"\t\t\t\t租用期限\n" +
"\t\t\t\t速率\n" +
"\t\t\t\t电路维护等级\n" +
"\t\t\t\t是否公免电路\n" +
"\t\t\t\tCTYUN账号\n" +
"\t\t\t\t云资源池站点\n" +
"\t\t\t\t付费运营商\n" +
"\t\t\t\t运营商的流水号\n" +
"\t\t\t\t主调局(MAIN_ORG)\n" +
"\t\t\t\t下单局\n" +
"\t\t\t\t业务类型\n" +
"\t\t\t\t项目编号\n" +
"\t\t\t\t合同编号\n" +
"\t\t\t\t公免文号\n" +
"\t\t\t\t是否接入云\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t400\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289158\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t3003000\n" +
"\t\t\t\t50\n" +
"\t\t\t\t:getProdInstAcctIdByExtId(8630000,,148890694,$-70001$)\n" +
"\t\t\t\t5XC\n" +
"\t\t\t\t148890694\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\t\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费周期\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t3003000\n" +
"\t\t\t\t50\n" +
"\t\t\t\t:getProdInstAcctIdByExtId(8630000,,148890695,$-70001$)\n" +
"\t\t\t\t5XC\n" +
"\t\t\t\t148890695\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\t\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费周期\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t500\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289158\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630000\n" +
"\t\t\t\t1\n" +
"\t\t\t\t祁生海\n" +
"\t\t\t\t17797088770\n" +
"\t\t\t\t:getProdInstPartyId(8630000,,146748949,1,489491,$-70001$)\n" +
"\t\t\t\t489491\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\tEMAIL\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630000\n" +
"\t\t\t\t6\n" +
"\t\t\t\t才金花\n" +
"\t\t\t\t18997072118\n" +
"\t\t\t\t:getProdInstPartyId(8630000,,146748949,6,qhdkh002,$-70003$)\n" +
"\t\t\t\tqhdkh002\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\tEMAIL\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630000\n" +
"\t\t\t\t7\n" +
"\t\t\t\t才金花\n" +
"\t\t\t\t18997072118\n" +
"\t\t\t\t:getProdInstPartyId(8630000,,146748949,7,qhdkh002,$-70003$)\n" +
"\t\t\t\tqhdkh002\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\tEMAIL\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t600\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630100\n" +
"\t\t\t\t\n" +
"\t\t\t\t20180503102650\n" +
"\t\t\t\t453289159\n" +
"\t\t\t\t$100000$\n" +
"\t\t\t\t4010100000\n" +
"\t\t\t\t新装\n" +
"\t\t\t\t\n" +
"\t\t\t\t提供测试报告\n" +
"\t\t\t\t要求完成日期\n" +
"\t\t\t\t优先级别\n" +
"\t\t\t\t加急类型\n" +
"\t\t\t\t割接截址时间\n" +
"\t\t\t\t是否等待起租\n" +
"\t\t\t\t业务类型发生端\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t700\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289159\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t\n" +
"\t\t\t\t8630100\n" +
"\t\t\t\t93410727\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\t146748950\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\t00103022000000000001\n" +
"\t\t\t\t\n" +
"\t\t\t\t2210200301100007\n" +
"\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" +
"\t\t\t\t青海省西宁市城西区西关大街81号\n" +
"\t\t\t\t\n" +
"\t\t\t\t运营商\n" +
"\t\t\t\t端口类型\n" +
"\t\t\t\t端口速率\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t800\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289159\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t3001000\n" +
"\t\t\t\t100\n" +
"\t\t\t\t:getProdInstAcctIdByExtId(8630100,,148890696,$-70001$)\n" +
"\t\t\t\t5XC\n" +
"\t\t\t\t148890696\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\t\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费周期\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t3009000\n" +
"\t\t\t\t100\n" +
"\t\t\t\t:getProdInstAcctIdByExtId(8630100,,148890697,$-70001$)\n" +
"\t\t\t\t5XC\n" +
"\t\t\t\t148890697\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\t\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费周期\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t900\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289159\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630100\n" +
"\t\t\t\t5\n" +
"\t\t\t\t祁生海\n" +
"\t\t\t\t 17797088770\n" +
"\t\t\t\t:getProdInstPartyId(8630100,,146748950,5,489505,$-70003$)\n" +
"\t\t\t\t489505\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\tEMAIL\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1000\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289159\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2008000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2009000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2002000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2006000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2005000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2012000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1100\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8110105\n" +
"\t\t\t\t\n" +
"\t\t\t\t20180503102650\n" +
"\t\t\t\t453289160\n" +
"\t\t\t\t$100000$\n" +
"\t\t\t\t4010100000\n" +
"\t\t\t\t新装\n" +
"\t\t\t\t\n" +
"\t\t\t\t提供测试报告\n" +
"\t\t\t\t要求完成日期\n" +
"\t\t\t\t优先级别\n" +
"\t\t\t\t加急类型\n" +
"\t\t\t\t割接截址时间\n" +
"\t\t\t\t是否等待起租\n" +
"\t\t\t\t业务类型发生端\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1200\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289160\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t\n" +
"\t\t\t\t8110105\n" +
"\t\t\t\t93410727\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\t146748951\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\t00103022000000000001\n" +
"\t\t\t\t\n" +
"\t\t\t\t2210200301100007\n" +
"\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" +
"\t\t\t\t北京市朝阳区北辰西路12号数字北京大厦C座4层IPTV播控中心\n" +
"\t\t\t\t\n" +
"\t\t\t\t端口类型 \n" +
"\t\t\t\t运营商\n" +
"\t\t\t\t端口速率\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1300\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289160\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t3001000\n" +
"\t\t\t\t100\n" +
"\t\t\t\t:getProdInstAcctIdByExtId(8110105,,148890698,$-70001$)\n" +
"\t\t\t\t5XC\n" +
"\t\t\t\t148890698\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\t\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费周期\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t3009000\n" +
"\t\t\t\t100\n" +
"\t\t\t\t:getProdInstAcctIdByExtId(8110105,,148890699,$-70001$)\n" +
"\t\t\t\t5XC\n" +
"\t\t\t\t148890699\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\t\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费周期\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1400\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289160\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8110105\n" +
"\t\t\t\t5\n" +
"\t\t\t\t付英武\n" +
"\t\t\t\t 13811985150\n" +
"\t\t\t\t:getProdInstPartyId(8110105,,146748951,5,489515,$-70003$)\n" +
"\t\t\t\t489515\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\tEMAIL\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1500\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289160\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2008000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2009000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2002000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2006000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2005000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2012000\n" +
"\t\t\t\t11\n" +
"\t\t\t\t160000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t收费城市\n" +
"\t\t\t\t一口价标识\n" +
"\t\t\t\t收费运营商\n" +
"\t\t\t\t收费形式\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1600\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289158\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\t100000\n" +
"\t\t\t\t\n" +
"\t\t\t\t1400\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\t100000\n" +
"\t\t\t\t\n" +
"\t\t\t\t1500\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1700\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630000\n" +
"\t\t\t\t\n" +
"\t\t\t\t20180503102650\n" +
"\t\t\t\t453289161\n" +
"\t\t\t\t$100000$\n" +
"\t\t\t\t3010100000\n" +
"\t\t\t\t订购\n" +
"\t\t\t\t\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1800\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289161\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t8630000\n" +
"\t\t\t\t272121238\n" +
"\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" +
"\t\t\t\t134037637\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t2210200301100007\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t1900\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289161\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t2100\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t2101\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t2102\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t2000\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t453289161\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t11\n" +
"\t\t\t\t3003000\n" +
"\t\t\t\t208330\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t208330\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" +
"\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" +
"\t\t\t\t结出单位\n" +
"\t\t\t\t一口价标志\n" +
"\t\t\t\t结出金额币种\n" +
"\t\t\t\t结出金额\n" +
"\t\t\t\t返点比例\n" +
"\t\t\t\t返点客户\n" +
"\t\t\t\t返点类型\n" +
"\t\t\t\tSLA加收比例\n" +
"\t\t\t\t返点单位\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t11\n" +
"\t\t\t\t3001000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" +
"\t\t\t\t结出单位\n" +
"\t\t\t\t一口价标志\n" +
"\t\t\t\t结出金额币种\n" +
"\t\t\t\t结出金额\n" +
"\t\t\t\t返点比例\n" +
"\t\t\t\t返点客户\n" +
"\t\t\t\t返点类型\n" +
"\t\t\t\tSLA加收比例\n" +
"\t\t\t\t返点单位\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t11\n" +
"\t\t\t\t3009000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" +
"\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" +
"\t\t\t\t结出单位\n" +
"\t\t\t\t一口价标志\n" +
"\t\t\t\t结出金额币种\n" +
"\t\t\t\t结出金额\n" +
"\t\t\t\t返点比例\n" +
"\t\t\t\t返点客户\n" +
"\t\t\t\t返点类型\n" +
"\t\t\t\tSLA加收比例\n" +
"\t\t\t\t返点单位\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t11\n" +
"\t\t\t\t3001000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" +
"\t\t\t\t结出单位\n" +
"\t\t\t\t一口价标志\n" +
"\t\t\t\t结出金额币种\n" +
"\t\t\t\t结出金额\n" +
"\t\t\t\t返点比例\n" +
"\t\t\t\t返点客户\n" +
"\t\t\t\t返点类型\n" +
"\t\t\t\tSLA加收比例\n" +
"\t\t\t\t返点单位\n" +
"\t\t\t\n" +
"\t\t\t\n" +
"\t\t\t\t11\n" +
"\t\t\t\t3009000\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" +
"\t\t\t\t0\n" +
"\t\t\t\t1\n" +
"\t\t\t\t0\n" +
"\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" +
"\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" +
"\t\t\t\t结出单位\n" +
"\t\t\t\t一口价标志\n" +
"\t\t\t\t结出金额币种\n" +
"\t\t\t\t结出金额\n" +
"\t\t\t\t返点比例\n" +
"\t\t\t\t返点客户\n" +
"\t\t\t\t返点类型\n" +
"\t\t\t\tSLA加收比例\n" +
"\t\t\t\t返点单位\n" +
"\t\t\t\n" +
"\t\t\n" +
"\t\n" +
"\n";
String logic = "BUS35011 ||{BUS50001 && {3010100002|| 4040100043|| 4041000001|| 4040100027|| 3020100000|| 4040100005|| 4020100000|| 5010200000|| 5010100001}}";
System.out.println(logicCalculus(xml,logic));
}
/**
* 对逻辑字符串进行分析和运算
*
* @param sooXml
* @param keyIdentifyLogicInfo
* @return
* @throws
*/
public static boolean logicCalculus(String sooXml, String keyIdentifyLogicInfo) {
final String PART_STRING_DBL_AMPERSAND = "&&"; //表示字符串:&&
final String PART_STRING_DBL_VERTICAL_BAR = "||"; //表示字符串:||
final String PART_STRING_L_BIG_BRACKET = "{"; //表示字符串:{
final String PART_STRING_R_BIG_BRACKET = "}"; //表示字符串:}
final String PRVT_TRUE_STR = "1";
final String PRVT_FALSE_STR = "0";
final String PRVT_OR_BLANK_STR = " || ";
String keyIdentifyLogicStr = keyIdentifyLogicInfo; //动态变化的关键判断逻辑信息
while (keyIdentifyLogicStr.contains(PART_STRING_L_BIG_BRACKET)
&& keyIdentifyLogicStr.contains(PART_STRING_R_BIG_BRACKET)
|| keyIdentifyLogicStr.contains(PART_STRING_DBL_AMPERSAND)
|| keyIdentifyLogicStr.contains(PART_STRING_DBL_VERTICAL_BAR)
|| !PRVT_TRUE_STR.equals(keyIdentifyLogicStr) && !PRVT_FALSE_STR.equals(keyIdentifyLogicStr)) {
int leftBigBracketPosition = 0; //最内左大括号的位置
int rightBigBracketPosition = 0; //最内右大括号的位置
String curProcessStr = keyIdentifyLogicStr; //当前要处理的字符串片断
if (keyIdentifyLogicStr.contains(PART_STRING_L_BIG_BRACKET)
&& keyIdentifyLogicStr.contains(PART_STRING_R_BIG_BRACKET)) {
leftBigBracketPosition = keyIdentifyLogicStr.lastIndexOf(PART_STRING_L_BIG_BRACKET);
rightBigBracketPosition = keyIdentifyLogicStr
.indexOf(PART_STRING_R_BIG_BRACKET, leftBigBracketPosition);
curProcessStr = keyIdentifyLogicStr.substring(leftBigBracketPosition + 1, rightBigBracketPosition);
}
String rsltLogicStr = "";
if (curProcessStr.contains(PART_STRING_DBL_VERTICAL_BAR)) {
String[] orLogicStrs = curProcessStr.split("\\|\\|"); //“或”逻辑信息
int orLogicStrNum = orLogicStrs.length;
String curOrLogicStr = "";
String curAndLogicStr = "";
String orLogicStr = "";
String andLogicStr = "";
boolean hasTrue = false;
for (int i = 0; i < orLogicStrNum; i++) {
curOrLogicStr = orLogicStrs[i];
if (null != curOrLogicStr) {
curOrLogicStr = curOrLogicStr.trim();
}
if (null == curOrLogicStr || "".equals(curOrLogicStr)) {
System.out.println("字段配置错误,两个||之间不能没有信息");
return false;
}
orLogicStr = PRVT_FALSE_STR;
if (curOrLogicStr.contains(PART_STRING_DBL_AMPERSAND)) {
String[] andLogicStrs = curOrLogicStr.split(PART_STRING_DBL_AMPERSAND); //“与”逻辑信息
int andLogicStrNum = andLogicStrs.length;
andLogicStr = PRVT_TRUE_STR;
for (int j = 0; j < andLogicStrNum; j++) {
curAndLogicStr = andLogicStrs[j];
if (null != curAndLogicStr) {
curAndLogicStr = curAndLogicStr.trim();
}
if (null == curAndLogicStr || "".equals(curAndLogicStr)) {
System.out.println("字段配置错误,两个&&之间不能没有信息");
return false;
}
if (!sooXml.contains(curAndLogicStr) || PRVT_FALSE_STR.equals(curAndLogicStr)) {
andLogicStr = PRVT_FALSE_STR;
break;
}
}
if ("".equals(rsltLogicStr)) {
rsltLogicStr = andLogicStr;
} else {
rsltLogicStr += PRVT_OR_BLANK_STR + andLogicStr;
}
} else {
if (sooXml.contains(curOrLogicStr) && !"0".equals(curOrLogicStr) || PRVT_TRUE_STR.equals(curOrLogicStr)) {
if (!hasTrue) {
orLogicStr = PRVT_TRUE_STR;
if ("".equals(rsltLogicStr)) {
rsltLogicStr = orLogicStr;
} else {
rsltLogicStr += PRVT_OR_BLANK_STR + orLogicStr;
}
hasTrue = true;
}
}
}
}
if (!hasTrue) {
if ("".equals(rsltLogicStr)) {
rsltLogicStr = orLogicStr;
} else {
rsltLogicStr += PRVT_OR_BLANK_STR + orLogicStr;
}
}
} else if (curProcessStr.contains(PART_STRING_DBL_AMPERSAND)) {
String[] andLogicStrs = curProcessStr.split(PART_STRING_DBL_AMPERSAND); //“与”逻辑信息
int andLogicStrNum = andLogicStrs.length;
String curAndLogicStr = "";
String andLogicStr = PRVT_TRUE_STR;
for (int j = 0; j < andLogicStrNum; j++) {
curAndLogicStr = andLogicStrs[j];
if (null != curAndLogicStr) {
curAndLogicStr = curAndLogicStr.trim();
}
if (null == curAndLogicStr || "".equals(curAndLogicStr)) {
System.out.println("字段配置错误,两个&&之间不能没有信息");
return false;
}
if (!sooXml.contains(curAndLogicStr) || PRVT_FALSE_STR.equals(curAndLogicStr)) {
andLogicStr = PRVT_FALSE_STR;
break;
}
}
rsltLogicStr = andLogicStr;
} else {
String andLogicStr = PRVT_TRUE_STR;
if (!sooXml.contains(curProcessStr) || PRVT_FALSE_STR.equals(curProcessStr)) {
andLogicStr = PRVT_FALSE_STR;
}
rsltLogicStr = andLogicStr;
}
System.out.println("替换前判断逻辑字符串(keyIdentifyLogicStr) :{}"+ keyIdentifyLogicStr);
System.out.println("当前用于替换的逻辑字符串(rsltLogicStr) :{}"+rsltLogicStr);
if (0 != rightBigBracketPosition) {
keyIdentifyLogicStr = keyIdentifyLogicStr.substring(0, leftBigBracketPosition) + rsltLogicStr
+ keyIdentifyLogicStr.substring(rightBigBracketPosition + 1);
} else {
keyIdentifyLogicStr = rsltLogicStr;
}
System.out.println("替换后判断逻辑字符串(keyIdentifyLogicStr) :{}"+keyIdentifyLogicStr);
}
if (PRVT_TRUE_STR.equals(keyIdentifyLogicStr)) {
return true;
}
return false;
}
}