package com.sooka.component.beetl.fun;
import com.sooka.module.web.system.service.OrganizationService;
import com.sooka.common.utils.StrUtil;
import com.sooka.mybatis.model.TSysOrg;
import org.beetl.core.Context;
import org.beetl.core.Function;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Description:select
*
*
* @create 2017-04-15
**/
@Service
public class SelectOrganizationFunction implements Function{
@Autowired
private OrganizationService service;
private final String head = "";
private final String isSelected = "selected=\"selected\"";
@Override
public Object call(Object[] objects, Context context) {
Integer pid = (Integer)objects[0];
Integer currentId = (Integer)objects[1];
if(pid!=null) {
return head+recursion(currentId,pid,0,"");
}
return head+recursion(currentId,0,0,"");
}
/*递归输出子节点*/
private String recursion(Integer cid,Integer pid,Integer spid,String tag){
tag+=(StrUtil.isBlank(tag)?" ":" ");
StringBuffer sbf = new StringBuffer();
List orgList = service.findByPid(spid);
if(orgList!=null&&orgList.size()>0){
int flag_ = 0;
for(TSysOrg org:orgList){
/**如果是自己就不输出了**/
if(cid.intValue()!=org.getId().intValue()&&cid.intValue()!=org.getPid().intValue()||cid.intValue()==0) {
flag_ = org.getId().intValue();
sbf.append("");
}
if(flag_!=0) {
sbf.append(recursion(cid,pid,org.getId(),tag));
}
}
return sbf.toString();
}
return "";
}
private String isSelected(Integer id,Integer perId){
if(id.intValue()==perId.intValue()) {
return isSelected;
}
return "";
}
}