public String execute() { // System.out.println("DEFAULT_PAGESIZE "+DEFAULT_PAGESIZE); UserDiamondStatsService userDiamondStatsService = ServiceCacheFactory.getServiceCache().getService(UserDiamondStatsService.class); IPage<UserDiamondStats> page = null; if (isCommit != null && isCommit == "TF" || isCommit.equalsIgnoreCase("TF")) { isCommit = "F"; } // 判断是否是条件查询 if (getStartDate() == null && getEndDate() == null) { page = userDiamondStatsService.findList(DEFAULT_PAGESIZE, super.getToPage()); } else { page = userDiamondStatsService.findListInDate( DEFAULT_PAGESIZE, super.getToPage(), getStartDate(), getEndDate()); } if (page != null) { statsList = (List<UserDiamondStats>) page.getData(); for (UserDiamondStats stats : statsList) { int sysNum = stats.getSysNum(); TGameServer tGameServer = DataSourceManager.getInstatnce().getGameServerMap().get(sysNum); stats.setServerName(tGameServer.getServerAlias()); } super.setTotalPage(page.getTotalPage()); super.setTotalSize(page.getTotalSize()); } return SUCCESS; }
/** 采集数据调度入口 */ @Override public void executeJob(JobExecutionContext jobExecutionContext) throws JobExecutionException { LogSystem.info("日统计开始 " + jobExecutionContext.getJobDetail().getName()); // CronTrigger cronTrigger= (CronTrigger)jobExecutionContext.getTrigger(); // String[] serverIdsArr = ((String)cronTrigger.getJobDataMap().get("serverIds")).split(","); // // 已经修正 Map<Integer, TGameServer> gameServerMap = DataSourceManager.getInstatnce().getGameServerMap(); StringBuilder serverName = new StringBuilder(); Iterator<Integer> iter = gameServerMap.keySet().iterator(); while (iter.hasNext()) { Integer key = iter.next(); TGameServer value = gameServerMap.get(key); LogSystem.info("print key = " + key + " value = " + value); serverName.append(value.getServerId() + ","); } String[] serverIdsArr = serverName.toString().split(","); Date date = new Date(); for (int i = 0; i < serverIdsArr.length; i++) { CustomerContextHolder.setSystemNum(Integer.valueOf(serverIdsArr[i])); LogSystem.info("serverId:" + serverIdsArr[i]); // LogSystem.info("cronTrigger.timezone:"+cronTrigger.getTimeZone().getID()); LogSystem.info("管理后台的时间:" + date.toString()); Date nowServerTime = DateUtil.getNowDateBySystemNum(); LogSystem.info("游戏服务器时间:" + nowServerTime.toString()); // 开服过后一天才统计数据(已经修正) Date serverOpernTime = DataSourceManager.getInstatnce() .getGameServerMap() .get(CustomerContextHolder.getSystemNum()) .getServerOpernTime(); // Date d = new Date(serverOpernTime.getTime()+24*60*60*1000); Date d = new Date(serverOpernTime.getTime()); if (nowServerTime.getTime() < d.getTime()) { LogSystem.info("还木有开服,不统计!"); continue; } // InvocationCollector invocationCollector = (InvocationCollector) // ServiceCacheFactory.getServiceCache().getBeanById("dayInvocationCollector"); // invocationCollector.invoke(date); executeOneServer(date, Integer.valueOf(serverIdsArr[i])); LogSystem.info("日统计完毕 " + jobExecutionContext.getJobDetail().getName()); } }
public String execute() { UserRegLogService userRegLogService = ServiceCacheFactory.getServiceCache().getService(UserRegLogService.class); if (DTools.isEmpty(serverIds)) { return SUCCESS; } for (String serverId : serverIds.split(",")) { CustomerContextHolder.setSystemNum(Integer.valueOf(serverId.trim())); TGameServer gameServer = DataSourceManager.getInstatnce() .getGameServerMap() .get(CustomerContextHolder.getSystemNum()); Date openDate = new Date(gameServer.getServerOpernTime().getTime()); if (DateUtil.dayDiff(regStartDate, openDate) > 0) { super.setErroDescrip("\"" + gameServer.getServerAlias() + "\"在当前注册日期还没开服!"); continue; } // 登录开始日期 // super.getStartDate(); // 登录结束日期 // super.getEndDate(); Map<String, Integer> tempMap = userRegLogService.findReLoginMap( regStartDate, regEndDate, super.getStartDate(), super.getEndDate()); // Calendar calendar = Calendar.getInstance(); // calendar.get(Calendar.DAY_OF_MONTH); // 再登录人数:在A时间段注册的人中 在B时间段登陆的人数 Integer reLoginAmount = 0; // 在A时间段注册的人中 B时间段内,各个日期登陆的人数 Map<String, Integer> dayAndAmountmap = new HashMap<String, Integer>(); Iterator<Entry<String, Integer>> ite1 = tempMap.entrySet().iterator(); while (ite1.hasNext()) { Entry<String, Integer> entry = ite1.next(); Integer count = entry.getValue(); reLoginAmount += count; String[] dayStrArr = entry.getKey().split(","); for (String dayStr : dayStrArr) { if (dayAndAmountmap.get(dayStr) == null) { dayAndAmountmap.put(dayStr, count); } else { dayAndAmountmap.put(dayStr, count + dayAndAmountmap.get(dayStr)); } } } // 每天的再登录人数(总和): 在A时间段注册的人中 B时间段内,每天登陆的人数 的总和 Integer allDayAmount = 0; Iterator<Entry<String, Integer>> ite2 = dayAndAmountmap.entrySet().iterator(); while (ite2.hasNext()) { Entry<String, Integer> entry = ite2.next(); allDayAmount += entry.getValue(); } // A时间段注册的人数 String[] dates = new String[2]; Calendar c = Calendar.getInstance(); c.setTimeInMillis(regStartDate.getTime()); dates[0] = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE) + " 00:00:00"; c.setTimeInMillis(regEndDate.getTime()); dates[1] = c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE) + " 23:59:59"; int regAmount = userRegLogService.findRegUserNumInSomeTime(dates); // 当前服务器的统计数据 Map<String, Integer> serverMap = new HashMap<String, Integer>(); serverMap.put("regAmount", regAmount); serverMap.put("reLoginAmount", reLoginAmount); serverMap.put("allDayAmount", allDayAmount); map.put(gameServer.getServerAlias(), serverMap); } return SUCCESS; }