package com.kingdee.eas.hr.perf.handler; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.ctrl.swing.StringUtils; import com.kingdee.bos.dao.IObjectPK; import com.kingdee.bos.dao.IObjectValue; import com.kingdee.bos.dao.ObjectNotFoundException; import com.kingdee.bos.dao.ormapping.ObjectUuidPK; import com.kingdee.bos.metadata.entity.*; import com.kingdee.bos.metadata.query.util.CompareType; import com.kingdee.eas.basedata.person.PersonFactory; import com.kingdee.eas.basedata.person.PersonInfo; import com.kingdee.eas.common.EASBizException; import com.kingdee.eas.framework.CoreBaseCollection; import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryCollection; import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryFactory; import com.kingdee.eas.hr.affair.EmpEnrollBizBillEntryInfo; import com.kingdee.eas.hr.affair.IEmpEnrollBizBillEntry; import com.kingdee.eas.hr.perf.utils.PerfEvaObjectUtils; import com.kingdee.eas.hr.project.*; import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody; import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader; import com.kingdee.shr.base.syssetting.context.SHRContext; import com.kingdee.shr.base.syssetting.exception.SHRWebException; import com.kingdee.shr.base.syssetting.exception.ShrWebBizException; import com.kingdee.shr.base.syssetting.util.LocaleUtils; import com.kingdee.shr.base.syssetting.web.handler.ListHandler; import com.kingdee.shr.base.syssetting.web.json.JSONUtils; import com.kingdee.shr.perfweb.app.base.evalfile.IPerfFile; import com.kingdee.shr.perfweb.app.base.evalfile.PerfFileCollection; import com.kingdee.shr.perfweb.app.base.evalfile.PerfFileFactory; import com.kingdee.shr.perfweb.app.base.evalfile.PerfFileInfo; import com.kingdee.shr.perfweb.app.base.evalplan.*; import com.kingdee.shr.perfweb.app.base.evalrule.PWorkFlowDefCollection; import com.kingdee.shr.perfweb.app.base.evalrule.PWorkFlowDefInfo; import com.kingdee.shr.perfweb.app.base.evalrule.PerformanceRuleInfo; import com.kingdee.shr.perfweb.app.exception.SHRPerfWebBizException; import com.kingdee.shr.perfweb.app.resource.SHRPerfWebResource; import com.kingdee.shr.perfweb.evaluplan.handler.PerfEvaluObjectListHandler; import com.kingdee.shr.perfweb.util.PerfEvaObjGroupUtils; import com.kingdee.shr.perfweb.util.PerfRuleSettingUtil; import com.kingdee.shr.perfweb.util.PersonInchargeUtils; import com.kingdee.shr.perfweb.util.SHRPerfWebResourceUtil; import com.kingdee.shr.perfweb.utils.PerfPlanUtils; import com.kingdee.shr.perfweb.utils.RuleHistoryUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ui.ModelMap; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.time.LocalDate; import java.time.Year; import java.util.*; /** * @author qingwu * @date 2024/12/17 * @apiNote */ public class PerfEvaluObjectListHandlerEx extends PerfEvaluObjectListHandler { //public class PerfEvaluObjectListHandlerEx extends ListHandler { private Context ctx = SHRContext.getInstance().getContext(); private static Logger logger = LoggerFactory.getLogger(PerfEvaluObjectListHandlerEx.class); public void addPerjectPersonAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws ShrWebBizException { logger.error("addPerjectPersonAction---"); String perfPlanId = request.getParameter("perfPlanId");//考核计划 String period = request.getParameter("period");//考核周期 try { IPerfPlan iPerfPlan = PerfPlanFactory.getLocalInstance(ctx); PerfPlanInfo perfPlanInfo = iPerfPlan.getPerfPlanInfo(new ObjectUuidPK(perfPlanId)); IObjectValue perobject = (IObjectValue) perfPlanInfo.get("perobjectId");//项目id //String perobjectId = "kn9PaeD+TEK227/S8zjN6bFUids="; if (perobject == null) { throw new ShrWebBizException("未查询到关联项目!"); } String perobjectId = perobject.get("id").toString(); //项目成员管理启用的人员 Set personSet = new HashSet(); StringBuilder sb = new StringBuilder(); //项目成员管理 IMemberManagement iMemberManagement = MemberManagementFactory.getLocalInstance(ctx); MemberManagementCollection memberManagementCollection = iMemberManagement.getMemberManagementCollection("where projectManagement = '" + perobjectId + "' and state = 1"); if (memberManagementCollection.size() <= 0) { throw new ShrWebBizException("未查询到关联项目的人员!"); } for (int i = 0; i < memberManagementCollection.size(); i++) { MemberManagementInfo memberManagementInfo = memberManagementCollection.get(i); PersonInfo employee = memberManagementInfo.getEmployee(); personSet.add(employee.getId().toString()); sb.append(employee.getName()).append(","); } sb = deleteCharAt(sb); logger.error("personSet---" + personSet); //获取员工档案 Set perfFileSet = getPerfFileColl(ctx, personSet, sb); logger.error("perfFileSet---" + perfFileSet); //最后需要保存的员工绩效档案ID StringJoiner jperfFileJiner = new StringJoiner(","); for (Object perfFileId : perfFileSet) { jperfFileJiner.add(perfFileId.toString()); } PerfPlanInfo info = null; try { info = PerfPlanFactory.getRemoteInstance().getPerfPlanInfo("where id = '" + perfPlanId + "'"); } catch (Exception var10) { var10.printStackTrace(); throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.GETPERFPLANERR)).getMessage()); } PerfEvaObjectUtils perfEvaObjectUtils = new PerfEvaObjectUtils(); perfEvaObjectUtils.addFromPerfFile(ctx, jperfFileJiner.toString(), period, "00000000-0000-0000-0000-000000000000CCE7AED4", info); } catch (Exception e) { e.printStackTrace(); throw new ShrWebBizException(e); } } public StringBuilder deleteCharAt(StringBuilder sb) { if (sb.length() > 0) { sb.deleteCharAt(sb.lastIndexOf(",")); } return sb; } /** * 获取员工档案 * * @param ctx * @param personSet * @param sb * @return * @throws BOSException * @throws ShrWebBizException */ public Set getPerfFileColl(Context ctx, Set personSet, StringBuilder sb) throws BOSException, ShrWebBizException { //绩效考核档案 获取绩效档案id建立员工考核计划 IPerfFile iPerfFile = PerfFileFactory.getLocalInstance(ctx); FilterInfo perfFileFilterInfo = new FilterInfo(); perfFileFilterInfo.getFilterItems().add(new FilterItemInfo("person", personSet, CompareType.INCLUDE)); EntityViewInfo perfFileEntityViewInfo = EntityViewInfo.getInstance(perfFileFilterInfo, null, null); PerfFileCollection perfFileCollection = iPerfFile.getPerfFileCollection(perfFileEntityViewInfo); logger.error("perfFileCollection.size--" + perfFileCollection.size()); if (perfFileCollection.size() <= 0) { throw new ShrWebBizException("[" + sb.toString() + "]这些人员还未生成员工绩效档案,请维护!"); } //员工档案人员 Set perfFileSet = new HashSet(); for (int i = 0; i < perfFileCollection.size(); i++) { PerfFileInfo perfFileInfo = perfFileCollection.get(i); String perfFileId = perfFileInfo.getId().toString(); perfFileSet.add(perfFileId); } return perfFileSet; } }