Ejemplo n.º 1
0
  public String saveAndSubmit() {
    HttpServletRequest request = Struts2Utils.getRequest();
    HttpSession session = Struts2Utils.getSession();
    // 1.新建  act=new  2.修改 act=modify 3.复制 act = copy
    String act = this.getQueryParameter(request, "act");
    // 获取groupId值
    String taskId = this.getQueryParameter(request, "taskId");
    String taskName = this.getQueryParameter(request, "extractName");
    String taskDesc = this.getQueryParameter(request, "extractDesc");
    String auditor = this.getQueryParameter(request, "auditor");
    String provinceId = this.getQueryParameter(request, "indArea");

    ExtractTask extractTask = null;
    if (StringUtils.isBlank(taskId)) {
      // 1.新建  act=new  //容器中没有就新建
      if (StringUtils.isBlank(act)) {
        //			if("new".equalsIgnoreCase(act)){
        extractTask = new ExtractTask();
        // 设置分群id
        taskId = UIDGenerator.generate().toString().substring(0, 19) + System.currentTimeMillis();
        extractTask.setId(taskId);
        // 设置客户分群状态    目前能用的状态共7个,分别是: 2 未提交  、4 等待执行、5 执行中、6 执行失败、7 执行完成、8 有数据、9无数据
        int taskStatus = 1; // 2 未提交
        extractTask.setTaskStatus(taskStatus);
        extractTask.setTaskName(taskName);
        extractTask.setTaskDesc(taskDesc);

        // 群创建人
        String createUser = securityManager.loginUser().getLoginName();
        //				securityManager.getAllRole().get(1).
        extractTask.setCreateUser(createUser);

      } else {
        throw new RuntimeException("无效操作!");
      }
    }

    System.out.println("taskId=" + taskId);
    // 分群条件关系   规则表达式
    String ruleRelationExp = this.getQueryParameter(request, "ruleRelationExp");
    String[] props = request.getParameterValues("attr");

    if (StringUtils.isBlank(ruleRelationExp)) {
      extractTask.setRuleRelationExp("");
    } else {
      extractTask.setRuleRelationExp(ruleRelationExp);
      ruleRelationExp = ruleRelationExp.replace("and", "+");
    }

    // 提取电话号码上限
    String upperLimit = this.getQueryParameter(request, "upperLimit");
    // 分群规则数据
    String[] ruleArrray = request.getParameterValues("rule");

    // 0415-2102

    if (HTMLFilter.isIntNumber(upperLimit)) {
      extractTask.setUpperLimit(Long.parseLong(upperLimit));
    } else {
      extractTask.setUpperLimit(0);
    }

    this.saveTaskRuleToContext(extractTask, ruleRelationExp, upperLimit, ruleArrray);

    /** 是否提取客户属性值 (1:表示是,0:表示否)默认为0 IS_EXTRACT_PROPS */
    //		if(StringUtils.isBlank(props.toString())){
    if (null == props) {
      /** 是否提取客户属性值 (1:表示是,0:表示否)默认为0 IS_EXTRACT_PROPS */
      extractTask.setIsExtractProps("0"); // 0:表示提取客户属性值
      extractTask.setExtractProps(null); // 将客户群提取的用户属性置空
    } else {
      extractTask.setIsExtractProps("1"); // 0:表示提取客户属性值
      this.saveTaskAttrToContext(extractTask, props);
    }

    if (StringUtils.isBlank(act) || "copy".equalsIgnoreCase(act)) {
      // 任务创建日期
      String createDate = DateUtil.getDateTime(Constants.DATE_PATTERN, new Date());
      extractTask.setCreateDate(createDate);
      // 修改日期
      String modifyDate = "-";
      extractTask.setModifyDate(modifyDate);
      extractTask.setTaskType("A");
      extractTask.setAuditUser(auditor);
      extractTask.setTaskSql(
          extractTaskService.getExtractTaskQueryString(extractTask).replace("'", "\""));
      extractTask.setProvinceId(provinceId);
      // 调用service.save方法,持久化数据
      try {
        extractTaskService.saveExtractTask(extractTask);
        session.setAttribute("status", "1");
      } catch (Exception e) {
        session.setAttribute("status", "0");
      }
    }
    // 跳转到客户分群列表界面
    return CrudActionSupport.RELOAD;
  }
