package com.norteksoft.bs.options.dao;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Repository;
import org.springframework.util.Assert;
import com.norteksoft.bs.options.entity.OptionGroup;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.orm.hibernate.HibernateDao;
import com.norteksoft.product.util.ContextUtils;
@Repository
public class OptionGroupDao extends HibernateDao<OptionGroup, Long> {
/**
* 分页显示选项组
* @param groups
*/
public void getAllOptionGroupForPage(Page<OptionGroup> groups,Long systemId){
String hql = "";
if(systemId!=null){
hql = "from OptionGroup og where og.companyId = ? and og.systemId=? order by og.createdTime desc";
this.searchPageByHql(groups, hql.toString(),ContextUtils.getCompanyId(),systemId);
} else{
hql = "from OptionGroup og where og.companyId = ? order by og.createdTime desc";
this.searchPageByHql(groups, hql.toString(),ContextUtils.getCompanyId());
}
}
/**
* 检查用户组的唯一性
* @param name
* @return
*/
public OptionGroup CheckOptionGroupName(String name){
String hql = "from OptionGroup og where og.companyId = ? and og.name = ?";
return (OptionGroup)getSession().createQuery(hql).setLong(0, ContextUtils.getCompanyId()).setString(1, name).uniqueResult();
}
/**
* 用户组编码的唯一性
* @param groupNo
* @return
*/
public OptionGroup CheckOptionGroupNo(String groupNo){
String hql = "from OptionGroup og where og.companyId = ? and og.code = ?";
return (OptionGroup)getSession().createQuery(hql).setLong(0, ContextUtils.getCompanyId()).setString(1, groupNo).uniqueResult();
}
/**
* 查询所有的选项组
* @return
*/
public List<OptionGroup> getOptionGroups(){
Assert.notNull(ContextUtils.getCompanyId(), "companyId不能为null");
return find("from OptionGroup og where og.companyId=? ",
ContextUtils.getCompanyId());
}
/**
* 根据选项组编号查询选项组
* @param code
* @return
*/
public OptionGroup getOptionGroupByCode(String code){
Assert.notNull(code, "选项组编号code不能为null");
Assert.notNull(ContextUtils.getCompanyId(), "companyId不能为null");
List<OptionGroup> list = find("from OptionGroup og where og.companyId=? and og.code=?",
ContextUtils.getCompanyId(), code);
if(list.size() == 1){
return list.get(0);
}
return null;
}
/**
* 根据选项组名称查询选项组
* @param code
* @return
*/
public OptionGroup getOptionGroupByName(String name){
Assert.notNull(name, "选项组名称name不能为null");
Assert.notNull(ContextUtils.getCompanyId(), "companyId不能为null");
List<OptionGroup> list = find("from OptionGroup og where og.companyId=? and og.name=?",
ContextUtils.getCompanyId(), name);
if(list.size() == 1){
return list.get(0);
}
return null;
}
/**
* 查询所有的选项组
* @return
*/
public List<OptionGroup> getOptionGroups(Long companyId,String systemIds){
StringBuilder hql=new StringBuilder("from OptionGroup og where og.companyId=? ");
if(StringUtils.isNotEmpty(systemIds)&&systemIds.charAt(systemIds.length()-1)==',')systemIds=systemIds.substring(0,systemIds.length()-1);
Object[] values=new Object[1];
if(StringUtils.isNotEmpty(systemIds)){
hql.append(" and ");
values=new Object[1+systemIds.split(",").length];
}
values[0]=companyId;
if(StringUtils.isNotEmpty(systemIds)){
String[] sysIds=systemIds.split(",");
for(int i=0;i<sysIds.length;i++){
if(StringUtils.isNotEmpty(sysIds[i])){
if(i==0)hql.append("(");
hql.append(" og.systemId=? ");
if(i<sysIds.length-1){
hql.append(" or ");
}
if(i==sysIds.length-1)hql.append(")");
values[1+i]=Long.parseLong(sysIds[i]);
}
}
}
return this.find(hql.toString(), values);
}
}