PerfEvaluObjectListHandlerEx.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.kingdee.eas.hr.perf.handler;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.bos.ctrl.swing.StringUtils;
  5. import com.kingdee.bos.dao.IObjectPK;
  6. import com.kingdee.bos.dao.IObjectValue;
  7. import com.kingdee.bos.dao.ObjectNotFoundException;
  8. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  9. import com.kingdee.bos.metadata.entity.*;
  10. import com.kingdee.bos.metadata.query.util.CompareType;
  11. import com.kingdee.eas.basedata.person.PersonFactory;
  12. import com.kingdee.eas.basedata.person.PersonInfo;
  13. import com.kingdee.eas.common.EASBizException;
  14. import com.kingdee.eas.framework.CoreBaseCollection;
  15. import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryCollection;
  16. import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryFactory;
  17. import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryInfo;
  18. import com.kingdee.eas.hr.affair.IEmpEnrollBizBillEntry;
  19. import com.kingdee.eas.hr.perf.utils.PerfEvaObjectUtils;
  20. import com.kingdee.eas.hr.project.*;
  21. import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
  22. import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
  23. import com.kingdee.shr.base.syssetting.context.SHRContext;
  24. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  25. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  26. import com.kingdee.shr.base.syssetting.util.LocaleUtils;
  27. import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
  28. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  29. import com.kingdee.shr.perfweb.app.base.evalfile.IPerfFile;
  30. import com.kingdee.shr.perfweb.app.base.evalfile.PerfFileCollection;
  31. import com.kingdee.shr.perfweb.app.base.evalfile.PerfFileFactory;
  32. import com.kingdee.shr.perfweb.app.base.evalfile.PerfFileInfo;
  33. import com.kingdee.shr.perfweb.app.base.evalplan.*;
  34. import com.kingdee.shr.perfweb.app.base.evalrule.PWorkFlowDefCollection;
  35. import com.kingdee.shr.perfweb.app.base.evalrule.PWorkFlowDefInfo;
  36. import com.kingdee.shr.perfweb.app.base.evalrule.PerformanceRuleInfo;
  37. import com.kingdee.shr.perfweb.app.exception.SHRPerfWebBizException;
  38. import com.kingdee.shr.perfweb.app.resource.SHRPerfWebResource;
  39. import com.kingdee.shr.perfweb.evaluplan.handler.PerfEvaluObjectListHandler;
  40. import com.kingdee.shr.perfweb.util.PerfEvaObjGroupUtils;
  41. import com.kingdee.shr.perfweb.util.PerfRuleSettingUtil;
  42. import com.kingdee.shr.perfweb.util.PersonInchargeUtils;
  43. import com.kingdee.shr.perfweb.util.SHRPerfWebResourceUtil;
  44. import com.kingdee.shr.perfweb.utils.PerfPlanUtils;
  45. import com.kingdee.shr.perfweb.utils.RuleHistoryUtils;
  46. import org.slf4j.Logger;
  47. import org.slf4j.LoggerFactory;
  48. import org.springframework.ui.ModelMap;
  49. import org.springframework.util.CollectionUtils;
  50. import javax.servlet.http.HttpServletRequest;
  51. import javax.servlet.http.HttpServletResponse;
  52. import java.time.LocalDate;
  53. import java.time.Year;
  54. import java.util.*;
  55. /**
  56. * @author qingwu
  57. * @date 2024/12/17
  58. * @apiNote
  59. */
  60. public class PerfEvaluObjectListHandlerEx extends PerfEvaluObjectListHandler {
  61. //public class PerfEvaluObjectListHandlerEx extends ListHandler {
  62. private Context ctx = SHRContext.getInstance().getContext();
  63. private static Logger logger = LoggerFactory.getLogger(PerfEvaluObjectListHandlerEx.class);
  64. public void addPerjectPersonAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws ShrWebBizException {
  65. logger.error("addPerjectPersonAction---");
  66. String perfPlanId = request.getParameter("perfPlanId");//考核计划
  67. String period = request.getParameter("period");//考核周期
  68. try {
  69. IPerfPlan iPerfPlan = PerfPlanFactory.getLocalInstance(ctx);
  70. PerfPlanInfo perfPlanInfo = iPerfPlan.getPerfPlanInfo(new ObjectUuidPK(perfPlanId));
  71. IObjectValue perobject = (IObjectValue) perfPlanInfo.get("perobjectId");//项目id
  72. //String perobjectId = "kn9PaeD+TEK227/S8zjN6bFUids=";
  73. if (perobject == null) {
  74. throw new ShrWebBizException("未查询到关联项目!");
  75. }
  76. String perobjectId = perobject.get("id").toString();
  77. //项目成员管理启用的人员
  78. Set personSet = new HashSet();
  79. StringBuilder sb = new StringBuilder();
  80. //项目成员管理
  81. IMemberManagement iMemberManagement = MemberManagementFactory.getLocalInstance(ctx);
  82. MemberManagementCollection memberManagementCollection = iMemberManagement.getMemberManagementCollection("where projectManagement = '" + perobjectId + "' and state = 1");
  83. if (memberManagementCollection.size() <= 0) {
  84. throw new ShrWebBizException("未查询到关联项目的人员!");
  85. }
  86. for (int i = 0; i < memberManagementCollection.size(); i++) {
  87. MemberManagementInfo memberManagementInfo = memberManagementCollection.get(i);
  88. PersonInfo employee = memberManagementInfo.getEmployee();
  89. personSet.add(employee.getId().toString());
  90. sb.append(employee.getName()).append(",");
  91. }
  92. sb = deleteCharAt(sb);
  93. logger.error("personSet---" + personSet);
  94. //获取员工档案
  95. Set perfFileSet = getPerfFileColl(ctx, personSet, sb);
  96. logger.error("perfFileSet---" + perfFileSet);
  97. //最后需要保存的员工绩效档案ID
  98. StringJoiner jperfFileJiner = new StringJoiner(",");
  99. for (Object perfFileId : perfFileSet) {
  100. jperfFileJiner.add(perfFileId.toString());
  101. }
  102. PerfPlanInfo info = null;
  103. try {
  104. info = PerfPlanFactory.getRemoteInstance().getPerfPlanInfo("where id = '" + perfPlanId + "'");
  105. } catch (Exception var10) {
  106. var10.printStackTrace();
  107. throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.GETPERFPLANERR)).getMessage());
  108. }
  109. PerfEvaObjectUtils perfEvaObjectUtils = new PerfEvaObjectUtils();
  110. perfEvaObjectUtils.addFromPerfFile(ctx, jperfFileJiner.toString(), period, "00000000-0000-0000-0000-000000000000CCE7AED4", info);
  111. } catch (Exception e) {
  112. e.printStackTrace();
  113. throw new ShrWebBizException(e);
  114. }
  115. }
  116. public StringBuilder deleteCharAt(StringBuilder sb) {
  117. if (sb.length() > 0) {
  118. sb.deleteCharAt(sb.lastIndexOf(","));
  119. }
  120. return sb;
  121. }
  122. /**
  123. * 获取员工档案
  124. *
  125. * @param ctx
  126. * @param personSet
  127. * @param sb
  128. * @return
  129. * @throws BOSException
  130. * @throws ShrWebBizException
  131. */
  132. public Set getPerfFileColl(Context ctx, Set personSet, StringBuilder sb) throws BOSException, ShrWebBizException {
  133. //绩效考核档案 获取绩效档案id建立员工考核计划
  134. IPerfFile iPerfFile = PerfFileFactory.getLocalInstance(ctx);
  135. FilterInfo perfFileFilterInfo = new FilterInfo();
  136. perfFileFilterInfo.getFilterItems().add(new FilterItemInfo("person", personSet, CompareType.INCLUDE));
  137. EntityViewInfo perfFileEntityViewInfo = EntityViewInfo.getInstance(perfFileFilterInfo, null, null);
  138. PerfFileCollection perfFileCollection = iPerfFile.getPerfFileCollection(perfFileEntityViewInfo);
  139. logger.error("perfFileCollection.size--" + perfFileCollection.size());
  140. if (perfFileCollection.size() <= 0) {
  141. throw new ShrWebBizException("[" + sb.toString() + "]这些人员还未生成员工绩效档案,请维护!");
  142. }
  143. //员工档案人员
  144. Set perfFileSet = new HashSet();
  145. for (int i = 0; i < perfFileCollection.size(); i++) {
  146. PerfFileInfo perfFileInfo = perfFileCollection.get(i);
  147. String perfFileId = perfFileInfo.getId().toString();
  148. perfFileSet.add(perfFileId);
  149. }
  150. return perfFileSet;
  151. }
  152. }