CenterLeaderRelationControllerBean.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package com.kingdee.eas.custom.attendanceexception.app;
  2. import com.kingdee.bos.dao.IObjectPK;
  3. import com.kingdee.bos.dao.IObjectValue;
  4. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  5. import com.kingdee.bos.metadata.entity.*;
  6. import com.kingdee.bos.metadata.query.util.CompareType;
  7. import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
  8. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  9. import com.kingdee.eas.basedata.org.IAdminOrgUnit;
  10. import com.kingdee.eas.basedata.person.PersonInfo;
  11. import com.kingdee.eas.common.EASBizException;
  12. import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationEntryCollection;
  13. import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationEntryInfo;
  14. import com.kingdee.eas.custom.synctask.utils.HRTimeWebUtils;
  15. import com.kingdee.eas.hr.emp.IPersonPosition;
  16. import com.kingdee.eas.hr.emp.PersonPositionCollection;
  17. import com.kingdee.eas.hr.emp.PersonPositionFactory;
  18. import com.kingdee.eas.hr.emp.PersonPositionInfo;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.apache.log4j.Logger;
  21. import com.kingdee.bos.*;
  22. import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationCollection;
  23. import java.lang.String;
  24. import java.util.*;
  25. import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationInfo;
  26. public class CenterLeaderRelationControllerBean extends AbstractCenterLeaderRelationControllerBean {
  27. private static Logger logger = Logger.getLogger(CenterLeaderRelationControllerBean.class);
  28. //一级组织类型id
  29. //private final String FIRSTLEVELORGID = "00000000-0000-0000-0000-00000000000362824988";
  30. @Override
  31. protected IObjectPK _save(Context ctx, IObjectValue model) throws BOSException, EASBizException {
  32. CenterLeaderRelationInfo info = (CenterLeaderRelationInfo) model;
  33. AdminOrgUnitInfo department = info.getDepartment();
  34. if (department == null) {
  35. throw new BOSException("组织不能为空!");
  36. }
  37. String orgId = department.getId().toString();
  38. //1.校验组织是否为一级部门
  39. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  40. department = iAdminOrgUnit.getAdminOrgUnitInfo(new ObjectUuidPK(orgId));
  41. // String unitLayerTypeId = department.getUnitLayerType().getId().toString();
  42. // if (!FIRSTLEVELORGID.equals(unitLayerTypeId)) {
  43. // String orgName = department.getName();
  44. // throw new BOSException(orgName + "不是一级组织,不能维护负责人!");
  45. // }
  46. //2.校验是否存在重复组织数据
  47. FilterInfo filterInfo = new FilterInfo();
  48. FilterItemCollection filterItems = filterInfo.getFilterItems();
  49. filterItems.add(new FilterItemInfo("department", department.getId()));
  50. if (info.getId() != null) {
  51. filterItems.add(new FilterItemInfo("id", info.getId(), CompareType.NOTEQUALS));
  52. }
  53. boolean exists = exists(ctx, filterInfo);
  54. if (exists) {
  55. String orgName = department.getName();
  56. throw new BOSException("组织[" + orgName + "]数据已经存在,请勿重复添加!");
  57. }
  58. //3.校验分录人员数据
  59. CenterLeaderRelationEntryCollection entrys = info.getEntry();
  60. if (entrys.size() <= 0) {
  61. throw new BOSException("分录不能为空!");
  62. } else {
  63. Set<String> personIds = new HashSet<String>();
  64. List<String> numbers = new ArrayList<String>();
  65. List<String> names = new ArrayList<String>();
  66. for (int i = entrys.size() - 1; i >= 0; i--) {
  67. CenterLeaderRelationEntryInfo entryInfo = entrys.get(i);
  68. PersonInfo person = entryInfo.getPerson();
  69. String personId = person.getId().toString();
  70. if (personIds.contains(personId)) {
  71. //去除重复人员
  72. entrys.remove(entryInfo);
  73. continue;
  74. }
  75. personIds.add(personId);
  76. numbers.add(person.getNumber());
  77. names.add(person.getName());
  78. }
  79. Collections.reverse(numbers);
  80. Collections.reverse(names);
  81. info.setPersonNumbers(listToString(numbers));
  82. info.setPersonNames(listToString(names));
  83. }
  84. return super._save(ctx, model);
  85. }
  86. /**
  87. * 获取中心负责人
  88. *
  89. * @param ctx
  90. * @return
  91. * @throws BOSException
  92. */
  93. @Override
  94. protected Map _getLeaders(Context ctx) throws BOSException {
  95. super._getLeaders(ctx);
  96. Map<String, String> orgLeadersMap = new HashMap();
  97. //中心负责人关系表
  98. CenterLeaderRelationCollection relationCol = getCenterLeaderRelationCollection(ctx, "select id,department.longNumber,personNumbers");
  99. for (int i = 0; i < relationCol.size(); i++) {
  100. CenterLeaderRelationInfo info = relationCol.get(i);
  101. //中心
  102. AdminOrgUnitInfo department = info.getDepartment();
  103. //员工工号s
  104. String personNumbers = info.getPersonNumbers();
  105. if (department != null && StringUtils.isNotBlank(personNumbers)) {
  106. orgLeadersMap.put(department.getLongNumber(), personNumbers);
  107. } else {
  108. String id = info.getId().toString();
  109. logger.error("CenterLeaderRelationInfo exist department is null or personNumbers is null, id=" + id);
  110. }
  111. }
  112. if (logger.isInfoEnabled()) {
  113. logger.info("CenterLeaderRelationControllerBean getLeaders: " + orgLeadersMap);
  114. }
  115. return orgLeadersMap;
  116. }
  117. /**
  118. * 获取组织负责人
  119. *
  120. * @param ctx
  121. * @return
  122. * @throws BOSException
  123. */
  124. protected Map<String, Set<String>> getOrgLeaders(Context ctx) throws BOSException {
  125. Map<String, Set<String>> orgLeadersMap = new HashMap<String, Set<String>>();
  126. //今天
  127. String curentShortStringDate = HRTimeWebUtils.getCurentShortStringDate();
  128. IPersonPosition iPersonPosition = PersonPositionFactory.getLocalInstance(ctx);
  129. FilterInfo filterInfo = new FilterInfo();
  130. FilterItemCollection filterItems = filterInfo.getFilterItems();
  131. //组织层级为一级组织
  132. filterItems.add(new FilterItemInfo("personDep.unitLayerType", "00000000-0000-0000-0000-00000000000362824988"));
  133. //组织状态为启用
  134. filterItems.add(new FilterItemInfo("personDep.isSealUp", "0"));
  135. //职位为负责人职位
  136. filterItems.add(new FilterItemInfo("primaryPosition.isRespPosition", "1"));
  137. //职位状态为启用
  138. filterItems.add(new FilterItemInfo("primaryPosition.deletedStatus", "1"));
  139. //结束日期大于等于今天
  140. filterItems.add(new FilterItemInfo("LEFFDT", curentShortStringDate, CompareType.GREATER_EQUALS));
  141. //结束日期大于等于今天
  142. filterItems.add(new FilterItemInfo("endDateTime", curentShortStringDate, CompareType.GREATER_EQUALS));
  143. SelectorItemCollection sic = new SelectorItemCollection();
  144. sic.add("person.number");
  145. sic.add("personDep.number");
  146. EntityViewInfo viewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
  147. PersonPositionCollection personPositionCollection = iPersonPosition.getPersonPositionCollection(viewInfo);
  148. for (int i = 0; i < personPositionCollection.size(); i++) {
  149. PersonPositionInfo personPositionInfo = personPositionCollection.get(i);
  150. AdminOrgUnitInfo personDep = personPositionInfo.getPersonDep();
  151. String orgNumber = personDep.getNumber();
  152. PersonInfo person = personPositionInfo.getPerson();
  153. String personNumber = person.getNumber();
  154. if (orgLeadersMap.containsKey(orgNumber)) {
  155. orgLeadersMap.get(orgNumber).add(personNumber);
  156. } else {
  157. Set<String> set = new HashSet<String>();
  158. set.add(personNumber);
  159. orgLeadersMap.put(orgNumber, set);
  160. }
  161. }
  162. if (logger.isInfoEnabled()) {
  163. logger.info("orgLeadersMap = " + orgLeadersMap);
  164. }
  165. return orgLeadersMap;
  166. }
  167. protected String listToString(List<String> list) {
  168. StringBuffer sb = new StringBuffer();
  169. for (int i = 0; list != null && i < list.size(); i++) {
  170. sb.append(list.get(i)).append(",");
  171. }
  172. if (sb.length() > 0) {
  173. sb.deleteCharAt(sb.lastIndexOf(","));
  174. }
  175. return sb.toString();
  176. }
  177. }