Ejemplo n.º 2
0
  private ExtractTask saveTaskRuleToContext(
      ExtractTask extractTask, String ruleRelationExp, String upperLimit, String[] ruleArrray) {

    // 根据groupId 获取客户分群对象容器类
    //	CustomGroup customGroup = context.get(groupId);
    if (StringUtils.isBlank(ruleRelationExp)) {
      extractTask.setRuleRelationExp("");
    } else {
      extractTask.setRuleRelationExp(ruleRelationExp);
    }

    if (HTMLFilter.isIntNumber(upperLimit)) {
      extractTask.setUpperLimit(Long.parseLong(upperLimit));
    } else {
      extractTask.setUpperLimit(0);
    }

    List<String[]> ruleList = new ArrayList<String[]>();
    for (int i = 0; i < ruleArrray.length; i++) {
      // [ruleCoce:120]
      // [ruleName:PROVINCE_USERINFO_D-LOGON_SOFTCLIENT_CNT]
      // [operator:<] [leftOperand:sdf][rightOperand: ]

      String ruleStr = ruleArrray[i];
      int beginIndex = ruleStr.indexOf("{");
      int endIndex = ruleStr.lastIndexOf("}");
      String[] jsonRuleArray = ruleStr.substring(beginIndex + 1, endIndex).split("',");
      ruleList.add(jsonRuleArray);
    }

    List<TaskRule> taskRuleList = new ArrayList<TaskRule>();
    // 客户群规则
    TaskRule taskRule = null;
    for (int i = 0; i < ruleList.size(); i++) {
      String[] rules = ruleList.get(i);
      taskRule = new TaskRule();
      taskRule.setId(UIDGenerator.generate().toString());
      taskRule.setExtractTask(extractTask);
      for (int j = 0; j < rules.length; j++) {
        String[] rule = rules[j].split(":'"); // ruleCode:'3265
        String key = rule[0].replaceAll("\"", "").replaceAll("'", "");
        String value = checkValue(rule);
        if ("ruleCode".equals(key)) {
          taskRule.setRuleCode(value);
        }
        if ("ruleName".equals(key)) {
          taskRule.setRuleName(value);
        }
        if ("operator".equals(key)) {
          taskRule.setOperator(value);
        }
        if ("leftOperand".equals(key)) {
          taskRule.setLeftOperand(value);
        }
        if ("rightOperand".equals(key)) {
          taskRule.setRightOperand(value);
        }
        if ("startDate".equals(key)) {
          taskRule.setStartDate(value.replaceAll("-", ""));
        }
        if ("endDate".equals(key)) {
          taskRule.setEndDate(value.replaceAll("-", ""));
        }
        if ("tableId".equals(key)) {
          taskRule.setTableId(value);
        }
        if ("clusterOpt".equals(key)) {
          taskRule.setClusterOperator(value);
        }
        if ("customTable".equals(key)) { // 存的是table的id
          CustomTable obj = new CustomTable();
          obj.setId(value);
          taskRule.setCustomTable(obj);
        }
        if ("ruleDesc".equals(key)) {
          taskRule.setRuleDesc(value);
        }
        //			logger.info("key = " + key + " value = " + value);
        System.out.println("key = " + key + " value = " + value);

        System.out.println("raskRule = " + taskRule);
      }
      CustomTable customTable =
          extractTableService.queryCustomTableAndField(
              taskRule.getCustomTable().getId(), taskRule.getRuleName());

      taskRule.setCustomTable(customTable);

      taskRuleList.add(taskRule);
    }

    extractTask.setTaskRules(taskRuleList);
    System.out.println("over json");
    // context.put(customGroup);将对象放入容器中
    return extractTask;
  }