/** * TRuleDefineDao.java 2010/07/21 */ package com.ycsoft.business.dao.config; import java.util.List; import org.springframework.stereotype.Component; import com.ycsoft.beans.config.TRuleDefine; import com.ycsoft.commons.constants.SystemConstants; import com.ycsoft.commons.helper.StringHelper; import com.ycsoft.daos.abstracts.BaseEntityDao; import com.ycsoft.daos.core.JDBCException; import com.ycsoft.daos.core.Pager; import com.ycsoft.sysmanager.dto.config.RuleDefineDto; import com.ycsoft.sysmanager.dto.config.VewRuleDto; import com.ycsoft.sysmanager.dto.config.VewRuleObjDto; import com.ycsoft.sysmanager.dto.config.VewRulePropDto; /** * TRuleDefineDao -> T_RULE_DEFINE table's operator */ @Component public class TRuleDefineDao extends BaseEntityDao<TRuleDefine> { /** * */ private static final long serialVersionUID = 1382248453866370301L; /** * default empty constructor */ public TRuleDefineDao() { } public List<VewRuleDto> queryPromFeeUserRule()throws Exception{ String sql="select d.* from t_rule_define d,s_itemvalue s " + " where d.rule_id=s.item_value and s.item_key='PROMFEE_USERRULE' and d.rule_type='BUSI' "; // String sql="select d.* from t_rule_define d " + // " where d.rule_type='BUSI' "; return this.createQuery(VewRuleDto.class, sql).list(); } /** * 根据数据类型查询对应规则属性 * * @param dataType * @return * @throws Exception */ public List<VewRulePropDto> queryRulePropByDataRightType(String dataType) throws Exception { String sql = "select * from vew_rule_prop where data_right_type=?"; return this.createQuery(VewRulePropDto.class, sql, dataType).list(); } /** * 规则属性 * * @return * @throws Exception */ public List<VewRulePropDto> queryRuleProp(String prop_name) throws Exception { String sql = "select r.model_name prop_id,'-1' model_name,r.model_desc prop_name,model_name param_name,r.data_type " + "from vew_rule_prop r where r.prop_name like '%" + prop_name + "%' group by model_name,'-1',model_desc,model_name,r.data_type " + "union all " + "select r.prop_id prop_id,r.model_name model_name,r.prop_name prop_name,r.param_name,r.data_type " + "from vew_rule_prop r where r.prop_name like '%" + prop_name + "%'"; return this.createQuery(VewRulePropDto.class, sql).list(); } /** * 规则对应的 引用对象 * * @param rule_id * 规则id * @return * @throws Exception */ public List<VewRuleObjDto> queryRuleObjByRuleId(String rule_id) throws Exception { String sql = "select * from vew_rule_obj where rule_id=? "; return createQuery(VewRuleObjDto.class, sql, rule_id).list(); } public TRuleDefine getTruleByRuleId(String ruleId) throws Exception { String sql = "select * from T_RULE_DEFINE where rule_id = ? "; return createQuery(TRuleDefine.class, sql, ruleId).first(); } public List<VewRuleDto> getTruleByDataType(String dataType,String countyId)throws Exception { String sql = "select * from t_rule_define t where t.data_type=? "; if(!countyId.equals(SystemConstants.COUNTY_ALL)){ sql += " and t.rule_id in (select t1.rule_id from t_rule_define_county t1 where t1.county_id in ('"+countyId+"','"+SystemConstants.COUNTY_ALL+"'))"; } return createQuery(VewRuleDto.class, sql, dataType).list(); } public List<VewRuleDto> findRuleViewDictByType(String ruleType, String countyId) throws JDBCException { if(ruleType.equals("RENT_RULE")){ String sql = "select rule_id, rule_name from vew_rule where rule_type=?"; return createQuery(VewRuleDto.class, sql, ruleType).list(); }else if(countyId.equals(SystemConstants.COUNTY_ALL)){ String sql = "select r.rule_id,r.rule_name from vew_rule r where r.rule_type=?" + " and r.eff_date<sysdate and (r.exp_date is null or r.exp_date>sysdate)"; return createQuery(VewRuleDto.class, sql, ruleType).list(); }else { String sql = "select r.rule_id, r.rule_name from vew_rule r" + " where r.rule_id IN (select distinct c.rule_id from t_rule_define_county c where c.county_id in (?, ?) ) and r.rule_type=?" + " and r.eff_date<sysdate and (r.exp_date is null or r.exp_date>sysdate)"; return createQuery(VewRuleDto.class, sql, SystemConstants.COUNTY_ALL, countyId,ruleType).list(); } } public List<VewRuleDto> findRuleALL() throws JDBCException { String sql = "select * from vew_rule "; return createQuery(VewRuleDto.class, sql).list(); } public Pager<RuleDefineDto> queryAllRule(String query,String dataType,String countyId,Integer start,Integer limit) throws Exception { String sql = "select r.*,d.*,wmsys.wm_concat(c.county_id) county_id " + " from t_rule_define r,s_data_right_type d," + " t_rule_define_county c" + " where r.data_type=d.data_right_type(+) and r.rule_id=c.rule_id(+)"; if(!countyId.equals(SystemConstants.COUNTY_ALL)){ sql += " and c.county_id in ('"+countyId+"','"+SystemConstants.COUNTY_ALL+"')"; } if(StringHelper.isNotEmpty(dataType)){ sql += " and r.rule_type= '" + dataType+"' "; } if(StringHelper.isNotEmpty(query)){ sql += " and r.rule_name like '%"+query+"%'"; } sql += " group by r.rule_id,r.rule_name,r.rule_str,r.remark,r.rule_str_cn,r.rule_type,r.data_type,r.cfg_type,r.pre_billing_rule," + " r.optr_id,r.eff_date,r.exp_date,d.data_right_type,d.type_name,d.table_name,d.result_column,d.select_column,d.null_is_all,d.is_level" + " order by to_number(r.rule_id) desc"; return createQuery(RuleDefineDto.class, sql).setStart(start).setLimit(limit).page(); } public List<TRuleDefine> queryRuleByCountyId(String countyId) throws Exception { if(countyId.equals(SystemConstants.COUNTY_ALL)){ String sql = "select r.rule_id,r.rule_name from t_rule_define r order by to_number(r.rule_id) desc"; return this.createQuery(sql).list(); }else{ String sql = "select r.rule_id,r.rule_name from t_rule_define r,t_rule_define_county c" + " where r.rule_id=c.rule_id and c.county_id in (?,?)"; sql += " order by to_number(r.rule_id) desc"; return createQuery(sql, SystemConstants.COUNTY_ALL, countyId).list(); } } public Pager<RuleDefineDto> queryAllRule(Integer start, Integer limit) throws Exception { String sql = "select r.*,d.* from t_rule_define r,s_data_right_type d" + " where r.data_type=d.data_right_type(+) order by to_number(rule_id) desc"; return createQuery(RuleDefineDto.class, sql).setStart(start).setLimit( limit).page(); } }