@Transactional @Override public List<NewRegistUser> findNewRegUserGroupByPid(Date from, Date to, String channel) { List<Object[]> users = userDao.findNewRegUserGroupByPid(from, to); Map<String, NewRegistUser> map = new HashMap<String, NewRegistUser>(); if (null != users && users.size() > 0) { for (Object[] obj : users) { String date = String.valueOf(obj[0]); int count = Integer.parseInt(String.valueOf(obj[1])); String pid = String.valueOf(obj[2]); try { String encryptStr = DES.decryptDES(pid, "89wUzBcP", "utf-8"); if (encryptStr.indexOf("android") >= 0) { pid = "android"; } else if (encryptStr.indexOf("ios") >= 0) { pid = "ios"; } } catch (Exception e) { log.info("非客户端渠道无法被DES,pid={}", pid); } if (StringUtils.isNotBlank(channel) && !pid.equals(channel)) { continue; } String key = date + pid; NewRegistUser newReg = map.get(key); if (null == newReg) { newReg = new NewRegistUser(date, pid, count); } else { count = count + newReg.getCount(); newReg = new NewRegistUser(date, pid, count); } map.put(key, newReg); } } List<NewRegistUser> result = new ArrayList<NewRegistUser>(map.values()); Collections.sort( result, new Comparator<NewRegistUser>() { @Override public int compare(NewRegistUser o1, NewRegistUser o2) { return -o1.getDate().compareTo(o2.getDate()); } }); return result; }