票据系统对子票区间的一个应用
生活随笔
收集整理的這篇文章主要介紹了
票据系统对子票区间的一个应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
因為票據系統對子票區間的管理非常嚴格,但是為了兼容各大系統傳送過來不同格式的數據,所以要做一個簡單的處理!
1、當知道傳入數據一定攜帶“-”時,可以直接使用split對字符串進行拆分
split?拆分字符串
@Testpublic void test10(){String rangNo = "123456-3654123";//拆分String[] split = rangNo.split("-");//String類型String begin = split[0];String end = split[1];//轉intint intBegin = Integer.parseInt(begin);int intEnd = Integer.parseInt(end);//補位String formatBegin = String.format("%012d", intBegin);//只能識別int類型,所以需要轉換String format = String.format("%012d", intEnd);System.out.println(formatBegin+"**************8"+format);}2、如果不確定收到的參數是什么類型,需做兼容處理
contains?集合中是否包含某字符串
indexOf?查詢字符串在第幾位
substring?字符串截取(截取時要注意包前不包后)
@Testpublic void test11(){String rangNo = "123-321";//判空if (StringUtils.isNullOrEmpty(rangNo)){//判斷是否帶“-”boolean contains = rangNo.contains("-");if (contains){//判斷“-”在第幾位int i = rangNo.indexOf("-");//分段獲取String substringBegin = rangNo.substring(0, i);//截取前半部分String substringEnd = rangNo.substring(i + 1);//截取后半部分//補位String formatBegin = String.format("%012d", Integer.parseInt(substringBegin));//只能識別int類型,所以需要轉換String formatEnd = String.format("%012d", Integer.parseInt(substringEnd));System.out.println(formatBegin+"********"+formatEnd);List<String> rangList = new ArrayList<>();rangList.add(formatBegin);rangList.add(formatEnd);return;}}}注意:Integer是有長度限制的,當時小編在寫這個工具類時沒考慮到最大值問題,所以代碼還有一個很明顯的bug,應用實際最重要,結合場景去完善功能吧!!!!!
????????java int 類整數的最大值是 2 的 31 次方 - 1 = 2147483648 - 1 = 2147483647
????????可以用 Integer.MAX_VALUE 表示它,即 int value = Integer.MAX_VALUE;
????????Integer.MAX_VALUE + 1 = Integer.MIN_VALUE = -2147483648
????????再大的數就要用 long (最大值 2 的 63 次方 - 1 )或者 BigDecimal 表示
提取新增Utils方法
package cn.bankapp.ecds.custom.tranServerOld.util;import cn.bankapp.ecds.common.exception.CheckException; import cn.bankapp.ecds.common.exception.ErrorCode;import lombok.extern.log4j.Log4j2; import org.apache.commons.lang.StringUtils;import java.util.ArrayList; import java.util.List;/*** @ClassName RangeNoInspectUntils* @Description TODO* @Author WYD* @Date 2022/7/19 17:45* @Version 1.0*/ @Log4j2 public class RangeNoInspectUntils {/*** 票據區間拆分** @param rangeNo 子區間號* @param beginRangeNo 開始區間* @param endRangeNo 結束區間* @throws Exception*/public List<String> rangeNo(String rangeNo, String beginRangeNo, String endRangeNo) throws Exception {if (StringUtils.isBlank(rangeNo) && StringUtils.isBlank(beginRangeNo) && StringUtils.isBlank(endRangeNo)) {throw new CheckException(ErrorCode.PARAM_NULL, "‘子區間號’或‘起始子區間-結束子區間’至少有一個不能為空");}String beginRangeNoNew;String endRangeNoNew;if (StringUtils.isNotEmpty(rangeNo)) {boolean containsRangeNo = rangeNo.contains("-");if (containsRangeNo) {log.info("-----------子票區間{}-----------", rangeNo);//wyd 20220505 拆分String[] str = rangeNo.split("-");String begin = str[0];String end = str[1];if ("0".equals(begin) && "0".equals(end)) {beginRangeNoNew = begin;endRangeNoNew = end;} else {//獲取截取到的參數int beginNo = Integer.parseInt(begin);int endNo = Integer.parseInt(end);//數據不夠12位進行補齊beginRangeNoNew = String.format("%012d", beginNo);endRangeNoNew = String.format("%012d", endNo);}}else {if ("0".equals(rangeNo)){beginRangeNoNew = "0";endRangeNoNew = "0";}else {log.info("票據區間不存在");throw new Exception("票據區間不存在");}}} else {log.info("-----------起始區間{}-結束區間{}-----------", beginRangeNo, endRangeNo);String rangeNo1 = null;if (StringUtils.isNotBlank(beginRangeNo)) {rangeNo1 = beginRangeNo;} else {rangeNo1 = endRangeNo;}boolean containsBeginRangeNo = rangeNo1.contains("-");if (containsBeginRangeNo) {log.info("----------進入containsBeginRangeNo方法{}----------------", containsBeginRangeNo);int i1 = rangeNo1.indexOf("-");String beginNo = rangeNo1.substring(0, i1);String endNo = rangeNo1.substring(i1 + 1);if ("0".equals(beginNo) && "0".equals(endNo)) {log.info("----------等分化不可拆分票--------------");beginRangeNoNew = beginNo;endRangeNoNew = endNo;} else {log.info("----------等分化可拆分票--------------");//數據不夠12位進行補齊beginRangeNoNew = String.format("%012d", Integer.parseInt(beginNo));endRangeNoNew = String.format("%012d", Integer.parseInt(endNo));}} else {log.info("----------未進入containsBeginRangeNo方法{}----------------", containsBeginRangeNo);if ("0".equals(beginRangeNo) && "0".equals(endRangeNo)) {log.info("----------等分化不可拆分票{}{}--------------", beginRangeNo, endRangeNo);beginRangeNoNew = beginRangeNo;endRangeNoNew = endRangeNo;} else {log.info("----------等分化可拆分票{},{}--------------", beginRangeNo, endRangeNo);//數據不夠12位進行補齊beginRangeNoNew = String.format("%012d", Integer.parseInt(beginRangeNo));endRangeNoNew = String.format("%012d", Integer.parseInt(endRangeNo));}}}List<String> rangeNoList = new ArrayList<>();rangeNoList.add(beginRangeNoNew);rangeNoList.add(endRangeNoNew);log.info("區間號{},{}",beginRangeNoNew,endRangeNoNew);return rangeNoList;}/*** @return void* 測試* @Author WYD* @Description //TODO* @Date 2022/7/19* @Param [args]* @Version 1.0**/public static void main(String[] args) throws Exception {String billNo = "62312313"; // 票號String subString = billNo.substring(0, 1);System.out.println(subString);//區間//等分化票可拆分if ("5".equals(subString) || "6".equals(subString)) {List<String> strings = new RangeNoInspectUntils().rangeNo("0", null, null);System.out.println(strings.get(0));System.out.println(strings.get(1));} else {//傳統票區間默認為12個0System.out.println(String.format("%012d", Integer.parseInt("0"))); // 起始區間System.out.println(String.format("%012d", Integer.parseInt("0"))); // 結束區間}} }總結
以上是生活随笔為你收集整理的票据系统对子票区间的一个应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Use Case框图
- 下一篇: 华为5G认证课堂练习题