package com.jspxcms.core.repository;
import java.util.List;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.Repository;
import com.jspxcms.common.orm.Limitable;
import com.jspxcms.core.domain.Org;
/**
* OrgDao
*
* @author liufang
*
*/
public interface OrgDao extends Repository<Org, Integer> {
public List<Org> findAll(Specification<Org> spec, Sort sort);
public List<Org> findAll(Specification<Org> spec, Limitable limit);
public List<Org> findAll(Sort sort);
public Org findOne(Integer id);
public Org save(Org bean);
public void delete(Org bean);
// --------------------
@Query("select max(bean.treeNumber) from Org bean where bean.parent.id is null")
public String findMaxRootTreeNumber();
@Query("select count(*) from Org bean where bean.parent.id = ?1")
public long countByParentId(Integer parentId);
@Query("select count(*) from Org bean where bean.parent.id is null")
public long countRoot();
@Query("select bean.treeNumber from Org bean where bean.id = ?1")
public String findTreeNumber(Integer id);
@Modifying
@Query("update from Org bean set bean.treeNumber=CONCAT('*',bean.treeNumber) where bean.treeNumber like ?1")
public int appendModifiedFlag(String treeNumberStart);
@Modifying
@Query("update from Org bean set bean.treeNumber=CONCAT(?2,SUBSTRING(bean.treeNumber,?3,LENGTH(bean.treeNumber))),bean.treeLevel=(LENGTH(bean.treeNumber)-4)/5 where bean.treeNumber like ?1")
public int updateTreeNumber(String treeNumber, String value, int len);
@Modifying
@Query("update from Org bean set bean.parent.id = ?2 where bean.id = ?1")
public int updateParentId(Integer id, Integer parentId);
@Modifying
@Query("update from Org bean set bean.treeMax = ?2 where bean.id = ?1")
public int updateTreeMax(Integer id, String treeMax);
}