动态拼接手机号
1 package com.sinosoft.lis.service.bl.query; 2 3 import com.sinosoft.lis.db.LCAddressDB; 4 import com.sinosoft.lis.db.LCAppntDB; 5 import com.sinosoft.lis.db.LCContDB; 6 import com.sinosoft.lis.db.LPEdorItemDB; 7 import com.sinosoft.lis.pubfun.GlobalInput; 8 import com.sinosoft.lis.pubfun.PubFun; 9 import com.sinosoft.lis.schema.LCAddressSchema; 10 import com.sinosoft.lis.schema.LCAppntSchema; 11 import com.sinosoft.lis.schema.LCContSchema; 12 import com.sinosoft.lis.service.bean.*; 13 import com.sinosoft.lis.service.bl.PEdorApplyService; 14 import com.sinosoft.lis.service.workflow.ProcessService; 15 import com.sinosoft.lis.vschema.LPEdorItemSet; 16 import com.sinosoft.utility.CErrors; 17 import com.sinosoft.utility.ExeSQL; 18 import com.sinosoft.utility.SQLwithBindVariables; 19 import com.sinosoft.utility.SSRS; 20 import com.sinosoft.utility.VData; 21 import org.apache.log4j.Logger; 22 import org.junit.Test; 23 24 import java.util.ArrayList; 25 import java.util.List; 26 27 /** 28 * 犹豫期退保保单明细信息查询 29 * Created by MyPC on 2018/11/20. 30 */ 31 public class PEdorWTDetailQueryService implements PEdorQueryInterface{ 32 private Logger mLogger = Logger.getLogger(PEdorZPDetailQueryService.class); 33 34 /** 35 * 错误信息 36 */ 37 private CErrors mErrors = new CErrors(); 38 39 /** 40 * 往后面传输数据的容器 41 */ 42 private VData mInputData = new VData(); 43 44 private GlobalInput mGlobalInput = new GlobalInput(); 45 46 /** 47 * 请求参数 48 */ 49 private PEdorRequestBean mPEdorRequestBean = new PEdorRequestBean(); 50 51 /** 52 * 返回参数 53 */ 54 private PEdorResponseBean mPEdorResponseBean = new PEdorResponseBean(); 55 56 //返回参数容器 57 private VData mResult = new VData(); 58 59 60 @Override 61 public boolean submitData(VData cInputData, String cOperter) { 62 mInputData = (VData) cInputData.clone(); 63 if (!getInputData(mInputData, cOperter)) { 64 return false; 65 } 66 // 进行业务处理 67 if (!dealData()) { 68 return false; 69 } 70 return true; 71 } 72 73 /** 74 * @param cInputData 75 * @param cOperate 76 * @return 77 * @desc 获取参数数据 78 */ 79 private boolean getInputData(VData cInputData, String cOperate) { 80 81 mGlobalInput = (GlobalInput) mInputData.getObjectByObjectName("GlobalInput", 0); 82 mPEdorRequestBean = (PEdorRequestBean) mInputData.getObjectByObjectName("PEdorRequestBean", 0); 83 mPEdorRequestBean.setEdorAppDate(PubFun.getCurrentDate()); 84 if (mGlobalInput == null || mPEdorRequestBean == null) { 85 mErrors.addOneError("接收前台数据失败!"); 86 return false; 87 } 88 89 mPEdorRequestBean.setEdorAppDate(PubFun.getCurrentDate()); 90 mPEdorRequestBean.setEdorAppName("Test"); 91 mPEdorRequestBean.setAppntIDType("999"); 92 mPEdorRequestBean.setAppntName("Test"); 93 mPEdorRequestBean.setBankCode("000"); 94 mPEdorRequestBean.setBankAccNo("1131232132"); 95 mPEdorRequestBean.setAccName("Test"); 96 mPEdorRequestBean.setEdorAppIDType("999"); 97 mPEdorRequestBean.setEdorAppIDNO("0"); 98 mPEdorRequestBean.setPersonName("Test"); 99 mPEdorRequestBean.setPersonIDNO("0"); 100 101 return true; 102 } 103 104 /** 105 * 数据操作业务处理 106 * 107 * @return: boolean 108 */ 109 private boolean dealData() { 110 String tSql = " select RiskCode, " 111 +" (select RiskName " 112 +" from LMRisk " 113 +" where LMRisk.RiskCode = c.RiskCode), " 114 +" InsuredName,CValiDate,EndDate, " 115 +" Amnt,Mult, " 116 +" nvl((select sum(p.prem) " 117 +" from lcprem p " 118 +" where paystartdate <= '?EdorAppDate?' " 119 +" and payenddate >= '?EdorAppDate?' " 120 +" and p.polno = c.polno " 121 +" and p.payplantype in ('0')),0), " 122 +" nvl((select sum(p.prem) " 123 +" from lcprem p " 124 +" where paystartdate <= '?EdorAppDate?' " 125 +" and payenddate >= '?EdorAppDate?' " 126 +" and p.polno = c.polno " 127 +" and p.payplantype in ('01', '03')),0), " 128 +" nvl((select sum(p.prem) " 129 +" from lcprem p " 130 +" where paystartdate <= '?EdorAppDate?' " 131 +" and payenddate >= '?EdorAppDate?' " 132 +" and p.polno = c.polno " 133 +" and p.payplantype in ('02', '04')),0), " 134 +" polno,mainpolno,paytodate " 135 +" from LCPol c " 136 +" where ContNo = '?ContNo?' " 137 +" and ((appflag = '1' and " 138 +" (select count(*) " 139 +" from lccontstate s " 140 +" where trim(statetype) in ('Terminate') " 141 +" and trim(state) = '1' " 142 +" and trim(statereason) not in ('05', '06') " 143 +" and ((startdate <= '?EdorAppDate?' and '?EdorAppDate?' <= enddate) or " 144 +" (startdate <= '?EdorAppDate?' and enddate is null)) " 145 +" and s.polno = c.polno) = 0) or " 146 +" (appflag = '4' and (select count(*) " 147 +" from lccontstate s " 148 +" where trim(statetype) in ('Terminate') " 149 +" and trim(state) = '1' " 150 +" and trim(statereason) in ('05', '06') " 151 +" and ((startdate <= '?EdorAppDate?' and '?EdorAppDate?' <= enddate) or " 152 +" (startdate <= '?EdorAppDate?' and enddate is null)) " 153 +" and s.polno = c.polno) > 0)) "; 154 ExeSQL tExeSQL = new ExeSQL(); 155 SQLwithBindVariables tSQLwithBindVariables = new SQLwithBindVariables(); 156 tSQLwithBindVariables.sql(tSql); 157 tSQLwithBindVariables.put("EdorAppDate",PubFun.getCurrentDate()); 158 tSQLwithBindVariables.put("ContNo",mPEdorRequestBean.getContNo()); 159 SSRS tSSRS = new SSRS(); 160 tSSRS = tExeSQL.execSQL(tSQLwithBindVariables); 161 if(tSSRS == null || tSSRS.getMaxRow() < 1 ){ 162 mErrors.addOneError("该保单没有可操作的险种"); 163 return false; 164 } 165 PEdorWTBean tPEdorWTBean = new PEdorWTBean(); 166 List tAddRiskList = new ArrayList(); 167 168 List tMainRiskList = new ArrayList(); 169 for(int i = 1; i<= tSSRS.getMaxRow(); i++){ 170 String tRiskCode = tSSRS.GetText(i,1); //险种编码 171 String tRiskName = tSSRS.GetText(i,2); //险种名称 172 String tInsuredName = tSSRS.GetText(i,3); //被保人名称 173 String tCValiDate = tSSRS.GetText(i,4); //险种生效日期 174 String tEndDate = tSSRS.GetText(i,5); //险种终止日期 175 String tAmnt = tSSRS.GetText(i,6);//保额 176 String tMult = tSSRS.GetText(i,7);//份数 177 String tPrem = tSSRS.GetText(i,8);//保费 178 String tHeathPrem = tSSRS.GetText(i,9);//健康加费 179 String tJobPrem = tSSRS.GetText(i,10);//职业加费 180 String tPolNo = tSSRS.GetText(i,11);//险种编码 181 String tMainPolNo = tSSRS.GetText(i,12);//主险编码 182 String tPayToDate = tSSRS.GetText(i,13);//缴费对应日期 183 184 if(tPolNo.equals(tMainPolNo)){ 185 tPEdorWTBean.setMainRiskCode(tRiskCode); 186 tPEdorWTBean.setMainRiskName(tRiskName); 187 tPEdorWTBean.setInsuredName(tInsuredName); 188 tPEdorWTBean.setValidDate(tCValiDate); 189 tPEdorWTBean.setExpireDate(tEndDate); 190 tPEdorWTBean.setAmnt(tAmnt); 191 tPEdorWTBean.setMult(tMult); 192 tPEdorWTBean.setPrem(tPrem); 193 tPEdorWTBean.setHealthPrem(tHeathPrem); 194 tPEdorWTBean.setJobPrem(tJobPrem); 195 tPEdorWTBean.setPayDate(tPayToDate); 196 197 MainRisk tMainRisk = new MainRisk(); 198 tMainRisk.setRiskCode(tRiskCode); 199 tMainRisk.setRiskName(tRiskName); 200 tMainRisk.setInsuredName(tInsuredName); 201 tMainRisk.setAmnt(tAmnt); 202 tMainRisk.setMult(tMult); 203 tMainRisk.setPrem(tPrem); 204 tMainRisk.setHealthPrem(tHeathPrem); 205 tMainRisk.setJobPrem(tJobPrem); 206 tMainRisk.setPayDate(tPayToDate); 207 tMainRiskList.add(tMainRisk); 208 209 }else{ 210 AddtRisk tAddRisk = new AddtRisk(); 211 tAddRisk.setRiskCode(tRiskCode); 212 tAddRisk.setRiskName(tRiskName); 213 tAddRisk.setPrem(tPrem); 214 tAddRisk.setMult(tMult); 215 tAddRisk.setAmnt(tAmnt); 216 tAddRisk.setHealthPrem(tHeathPrem); 217 tAddRisk.setJobPrem(tJobPrem); 218 tAddRisk.setPayDate(tPayToDate); 219 tAddRiskList.add(tAddRisk); 220 } 221 } 222 tPEdorWTBean.setAddtRisksList(tAddRiskList); 223 224 tPEdorWTBean.setMainRisksList(tMainRiskList); 225 226 //查询保单信息 227 LCContDB tLCContDB = new LCContDB(); 228 tLCContDB.setContNo(mPEdorRequestBean.getContNo()); 229 if(!tLCContDB.getInfo()){ 230 mErrors.addOneError("该保单不存在!"); 231 return false; 232 } 233 LCContSchema tLCContSchema = tLCContDB.getSchema(); 234 tPEdorWTBean.setContNo(tLCContSchema.getContNo()); 235 tPEdorWTBean.setAppntName(tLCContSchema.getAppntName()); 236 //账户信息获取 237 String lSqlString = "select b.bankcode, (Select trim(codename) from ldcode where trim(code) = b.bankcode and codetype='bank'),b.bankaccno, b.accname" + 238 " from lccont a, ljtempfeeclass b" + 239 " where 1=1 and ( b.otherno = a.prtno or b.otherno=a.contno) and a.contno = '?ContNo?'" + 240 " and b.paymode in('04','14','15','16','17')" + 241 " and b.TempFeeType in ('11')" + 242 " order by b.enteraccdate desc, b.maketime desc "; 243 ExeSQL lExeSQL = new ExeSQL(); 244 SQLwithBindVariables sqlbv1 = new SQLwithBindVariables(); 245 sqlbv1.sql(lSqlString); 246 sqlbv1.put("ContNo",mPEdorRequestBean.getContNo()); 247 SSRS lSSRS = lExeSQL.execSQL(sqlbv1); 248 tPEdorWTBean.setNewBankCode(lSSRS.GetText(1,1));//银行编码 249 tPEdorWTBean.setNewBankAccNo(lSSRS.GetText(1,3));//银行账号 250 tPEdorWTBean.setNewBankAccName(lSSRS.GetText(1,4));//户名 251 tPEdorWTBean.setNewBankName(lSSRS.GetText(1,2));//开户行 252 253 254 LCAppntDB tLCAppntDB = new LCAppntDB(); 255 tLCAppntDB.setContNo(tLCContSchema.getContNo()); 256 if(!tLCAppntDB.getInfo()){ 257 mErrors.addOneError("对不起,该单投保人信息缺失!!"); 258 return false; 259 } 260 LCAppntSchema tLCAppntSchema = tLCAppntDB.getSchema(); 261 262 LCAddressDB tLCAddressDB = new LCAddressDB(); 263 tLCAddressDB.setAddressNo(tLCAppntSchema.getAddressNo()); 264 tLCAddressDB.setCustomerNo(tLCAppntSchema.getAppntNo()); 265 if(!tLCAddressDB.getInfo()){ 266 mErrors.addOneError("对不起,该单投保人地址信息缺失!!"); 267 return false; 268 } 269 270 //2019-06-18电话修改 2019-06-21 271 String phoneSql=" SELECT distinct phone FROM lcaddress a WHERE a.customerno='?Customerno?' and a.phone is not null" 272 + " union" 273 + " SELECT distinct mobile FROM lcaddress a WHERE a.customerno='?Customerno?' and a.mobile is not null" 274 + " union" 275 + " SELECT distinct companyphone FROM lcaddress a WHERE a.customerno='?Customerno?' and a.companyphone is not null"; 276 SQLwithBindVariables sqlbv2=new SQLwithBindVariables(); 277 sqlbv2.sql(phoneSql); 278 sqlbv2.put("Customerno",tLCAppntSchema.getAppntNo()); 279 SSRS sSSRS = new ExeSQL().execSQL(sqlbv2); 280 String tAppntMobile = ""; 281 if(sSSRS == null || sSSRS.getMaxRow()<= 0){ 282 283 284 }else{ 285 for(int i = 1; i<= sSSRS.getMaxRow(); i++) { 286 //进行手机号拼接 287 if(sSSRS.GetText(i, 1) != null && sSSRS.GetText(i, 1).matches("1\\d{10}")&&!"".equals(sSSRS.GetText(i,1))) { 288 if (i < sSSRS.getMaxRow()) { 289 tAppntMobile += sSSRS.GetText(i, 1) + ","; 290 291 } else { 292 293 tAppntMobile += sSSRS.GetText(i, 1); 294 } 295 } 296 297 } 298 } 299 // 解决手机号尾部挂逗号的问题 2019-06-21 300 if(!"".equals(tAppntMobile)){ 301 String last = tAppntMobile.substring(tAppntMobile.length()-1, tAppntMobile.length()); 302 303 if(",".equals(last)){ 304 tAppntMobile= tAppntMobile.substring(0, tAppntMobile.length()-1); 305 306 } 307 } 308 309 310 tPEdorWTBean.setMobilePhone(tAppntMobile); 311 tPEdorWTBean.setEdorType("WT"); 312 313 //保全试算 314 PEdorApplyService tPEdorApplyService = new PEdorApplyService(); 315 if (!tPEdorApplyService.edorTest(mPEdorRequestBean)) { 316 mErrors.addOneError(tPEdorApplyService.getErrors().getFirstError()); 317 PEdorResponseBean tPEdorResponseBean = (PEdorResponseBean) tPEdorApplyService.getResult().getObjectByObjectName("PEdorResponseBean", 0); 318 String tEdorAcceptNo = tPEdorResponseBean.getEdoracceptNo(); 319 mPEdorResponseBean.setEdoracceptNo(tEdorAcceptNo); 320 return false; 321 } 322 PEdorResponseBean tPEdorResponseBean = (PEdorResponseBean) tPEdorApplyService.getResult().getObjectByObjectName("PEdorResponseBean", 0); 323 String tEdorAcceptNo = tPEdorResponseBean.getEdoracceptNo(); 324 mPEdorResponseBean.setEdoracceptNo(tEdorAcceptNo); 325 326 tPEdorWTBean.setContNo(mPEdorRequestBean.getContNo()); 327 String tSQL = "select (select RiskName from LMRisk b where b.RiskCode = a.RiskCode),a.cvalidate,a.enddate from lcpol a where a.mainpolno = a.polno and a.contno='?Contno?'"; 328 tSQLwithBindVariables = new SQLwithBindVariables(); 329 tSQLwithBindVariables.sql(tSQL); 330 tSQLwithBindVariables.put("Contno", mPEdorRequestBean.getContNo()); 331 332 SSRS ttSSRS = new ExeSQL().execSQL(tSQLwithBindVariables); 333 if (ttSSRS == null || ttSSRS.MaxRow == 0) { 334 mErrors.addOneError("没有查询到主险信息!"); 335 return false; 336 } 337 338 //银保通 339 tPEdorWTBean.setMainRiskName(ttSSRS.GetText(1, 1)); 340 tPEdorWTBean.setYBTRiskName(ttSSRS.GetText(1, 1)); 341 tPEdorWTBean.setValidDate(ttSSRS.GetText(1, 2)); 342 tPEdorWTBean.setExpireDate(ttSSRS.GetText(1, 3)); 343 tPEdorWTBean.setOccurBala(tPEdorResponseBean.getGetMoney()); 344 tPEdorWTBean.setSXMoney(tPEdorResponseBean.getSXFee()); 345 346 347 List tWTList = new ArrayList(); 348 tWTList.add(tPEdorWTBean); 349 mPEdorResponseBean.setPEdorWTList(tWTList); 350 351 ProcessService tProcessService = new ProcessService(); 352 if(!tProcessService.edorCancel(tEdorAcceptNo)){ 353 return false; 354 } 355 356 return true; 357 } 358 359 @Override 360 public CErrors getErrors() { 361 return mErrors; 362 } 363 364 @Override 365 public VData getResult() { 366 mResult.clear(); 367 mResult.add(mPEdorResponseBean); 368 return mResult; 369 } 370 371 @Test 372 public void aaaa(){ 373 // mPEdorRequestBean.setContNo("201937170412000261"); 374 // dealData(); 375 376 // String str1="12345@qq.com"; 377 // //查询@在字符串中出现的位置 378 // int index=str1.indexOf("@"); //下标从0开始 379 // System.out.println("注意String字符串的下表是从0开始的"); 380 // System.out.println("@在字符串中出现的位置:"+index); 381 // //查询q在字符串中最后一次出现的位置 382 // int index2=str1.lastIndexOf("q"); 383 // System.out.println("q在字符串中最后一次出现的位置:"+index2); 384 // //获取@之后的所有字符串 subString(int beginIndex) 包含beginIndex 385 // System.out.println("获取@之后的所有字符串:"+str1.substring(index+1)); 386 // /* 387 // * 查询 qq 388 // * subString(int beginIndex,int endIndex) 389 // * 01.找到点的位置 390 // * 02.不包含 endIndex 391 // */ 392 // int index3=str1.indexOf("."); 393 // String result = str1.substring(index+1, index3); 394 // System.out.println("result====>"+result); 395 396 //去除空格 397 // String str1=" abc def "; 398 // System.out.println("空格计算长度:"+str1.length()); 399 // //去除字符串两边的空格 400 // str1=str1.trim(); 401 // System.out.println("去除空格之后内容:"+str1); 402 // System.out.println("去除空格之后:"+str1.length());//中间的空格去除不了 403 // String str1="abcdef"; 404 // //把a替换成6 405 // str1 = str1.replace("a", "6"); 406 // System.out.println(str1); 407 // //是否以6开始 408 // System.out.println("是否以6开始:"+str1.startsWith("6")); 409 // System.out.println("是否以a结尾:"+str1.endsWith("a")); 410 411 412 // String str1="abcdef"; 413 // //截取一个字符 返回值是char 414 // char a =str1.charAt(3);//下标是从0开始的 415 // System.out.println(a); 416 // String str1="abcdef"; 417 // //将字符存储在字节数组中 418 // byte[] bytes = str1.getBytes(); 419 // for (byte b : bytes) { 420 // System.out.println((char)b); 421 422 // String str1="abc"; 423 // String str2="def"; 424 // //之前的字符串相加 425 // System.out.println(str1+str2); 426 // //现在concat(String str) 427 // System.out.println(str1.concat(str2)); 428 429 // String str1="abc"; 430 // //是否包含某个指定的字符 431 // System.out.println("是否包含a这个字符:"+str1.contains("a")); 432 433 434 //01.定义变量 435 String name="xiaohei"; 436 //02.定义操作字符串的次数 437 int count=2000000; 438 //03.设置开始时间 439 long beginTime=System.currentTimeMillis(); 440 for (int i = 0; i <count/100; i++) { 441 name+="haha"; 442 } 443 //03.设置结束时间 444 long endTime=System.currentTimeMillis(); 445 System.out.println("String的执行时间:"+(endTime-beginTime)); 446 System.out.println("****************************"); 447 name="xiaohei"; 448 //04.使用StringBuffer 449 StringBuffer buffer=new StringBuffer(name); 450 beginTime=System.currentTimeMillis(); 451 for (int i = 0; i <count; i++) { 452 buffer=buffer.append("haha"); 453 } 454 endTime=System.currentTimeMillis(); 455 System.out.println("StringBuffer的执行时间:"+(endTime-beginTime)); 456 System.out.println("****************************"); 457 name="xiaohei"; 458 //05.使用StringBuilder 459 StringBuilder builder=new StringBuilder(name); 460 beginTime=System.currentTimeMillis(); 461 for (int i = 0; i <count; i++) { 462 builder=builder.append("haha"); 463 } 464 endTime=System.currentTimeMillis(); 465 System.out.println("StringBuilder的执行时间:"+(endTime-beginTime)); 466 467 } 468 }