package com.norteksoft.mms.module.dao;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Repository;
import com.norteksoft.mms.module.entity.Operation;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.orm.hibernate.HibernateDao;
@Repository
public class OperationDao extends HibernateDao<Operation, Long>{
public void getOperations(Page<Operation> pages,Long systemId){
this.searchPageByHql(pages, "from Operation o where o.systemId=? and o.parent!=null ",systemId);
}
public List<Operation> getAllParentOperations(Long systemId){
return this.find("from Operation o where o.systemId=? and o.parent is null ",systemId);
}
public Operation getOperationByCode(String code,Long systemId){
String hql="from Operation t where t.code=? and t.systemId=?";
List<Operation> operations=this.find(hql, code,systemId);
if(operations.size()>0)return operations.get(0);
return null;
}
public void getOperationChildren(Page<Operation> page,Long operationId){
String hql="from Operation t where t.parent.id=? order by t.id desc";
this.searchPageByHql(page, hql,operationId);
}
public List<Operation> getOperationChildrenList(Long operationId){
String hql="from Operation t where t.parent.id=? order by t.id desc";
return this.find( hql,operationId);
}
public List<Operation> getOperations(String systemIds,Long companyId){
StringBuilder hql=new StringBuilder("from Operation m where m.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(" m.systemId=? ");
if(i<sysIds.length-1){
hql.append(" or ");
}
if(i==sysIds.length-1)hql.append(")");
values[1+i]=Long.parseLong(sysIds[i]);
}
}
}
return find(hql.toString(), values);
}
}