原来的代码:
1 if (makeAnAppointment.size() > 0) { 2 3 // 总号数-待支付号数-已确定号数 4 int make = plus.getPlusNumber() - makeAnAppointment.size() - plus.getMakeAnAppointment(); 5 for (MakeAnAppointment ma : makeAnAppointment) { 6 if (ma.getPatientId() == patientId) { // 存在个人未支付的号 7 8 long s1 = (System.currentTimeMillis() - ma.getCreateTime()) / 60000; 9 if (s1 <= 60L) { 10 if (make == 0) { 11 orderPlusVo.setStatus(1); 12 continue; 13 } 14 orderPlusVo.setStatus(make > 0 ? 1 : 0); 15 continue; 16 } 17 make++; 18 continue; 19 } 20 orderPlusVo.setStatus(make > 0 ? 1 : 0); 21 } 22 } else { 23 orderPlusVo.setStatus(plus.getPlusNumber() - plus.getMakeAnAppointment() > 0 ? 1 : 0); 24 }
改造后代码:
1 // 总号数-待支付号数-已确定号数 2 int make = plus.getPlusNumber() - plus.getMakeAnAppointment() - makeAnAppointment.size(); 3 if (make > 0) { 4 orderPlusVo.setStatus(Globals.REMAINING_HAVE); 5 } else { 6 orderPlusVo.setStatus(Globals.REMAINING_NONE); 7 for (MakeAnAppointment ma : makeAnAppointment) { 8 if (ma.getPatientId().equals(patientId) 9 && System.currentTimeMillis() <= ma.getCreateTime() + 1000 * 60 * 60) { 10 orderPlusVo.setStatus(Globals.REMAINING_HAVE); 11 } 12 } 13 }
这两段代码是实现个人是否可以预约号的功能,原来的代码先从预约列表的个数分0和大于0两种情况,在预约列表大于0的情况下再去查看是否含有个人未支付且支付未过期的预约信息,但逻辑混乱,让人读起来一头雾水。
下面的代码就清晰了很多,首先看是否还有未被预约的号,没有的情况下看是否含有自己预约未支付且在支付期限内的号,还没有就是真的没有了。