SelectOrganizationFunction.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.sooka.component.beetl.fun;
  2. import com.sooka.module.web.system.service.OrganizationService;
  3. import com.sooka.common.utils.StrUtil;
  4. import com.sooka.mybatis.model.TSysOrg;
  5. import org.beetl.core.Context;
  6. import org.beetl.core.Function;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import java.util.List;
  10. /**
  11. * Description:select
  12. *
  13. *
  14. * @create 2017-04-15
  15. **/
  16. @Service
  17. public class SelectOrganizationFunction implements Function{
  18. @Autowired
  19. private OrganizationService service;
  20. private final String head = "<option value=\"0\" >顶级节点</option>";
  21. private final String isSelected = "selected=\"selected\"";
  22. @Override
  23. public Object call(Object[] objects, Context context) {
  24. Integer pid = (Integer)objects[0];
  25. Integer currentId = (Integer)objects[1];
  26. if(pid!=null) {
  27. return head+recursion(currentId,pid,0,"");
  28. }
  29. return head+recursion(currentId,0,0,"");
  30. }
  31. /*递归输出子节点*/
  32. private String recursion(Integer cid,Integer pid,Integer spid,String tag){
  33. tag+=(StrUtil.isBlank(tag)?"&nbsp;&nbsp;":"&nbsp;&nbsp;&nbsp;&nbsp;");
  34. StringBuffer sbf = new StringBuffer();
  35. List<TSysOrg> orgList = service.findByPid(spid);
  36. if(orgList!=null&&orgList.size()>0){
  37. int flag_ = 0;
  38. for(TSysOrg org:orgList){
  39. /**如果是自己就不输出了**/
  40. if(cid.intValue()!=org.getId().intValue()&&cid.intValue()!=org.getPid().intValue()||cid.intValue()==0) {
  41. flag_ = org.getId().intValue();
  42. sbf.append("<option value=\"" + org.getId() + "\" " + isSelected(org.getId().intValue(), pid) + ">" + tag + "|—" + org.getName() + "</option>");
  43. }
  44. if(flag_!=0) {
  45. sbf.append(recursion(cid,pid,org.getId(),tag));
  46. }
  47. }
  48. return sbf.toString();
  49. }
  50. return "";
  51. }
  52. private String isSelected(Integer id,Integer perId){
  53. if(id.intValue()==perId.intValue()) {
  54. return isSelected;
  55. }
  56. return "";
  57. }
  58. }