今天修改一个问题,就是不同端封装的不同对象,请求同一个接口,同一个数据,在通用的一个逻辑转换状态中获取到不同的状态的奇葩问题。
其实本身两个接口大部分代码是相同的,是直接拷贝过去的,其实就是最后的结果对象参数稍微有点区别,大部分逻辑都是重复的,又重新抄一遍写上去,又臭又长的,但是同一份数据竟然结果不一样。我这边只能是把两个共通的逻辑抽出来,这样看出是不是逻辑那块有问题。
结果发现不对,实际状态转换的代码使用一样的,同一份数据却结果不同。
if ("finished".equals(workFlow.getProcessIsFinished())) {
if (workFlow.isPass()) {
workApplicationResponse.setApplicationStatus(ApplicationStatus.APPROVED.getValue());
}else {
workApplicationResponse.setApplicationStatus(ApplicationStatus.REJECT.getValue());
}
}else if ("unfinished".equals(workFlow.getProcessIsFinished())) {
if (workFlow.getEndTime() == null) {
workApplicationResponse.setApplicationStatus(ApplicationStatus.UNDER_REVIEW.getValue());
}else {
workApplicationResponse.setApplicationStatus(ApplicationStatus.REVOKE.getValue());
}
}
问题在哪呢,其实就是在转换获取List这个列表的时候导致的。
一个是
ist<LxzlWorkFlow> workFlowList = EntityConverter.convertList(workFlowPage.getList(), LxzlWorkFlow.class);
另一个是
List<LxzlWorkFlow> list = workFlowPage.getList();
String str = JSON.toJSONString(list);
List<LxzlWorkFlow> workFlowList = JSONObject.parseArray(str, LxzlWorkFlow.class);
最后是第二份JSON序列化的endTime成功序列化出来的,另一个是直接返回null,所以说在做转换的时候导致字段“丢失”。
看了一下是别人写的内部工具类,真是“坑爹”,你做了测试吗,别这么玩?玛德今天因为其他的事,在这么一搞心态有点崩,自己发泄一下,关关难过关关过,早点开完大会,早点疫情结束。