public void checkValid(DomainModel domainModel, Map values, Action action)
      throws ValidateException {
    Assert.notNull(domainModel, "PropertyMap对象不能为空");
    Assert.isInstanceOf(PropertyMap.class, domainModel, "属性非空有效性校验失败,传入的类型必须为PropertyMap!");
    Assert.notNull(values, "values不允许为空,请确认!");
    Assert.notNull(action, "在进行唯一性检测时传入的操作类型不能为空");

    PropertyMap pm = (PropertyMap) domainModel;
    if (pm.isUnique() == false) return; // 允许重复则不进行唯一性检测

    Object value = values.get(Validate.VALUE_CHECK_OBJ);
    Object pkValue = values.get(UniqueValidate.VALUE_CHECK_PK_OBJ); // 获取 主键值
    if (value == null || StringHelper.isNullString(value.toString())) return; // 如果是空值则不进行唯一性检测

    if (action instanceof AddAction) {
      String HQL =
          "from " + pm.getEntityMap().getEntityName() + " eo  where  " + genWhereClause(pm, value);
      logger.debug("=====================" + HQL + "============================");
      if (Udf.dbOperator.isExist(HQL)) {
        throw new ValidateException(
            "以[" + value + "]为值的字段[" + pm.getChineseName() + "]在系统中已经存在,不能重复添加!");
      }
    } else if (action instanceof ModifyAction) {
      String HQL =
          "from "
              + pm.getEntityMap().getEntityName()
              + " eo  where  "
              + genWhereClause(
                  pm.getEntityMap()
                      .getPropertyMap(pm.getEntityMap().getPKPropertyMap().getPropertyName()),
                  pkValue);
      logger.debug("=====================" + HQL + "============================");
      Object obj = Udf.dbOperator.findUniqueResult(HQL);
      Object oldValue =
          ReflectHelper.invoke(
              obj, "get" + StringHelper.converseFirstCharToUpper(pm.getPropertyName()));
      if (this.isEquals(pm, oldValue, value) == true) return; // 如果新旧两个值相等则不必进行校验,说明值没有被改变

      // 如果新旧两个值不相等,则说明新值已经发生改变,则从数据库中检测是否有重复的记录
      HQL =
          "from " + pm.getEntityMap().getEntityName() + " eo  where  " + genWhereClause(pm, value);
      logger.debug("=====================" + HQL + "============================");
      if (Udf.dbOperator.isExist(HQL)) {
        throw new ValidateException(
            "以[" + value + "]为值的字段[" + pm.getChineseName() + "]在系统中已经存在,不能修改成[" + value + "]");
      }
    }
  }
  protected Object sumcInvoke(Object obj, String method, String split) {
    StringBuffer buf = new StringBuffer();
    Assert.isInstanceOf(
        java.util.Collection.class, obj, "进行SumcElObject调用时传入的sumc必须是java.util.Collection对象,请确认");

    Object[] objs = ((java.util.Collection) obj).toArray();
    for (int i = 0; i < objs.length; i++) {
      // 在此将剩下的部分做为SimpleElObject来进行调用即可。
      SimpleElObject so = new SimpleElObject(getSimpleElExpression(), objs[i], this.request);
      Object o = so.calculate();
      // Object o =ReflectHelper.invoke(objs[i],method);
      if (o == null) o = "";
      buf.append(o.toString().trim());
      if (i < objs.length - 1) buf.append(split);
    }

    return buf.toString();
  }