GetAdminInfoService.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.kingdee.shr.custom.service;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.bos.bsf.service.app.IHRMsfService;
  5. import com.kingdee.bos.metadata.entity.*;
  6. import com.kingdee.bos.metadata.query.util.CompareType;
  7. import com.kingdee.eas.basedata.org.AdminOrgUnitCollection;
  8. import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
  9. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  10. import com.kingdee.eas.basedata.org.IAdminOrgUnit;
  11. import com.kingdee.eas.common.EASBizException;
  12. import com.kingdee.eas.util.app.DbUtil;
  13. import com.kingdee.jdbc.rowset.IRowSet;
  14. import com.kingdee.util.StringUtils;
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import java.sql.SQLException;
  18. import java.util.ArrayList;
  19. import java.util.HashMap;
  20. import java.util.List;
  21. import java.util.Map;
  22. public class GetAdminInfoService implements IHRMsfService {
  23. private static final Logger logger = LoggerFactory.getLogger(GetAdminInfoService.class);
  24. /**
  25. * 组织下属组织
  26. * @param ctx
  27. * @param param
  28. * @return
  29. * @throws BOSException
  30. * @throws SQLException
  31. */
  32. public Object process(Context ctx, Map<String, Object> param) throws EASBizException, BOSException {
  33. String orgId = StringUtils.cnulls(param.get("orgId"));
  34. String checkType = StringUtils.cnulls(param.get("checkType"));
  35. if(StringUtils.equals("1", orgId)){
  36. orgId = GetOrgUtils.getRootOrg(ctx);
  37. }
  38. if(StringUtils.isEmpty(orgId) ){
  39. logger.error("查询到orgId为空");
  40. return new ArrayList();
  41. }
  42. return getSubOrgAndPerson(ctx, orgId,checkType);
  43. }
  44. /**
  45. * 获取直接下级组织,并且获取组织下的成员的数量
  46. * checkType 为1,则只查询直接下级的成员数量,
  47. * 否则,所有下级的成员数量
  48. * @param ctx
  49. * @param orgId
  50. * @return
  51. * @throws BOSException
  52. * @throws EASBizException
  53. */
  54. private List getSubOrgAndPerson(Context ctx,String orgId,String checkType) throws BOSException, EASBizException {
  55. List<Map> maplist = new ArrayList();
  56. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  57. EntityViewInfo view = new EntityViewInfo();
  58. SelectorItemCollection sic =new SelectorItemCollection();
  59. sic.add("id");
  60. sic.add("longNumber");
  61. sic.add("name");
  62. FilterInfo filter = new FilterInfo();
  63. filter.getFilterItems().add(new FilterItemInfo("parent.id", orgId ,CompareType.EQUALS));
  64. //是否封存,
  65. filter.getFilterItems().add(new FilterItemInfo("isSealUp", false ,CompareType.EQUALS));
  66. SorterItemCollection sc = new SorterItemCollection();
  67. sc.add(new SorterItemInfo("number"));
  68. view.setFilter(filter);
  69. view.setSelector(sic);
  70. view.setSorter(sc);
  71. AdminOrgUnitCollection col = iAdminOrgUnit.getAdminOrgUnitCollection(view);
  72. HashMap<String, Integer> admPersonMap = getDirectSubCol(ctx);
  73. for(int i =0; i < col.size(); i++) {
  74. AdminOrgUnitInfo adminInfo = col.get(i);
  75. Map map = new HashMap();
  76. map.put("id", adminInfo.getId().toString());
  77. map.put("name", adminInfo.getName().toString());
  78. String adminId = adminInfo.getId().toString();
  79. if(admPersonMap.containsKey(adminId)) {
  80. map.put("count",admPersonMap.get(adminId));
  81. }else {
  82. map.put("count",0);
  83. }
  84. int totalCount = GetOrgUtils.getPersonCount (ctx, adminInfo.getId().toString(),"0");
  85. if(totalCount > 0 ){
  86. map.put("totalCount",totalCount);
  87. maplist.add(map);
  88. }
  89. }
  90. return maplist;
  91. }
  92. //获取所有的组织与组织的直接人数
  93. public HashMap<String, Integer> getDirectSubCol(Context ctx) throws BOSException {
  94. HashMap<String, Integer> admPersonMap = new HashMap ();
  95. try {
  96. //权限
  97. String perStr = GetOrgUtils.addPermissionFilterSql(ctx);
  98. String filterStr = " and admOrg.fisSealUp <> 1 " +perStr;
  99. String pinSql = GetOrgUtils.pinPersonSql( "adminPerson",filterStr);
  100. IRowSet rs = DbUtil.executeQuery(ctx, pinSql);
  101. while(rs.next()) {
  102. int pcount = rs.getInt("pcount");
  103. String depId = StringUtils.cnulls(rs.getString("depId"));
  104. admPersonMap.put(depId, pcount);
  105. }
  106. } catch (SQLException e) {
  107. e.printStackTrace();
  108. } catch (EASBizException e) {
  109. throw new RuntimeException(e);
  110. }
  111. return admPersonMap;
  112. }
  113. }