以下代码具有浓烈的坏味道,根据自己的手感,保证以功能>性能>可读性,重构之。
更多练习,可参见
- http://www.moilioncircle.com/actions/006.quiz.case-mini-accounting.html
- http://www.moilioncircle.com/actions/005.quiz.case-blind-date.html
- http://www.moilioncircle.com/actions/004.quiz.case-mini-authentication.html
- http://www.moilioncircle.com/actions/003.quiz.sql-loan-sum.html
- http://www.moilioncircle.com/actions/002.quiz.java-build-sql.html
List<BaggagePo> baggagePos = baggageDao.findByOrderMainId(orderMainPo.getId());
int k = 0;
int l = 0;
List<String> orderNumNoUse = new ArrayList<>();
List<String> orderNumUse = new ArrayList<>();
if (orderMainPo.getIsLocal() == 1) {
for (BaggagePo po : baggagePos) {
if (po.getStatus() == OrderStatusEnum.USUS_PICK.code()) {
orderNumNoUse.add(k, po.getTrackNumUs());
k++;
}
if (po.getStatus() != OrderStatusEnum.USUS_PICK.code()) {
orderNumUse.add(l, po.getTrackNumUs());
l++;
}
}
List<ImptFedexBillsPo> imptFedexBillsPos = fedexBillsDao.findByOrderMainId(orderMainPo.getId());
if (DecimalUtil.add(new BigDecimal(imptFedexBillsPos.size()), new BigDecimal(k)).equals(new BigDecimal(baggagePos.size()))) {
orderMainService.updateStatus(orderMainPo.getId(), OrderStatusEnum.USUS_PAY.code());
for (BaggagePo po : baggagePos) {
BaggagePo baggagePo = baggageDao.findById(po.getId());
baggagePo.setModifyTime(new Date());
baggagePo.setStatus(OrderStatusEnum.USUS_PAY.code());
if (orderNumNoUse == null) {
int cnt = baggageDao.updateBaggage(baggagePo);
DaoUtil.assertUpdateOne(cnt, baggagePo);
}
for(String s : orderNumUse){
if (s.equals(baggagePo.getTrackNumUs())) {
int cnt = baggageDao.updateBaggage(baggagePo);
DaoUtil.assertUpdateOne(cnt, baggagePo);
}
}
}
}
}