Exemplo n.º 1
0
  /** 采集数据调度入口 */
  @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());
    }
  }