欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

工作中系统bug解决过程——split分割/substring截取字符串

程序员文章站 2022-06-01 15:13:53
...

工作记录

总结工作经验

本人是公司实习菜鸟,一般会安排一些比较基础与简单的任务让我来做。这次公司前辈就安排给我一个系统bug我来解决,这个系统是前后端分离,前端vue,后端Java。
而我上一分钟刚刚学习一个全是js的系统前端,突然转回来看另一个系统的后端代码,就有一丢丢蒙圈;再加上任务安排了刚有一会,公司就通知我要去做一些比较零碎的技术无关的事情,昨天快要脑壳痛死了,不过还好幸运,向各位大佬们学习,这个问题很快就迎刃而解了。

系统问题排查

1、从前端测试系统,发现浏览器network中返回的数据requireCount这个数值不正确。数据是从另一个系统导入的,库里的数据确定不会出错,应该是后端处理数据出了问题。

工作中系统bug解决过程——split分割/substring截取字符串

工作中系统bug解决过程——split分割/substring截取字符串

2、后端对此处计算的特殊处理。可以看到特殊处理是getTourName然后对里面的0-9数字进行replaceAll操作。

if (originSalesDTOList.get(0).getCompanyNo().equals("xx团编号")) {
            ...
            ...
                String tourDateStr = "2019" + z.getTourName().replaceAll("[^0-9]","");
                try {
                   ...
                   ...
                } catch (Exception e) {
                    return false;
                }
            }).collect(Collectors.toList());
           ...
           ...
        }

3、查看前端返回的tourName中的数据。可以看到,字段中的所有数字不光是代表日期。例如PVG-1227-J2M:J2M中还有个2。
工作中系统bug解决过程——split分割/substring截取字符串
工作中系统bug解决过程——split分割/substring截取字符串

工作中系统bug解决过程——split分割/substring截取字符串

问题出现的原因

String tourDateStr = "2019" + z.getTourName().replaceAll("[^0-9]","");

tourName中有多余数字的,例如PVG-1227-J2M,通过以上处理过后,所有数字为201912272,多出2,并不是代表日期的一段数字,解析失败,try catch返回false。

解决方法

工作中系统bug解决过程——split分割/substring截取字符串
split通过“-”分割字符串,例如PVG-1227-J2M,分割开为PVG、1227与J2M,通过索引取第二个字段,索引为1,取到1227,再加上2019,可以得出正确的日期20191227。

String tourDateStr = "2019" + z.getTourName().split("-")[1];

此处建议使用substring,原因tourName是用户人为录入,格式不固定,不能确定一直有“-”,所以直接substring截取字符串,保持固定长度,减小出错概率。

if (originSalesDTOList.get(0).getCompanyNo().equals("xx团编号")) {
            ...
            ...
				//substring截取4-8位
                String tourDateStr = "2019" + z.getTourName().substring(4,8);
                try {
                   ...
                   ...
                } catch (Exception e) {
                    return false;
                }
            }).collect(Collectors.toList());
            ...
            ...
        }

总结

这样改过bug解决,测试通过。还需努力,多多向大佬们学习!
工作中系统bug解决过程——split分割/substring截取字符串