package com.norteksoft.acs.dao.authority; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.springframework.stereotype.Repository; import com.norteksoft.acs.base.enumeration.FieldOperator; import com.norteksoft.acs.base.enumeration.LogicOperator; import com.norteksoft.acs.entity.authority.Condition; import com.norteksoft.mms.form.enumeration.DataType; import com.norteksoft.product.orm.Page; import com.norteksoft.product.orm.hibernate.HibernateDao; import com.norteksoft.product.util.ContextUtils; /** * 数据规则条件 * @author Administrator * */ @Repository public class ConditionDao extends HibernateDao<Condition, Long>{ /** * 根据规则ID删除条件 * @param valueOf */ public void deleteConditionByRuleId(Long dataRuleId) { this.batchExecute("delete Condition c where c.companyId=? and c.dataRule.id=? ", ContextUtils.getCompanyId(),dataRuleId); } /** * 根据规则条件ID集合删除条件 * @param valueOf */ public void deleteConditionByConIds(List<Long> conditionIds) { if(conditionIds.size()>0){ Long[] objs = new Long[1+conditionIds.size()]; objs[0]=ContextUtils.getCompanyId(); String hql = "delete Condition c where c.companyId=? and ("; int i=1; for(int j=0;j<conditionIds.size();j++){ hql = hql+" c.id=? "; objs[i]=conditionIds.get(j); if(j<conditionIds.size()-1){ hql = hql+" or "; } i++; } hql = hql+" )"; this.batchExecute(hql, objs); } } /** * 根据规则id获得数据表规则条件 * @param conditionPage * @param id */ public void getConditionPage(Page<Condition> conditionPage, Long id) { this.searchPageSubByHql(conditionPage,"from Condition c where c.companyId=? and c.dataRule.id=? order by c.displayIndex ",ContextUtils.getCompanyId(),id); } /** * 根据规则id获得数据表规则条件 * @param conditionPage * @param id */ public List<Condition> getConditionsByDataRuleId(Long id) { return this.find("from Condition c where c.companyId=? and c.dataRule.id=? ",ContextUtils.getCompanyId(),id); } public Condition getCondition(String field, FieldOperator operator, LogicOperator lgicOperator, DataType dataType, String conditionValue, Long dataRuleId) { List<Condition> conditions=this.find("from Condition c where c.companyId=? and c.field=? and c.operator=? and c.lgicOperator=? and c.dataType=? and c.conditionValue=? and c.dataRule.id=? ",ContextUtils.getCompanyId(),field,operator,lgicOperator,dataType,conditionValue,dataRuleId); if(conditions!=null && conditions.size()>0){ return conditions.get(0); }else{ return null; } } }