GetAdminInfoService.java 4.4 KB

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