Пример #1
0
  /*
   * jobConfig的格式为 :
   * 		sql @ datasource
   */
  protected void excuteJob(String jobConfig) {
    log.info("开始用户对角色信息同步......");

    String info[] = EasyUtils.split(jobConfig, "@");
    if (info.length < 2) {
      log.info("用户对角色信息同步的配置信息有误。" + jobConfig);
      return;
    }

    String sql = info[0];
    String dataSource = info[1];
    Date fromDay = DateUtil.subDays(DateUtil.today(), 3);

    List<Map<String, Object>> list = SQLExcutor.query(dataSource, sql, fromDay, fromDay);
    List<Object[]> addList = new ArrayList<Object[]>();
    List<Object[]> delList = new ArrayList<Object[]>();

    for (Map<String, Object> item : list) {
      Long user = EasyUtils.obj2Long(item.get("user"));
      String[] role1 = EasyUtils.obj2String(item.get("role1")).split(","); // 需要新增的用户角色关系
      String[] role2 = EasyUtils.obj2String(item.get("role2")).split(","); // 需要删除的用户角色关系

      for (String role : role1) {
        if (!EasyUtils.isNullOrEmpty(role)) {
          Long _role = EasyUtils.obj2Long(role);
          if (getCount(user, _role) == 0) {
            addList.add(new Object[] {user, _role});
          }
        }
      }

      for (String role : role2) {
        if (!EasyUtils.isNullOrEmpty(role)) {
          Long _role = EasyUtils.obj2Long(role);
          delList.add(new Object[] {user, _role});
        }
      }
    }

    SQLExcutor.excuteBatchII(insertSQL, addList, DMConstants.LOCAL_CONN_POOL);
    SQLExcutor.excuteBatchII(deleteSQL, delList, DMConstants.LOCAL_CONN_POOL);

    log.info("完成用户对角色信息同步。");
  }