我们项目需求,要对两个BigDecimal类型的数据进行比较,
一开始呢,没去看数据库两个字段类型,觉得,这不是简简单单嘛?
for (PurGoodsTraceVo purGoodsTraceVo : systemReportDao.queryPurGoodsTraceList(queryObject)) {
if (distr.equals(distr3)) {
if (purGoodsTraceVo.getSendHosQty().equals(purGoodsTraceVo.getHosPurQty())) {
purGoodsTraceVos.add(purGoodsTraceVo);
}
}
if (distr.equals(distr2)) {
if (purGoodsTraceVo.getSendHosQty().equals(0)) ||purGoodsTraceVo.getStatus().equals("30")){
purGoodsTraceVos.add(purGoodsTraceVo);
}
}
if (distr.equals(distr1)) {
if (!purGoodsTraceVo.getSendHosQty().equals(purGoodsTraceVo.getHosPurQty())
&& (purGoodsTraceVo.getSendHosQty().equals(0)) {
purGoodsTraceVos.add(purGoodsTraceVo);
}
页面判断只有第一个条件成功,后面两个条件怎么都不生效。打断点进来看,传来的数据,值类型为BigDecimal!0.00 !
结果将判断用了compareTo,问题就解决~
for (PurGoodsTraceVo purGoodsTraceVo : systemReportDao.queryPurGoodsTraceList(queryObject)) {
if (distr.equals(distr3)) {
if (purGoodsTraceVo.getSendHosQty().equals(purGoodsTraceVo.getHosPurQty())) {
purGoodsTraceVos.add(purGoodsTraceVo);
}
}
if (distr.equals(distr2)) {
if ((purGoodsTraceVo.getSendHosQty().compareTo(BigDecimal.ZERO) == 0) ||purGoodsTraceVo.getStatus().equals("30")){
purGoodsTraceVos.add(purGoodsTraceVo);
}
}
if (distr.equals(distr1)) {
if (!purGoodsTraceVo.getSendHosQty().equals(purGoodsTraceVo.getHosPurQty())
&& (purGoodsTraceVo.getSendHosQty().compareTo(BigDecimal.ZERO) != 0)) {
purGoodsTraceVos.add(purGoodsTraceVo);
}
}
所以希望看到的小伙伴,在对BigDecimal类型数据进行判断的时候,千万记得用compareTo!