public List<PaidVo> getUnPaidOutDetail(int cid, Date from, Date to, int uid) {
        List<OutDetail> result = outDetailDao.queryOutDetail(-1, -1, cid, -1, from, to, -1, uid);
        //result = selectReverseStatus(result, Constants.OUT_STATUS_PAID_ENOUGH);

        //Collections.sort(result);
        Collections.reverse(result);
        Map<String, Double> shouldPaid = new HashMap<String, Double>();
        Map<String, Double> hadPaid = new HashMap<String, Double>();
        Map<String, String> dateMap = new HashMap<String, String>();
        Map<String, String> fruitMap = new HashMap<String, String>();
        Map<String, String> consumerMap = new HashMap<String, String>();
        for (OutDetail outDetail : result) {
            int cid1 = outDetail.getCid();
            int color = outDetail.getColor();
            String key = cid1 + "," + color;
            if (shouldPaid.get(key) != null) {
                shouldPaid.put(key, shouldPaid.get(key) + outDetail.getMoney());
            } else {
                shouldPaid.put(key, outDetail.getMoney());
                //dateMap.put(key, outDetail.getCreateAt());
                fruitMap.put(key, outDetail.getFruitName());
                consumerMap.put(key, outDetail.getConsumerName());
            }
            if (hadPaid.get(key) != null) {
                hadPaid.put(key, hadPaid.get(key) + outDetail.getPaidMoneyIncludeDiscount());
            } else {
                hadPaid.put(key, outDetail.getPaidMoneyIncludeDiscount());
            }
        }
        List<PaidVo> list = new ArrayList<PaidVo>();
        for (Map.Entry<String, Double> m : shouldPaid.entrySet()) {
            String key = m.getKey();
            String[] keys = m.getKey().split(",");
            int id = Integer.valueOf(keys[0]);
            int color = Integer.valueOf(keys[1]);
            if (hadPaid.get(key) - m.getValue() < 0) {
                PaidVo paidVo = new PaidVo();
                paidVo.setOid(id);
                paidVo.setColor(color);
                paidVo.setFruitName(fruitMap.get(key));
                paidVo.setName(consumerMap.get(key));
                paidVo.setShouldPaid(m.getValue());
                paidVo.setHadPaid(hadPaid.get(key));
                paidVo.setCreateAt(dateMap.get(key));
                list.add(paidVo);
            }
        }

        return list;
    }