CenterLeaderRelationEditHandler.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package com.kingdee.eas.custom.attendanceexception.handler;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  5. import com.kingdee.bos.metadata.entity.FilterInfo;
  6. import com.kingdee.bos.metadata.entity.FilterItemCollection;
  7. import com.kingdee.bos.metadata.entity.FilterItemInfo;
  8. import com.kingdee.bos.metadata.query.util.CompareType;
  9. import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
  10. import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
  11. import com.kingdee.eas.basedata.org.IAdminOrgUnit;
  12. import com.kingdee.eas.basedata.person.PersonInfo;
  13. import com.kingdee.eas.common.EASBizException;
  14. import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationEntryCollection;
  15. import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationEntryInfo;
  16. import com.kingdee.eas.custom.attendanceexception.CenterLeaderRelationInfo;
  17. import com.kingdee.eas.framework.CoreBaseInfo;
  18. import com.kingdee.shr.base.syssetting.context.SHRContext;
  19. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  20. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  21. import com.kingdee.shr.base.syssetting.web.handler.EditHandler;
  22. import org.apache.log4j.Logger;
  23. import javax.servlet.http.HttpServletRequest;
  24. import javax.servlet.http.HttpServletResponse;
  25. import java.util.HashSet;
  26. import java.util.Set;
  27. /**
  28. * @Description 中心负责人关系表表单Handler
  29. * @Date 2025/4/16 11:18
  30. * @Created by Heyuan
  31. */
  32. public class CenterLeaderRelationEditHandler extends EditHandler {
  33. private static Logger logger = Logger.getLogger(CenterLeaderRelationEditHandler.class);
  34. private Context ctx = SHRContext.getInstance().getContext();
  35. //一级组织类型id
  36. private final String FIRSTLEVELORGID = "00000000-0000-0000-0000-00000000000362824988";
  37. @Override
  38. protected void verifyModel(
  39. HttpServletRequest request,
  40. HttpServletResponse response,
  41. CoreBaseInfo model
  42. ) throws SHRWebException {
  43. try {
  44. CenterLeaderRelationInfo info = (CenterLeaderRelationInfo) model;
  45. AdminOrgUnitInfo department = info.getDepartment();
  46. if (department == null) {
  47. throw new ShrWebBizException("组织不能为空!");
  48. }
  49. String orgId = department.getId().toString();
  50. //1.校验组织是否为一级部门
  51. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  52. department = iAdminOrgUnit.getAdminOrgUnitInfo(new ObjectUuidPK(orgId));
  53. String unitLayerTypeId = department.getUnitLayerType().getId().toString();
  54. if (!FIRSTLEVELORGID.equals(unitLayerTypeId)) {
  55. String orgName = department.getName();
  56. throw new ShrWebBizException(orgName + "不是一级组织,不能维护负责人!");
  57. }
  58. //2.校验是否存在重复组织数据
  59. FilterInfo filterInfo = new FilterInfo();
  60. FilterItemCollection filterItems = filterInfo.getFilterItems();
  61. filterItems.add(new FilterItemInfo("department", department.getId()));
  62. if (info.getId() != null) {
  63. filterItems.add(new FilterItemInfo("id", info.getId(), CompareType.NOTEQUALS));
  64. }
  65. boolean exists = this.getBizInterface(request).exists(filterInfo);
  66. if (exists) {
  67. String orgName = department.getName();
  68. throw new ShrWebBizException("组织[" + orgName + "]数据已经存在,请勿重复添加!");
  69. }
  70. //3.校验分录人员数据
  71. CenterLeaderRelationEntryCollection entrys = info.getEntry();
  72. if (entrys.size() <= 0) {
  73. throw new ShrWebBizException("分录不能为空!");
  74. } else {
  75. StringBuilder numbers = new StringBuilder();
  76. StringBuilder names = new StringBuilder();
  77. Set<String> personIds = new HashSet<>();
  78. for (int i = entrys.size() - 1; i >= 0; i--) {
  79. CenterLeaderRelationEntryInfo entryInfo = entrys.get(i);
  80. PersonInfo person = entryInfo.getPerson();
  81. String personId = person.getId().toString();
  82. if (personIds.contains(personId)) {
  83. //去除重复人员
  84. entrys.remove(entryInfo);
  85. continue;
  86. }
  87. personIds.add(personId);
  88. String number = person.getNumber();
  89. numbers.append(number).append(",");
  90. String name = person.getName();
  91. names.append(name).append(",");
  92. }
  93. if (numbers.length() > 0) {
  94. numbers.deleteCharAt(numbers.lastIndexOf(","));
  95. }
  96. info.setPersonNumbers(numbers.toString());
  97. if (names.length() > 0) {
  98. names.deleteCharAt(names.lastIndexOf(","));
  99. }
  100. info.setPersonNames(names.toString());
  101. }
  102. } catch (BOSException e) {
  103. logger.error(e);
  104. throw new ShrWebBizException(e);
  105. } catch (EASBizException e) {
  106. logger.error(e);
  107. throw new ShrWebBizException(e);
  108. }
  109. }
  110. }