| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995 |
- package com.kingdee.eas.hr.perf.handler;
- import java.sql.SQLException;
- import java.sql.Timestamp;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Map;
- import java.util.Set;
- import java.util.StringJoiner;
- import javax.ejb.ObjectNotFoundException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.sysFuncNames_return;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.ui.ModelMap;
- import org.springframework.util.CollectionUtils;
- import com.google.common.collect.Sets;
- 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.ormapping.ObjectUuidPK;
- import com.kingdee.bos.metadata.entity.EntityViewInfo;
- import com.kingdee.bos.metadata.entity.FilterInfo;
- import com.kingdee.bos.metadata.entity.FilterItemCollection;
- import com.kingdee.bos.metadata.entity.FilterItemInfo;
- import com.kingdee.bos.metadata.entity.SelectorItemCollection;
- import com.kingdee.bos.metadata.entity.SelectorItemInfo;
- import com.kingdee.bos.metadata.entity.SorterItemCollection;
- import com.kingdee.bos.metadata.query.util.CompareType;
- import com.kingdee.bos.sql.ParserException;
- import com.kingdee.bos.util.BOSUuid;
- import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
- import com.kingdee.eas.basedata.person.PersonInfo;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.framework.CoreBaseCollection;
- import com.kingdee.eas.hr.perf.utils.PerfEvaObjectUtils;
- import com.kingdee.eas.hr.project.IWorkHoursReportEntry;
- import com.kingdee.eas.hr.project.WorkHoursReportEntryCollection;
- import com.kingdee.eas.hr.project.WorkHoursReportEntryFactory;
- import com.kingdee.eas.hr.project.WorkHoursReportEntryInfo;
- import com.kingdee.eas.util.app.DbUtil;
- import com.kingdee.jdbc.rowset.IRowSet;
- 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.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.EvaluStageEnum;
- import com.kingdee.shr.perfweb.app.base.evalplan.IPerfPeriod;
- import com.kingdee.shr.perfweb.app.base.evalplan.IPerfPlan;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjRelationObjectCollection;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjRelationObjectFactory;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjRelationObjectInfo;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjectCollection;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjectFactory;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjectInfo;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjectPersonalGoalStatusEnum;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjectSendStatusEnum;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjectUnitGoalsStatusEnum;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaObjectWFStatusEnum;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaPersonInchargeCollection;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaPersonInchargeFactory;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaPersonInchargeInfo;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfEvaluAdminResponsorCollection;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfGoalsFillerObjectCollection;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfGoalsFillerObjectFactory;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfGoalsFillerObjectInfo;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfGoalsGroupCollection;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfGoalsGroupFactory;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfGoalsObjectCollection;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfGoalsObjectFactory;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfGoalsObjectInfo;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfPeriodFactory;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfPeriodInfo;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfPlanFactory;
- import com.kingdee.shr.perfweb.app.base.evalplan.PerfPlanInfo;
- import com.kingdee.shr.perfweb.app.base.evalplan.RefStatusEnum;
- import com.kingdee.shr.perfweb.app.base.evalplan.ScoreTaskStatusEnum;
- import com.kingdee.shr.perfweb.app.base.evalplan.SendTypeEnum;
- import com.kingdee.shr.perfweb.app.base.evalrule.PWorkFlowDefCollection;
- import com.kingdee.shr.perfweb.app.base.evalrule.ScoringWayEnum;
- import com.kingdee.shr.perfweb.app.common.YesOrNoEnum;
- 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.planexecute.handler.perfGoalsWorkListHandler;
- import com.kingdee.shr.perfweb.util.GetEntityInfoUtils;
- 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 com.kingdee.shr.perfweb.web.handler.base.CommonBatchListHandler;
- /**
- * @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);
- protected void setInitData(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, Map initData)
- throws SHRWebException
- {
- super.setInitData(request, response, modelMap, initData);
- Context ctx = SHRContext.getInstance().getContext();
- Map<String, Object> custom_params = (Map<String, Object>) initData.get("custom_params");
- //考核周期
- String perfPlanId = (String) custom_params.get("perfPlanId");
- String periodId = (String) custom_params.get("period");
- try {
- IPerfPlan iPerfPlan = PerfPlanFactory.getLocalInstance(ctx);
- PerfPlanInfo perfPlanInfo = iPerfPlan.getPerfPlanInfo(new ObjectUuidPK(perfPlanId));
- IObjectValue perobject = (IObjectValue)perfPlanInfo.get("perobjectId");
- initData.put("perobjectId", perobject);
- initData.put("fromPeriod", isFromPeriodAction(ctx,periodId));
- }
- catch(BOSException e)
- {
- throw new RuntimeException(e);
- }
- catch(EASBizException e)
- {
- throw new RuntimeException(e);
- }
- }
- 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();
- //考核周期
- IPerfPeriod iPerfPeriod = PerfPeriodFactory.getLocalInstance(ctx);
- PerfPeriodInfo perfPeriodInfo = iPerfPeriod.getPerfPeriodInfo(new ObjectUuidPK(period));
- Date pStartDate = perfPeriodInfo.getPStartDate();//周期开始时间
- Date pEndDate = perfPeriodInfo.getPEndDate();//周期結束时间
- //查询项目工时分录周期内的数据
- IWorkHoursReportEntry iWorkHoursReportEntry = WorkHoursReportEntryFactory.getLocalInstance(ctx);
- SelectorItemCollection sic = new SelectorItemCollection();
- sic.add("*");
- sic.add("employee.*");
- sic.add("parent.*");
- sic.add("parent.adminOrg.*");
- FilterInfo filterInfo = new FilterInfo();
- FilterItemCollection filterItems = filterInfo.getFilterItems();
- filterItems.add(new FilterItemInfo("data", pStartDate, CompareType.GREATER_EQUALS));
- filterItems.add(new FilterItemInfo("data", pEndDate, CompareType.LESS_EQUALS));
- filterItems.add(new FilterItemInfo("parent.affiliatedProject", perobjectId, CompareType.EQUALS));
- filterItems.add(new FilterItemInfo("parent.billState", "3"));
- EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
- WorkHoursReportEntryCollection workHoursReportEntryCollection = iWorkHoursReportEntry.getWorkHoursReportEntryCollection(entityViewInfo);
- logger.error("workHoursReportEntryCollection--" + workHoursReportEntryCollection.size());
- if (workHoursReportEntryCollection.size() <= 0) {
- throw new ShrWebBizException("未查询到关联项目的人员!");
- }
- //人员 - 组织
- Map personOrAdminOrgMap = new HashMap();
- //获取项目工时人员
- for (int i = 0; i < workHoursReportEntryCollection.size(); i++) {
- WorkHoursReportEntryInfo workHoursReportEntryInfo = workHoursReportEntryCollection.get(i);
- //员工
- PersonInfo employee = workHoursReportEntryInfo.getEmployee();
- String personId = employee.getId().toString();
- personSet.add(personId);
- //获取人员对应组织
- AdminOrgUnitInfo adminOrg = workHoursReportEntryInfo.getParent().getAdminOrg();
- logger.error("adminOrg--" + adminOrg);
- if (adminOrg != null) {
- String adminOrgId = adminOrg.getId().toString();
- logger.error("adminOrgId--" + adminOrgId);
- personOrAdminOrgMap.put(personId, adminOrgId);
- sb.append(employee.getName()).append(",");
- }
- }
- if (sb.length() > 0) {
- sb = deleteCharAt(sb);
- }
- logger.error("personSet---" + personSet);
- logger.error("personOrAdminOrgMap---" + personOrAdminOrgMap);
- //获取员工档案
- Set perfFileSet = getPerfFileColl(ctx, personSet, sb, personOrAdminOrgMap);
- 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();
- IObjectPK[] iObjectPKS = perfEvaObjectUtils.addFromPerfFile(ctx, jperfFileJiner.toString(), period, "00000000-0000-0000-0000-000000000000CCE7AED4", info);
- Map res = new HashMap();
- res.put("perfFileSet", perfFileSet);
- res.put("jperfFileJiner", jperfFileJiner);
- res.put("iObjectPKS", iObjectPKS);
- JSONUtils.writeJson(response, res);
- } 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, Map<String, String> personOrAdminOrgMap) throws BOSException, ShrWebBizException {
- //绩效考核档案 获取绩效档案id建立员工考核计划
- IPerfFile iPerfFile = PerfFileFactory.getLocalInstance(ctx);
- FilterInfo perfFileFilterInfo = new FilterInfo();
- perfFileFilterInfo.getFilterItems().add(new FilterItemInfo("person", personSet, CompareType.INCLUDE));
- perfFileFilterInfo.getFilterItems().add(new FilterItemInfo("state", "1"));
- 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 personId = perfFileInfo.getPerson().getId().toString();
- //组织
- String adminOrgId = perfFileInfo.getAdminOrgUnit().getId().toString();
- logger.error("adminOrgId -- personId --" + adminOrgId + "--" + personId);
- //获取项目工时组织与绩效员工档案组织一样的数据
- if (personOrAdminOrgMap.containsKey(personId)) {
- if (adminOrgId.equals(personOrAdminOrgMap.get(personId))) {
- String perfFileId = perfFileInfo.getId().toString();
- perfFileSet.add(perfFileId);
- }
- }
- }
- return perfFileSet;
- }
- public void checkCansetPerfRelationTypeAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
- perfGoalsWorkListHandler p = new perfGoalsWorkListHandler();
- p.checkCansetPerfRelationTypeAction(request, response, modelMap);
- }
- public void alterEvaWorkFlowAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, BatchMessageTipsHeader batchMessageTipsHeader) throws SHRWebException, EASBizException {
- Context ctx = SHRContext.getInstance().getContext();
- perfGoalsWorkListHandler p = new perfGoalsWorkListHandler();
- try {
- String billId = this.getDealIdStr(request);
- StringBuilder sql = new StringBuilder("select (fid||'$'||FWORKFLOWID) as wfid from T_EVA_PerfEvaObject where fid in(''");
- String[] billIds = billId.split(",");
- for (String id : billIds) {
- sql.append(",'");
- sql.append(id);
- sql.append("'");
- }
- sql.append(")");
- IRowSet rs = DbUtil.executeQuery(ctx, sql.toString());
- Set<String> list = Sets.newHashSet();
- while (rs.next()) {
- list.add(rs.getString("wfid"));
- }
- if (list.size()>0){
- String billid_wid = CommonBatchListHandler.joinStr(list);
- request.setAttribute("billId",billid_wid);
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- p.alterEvaWorkFlowAction(request,response,modelMap,batchMessageTipsHeader);
- }
- public String isFromPeriodAction(Context ctx ,String periodId)
- throws SHRWebException {
- //自动引用上期数据----------
- String fromPeriod = null;
- //1.首先查询是否有人-当前考核周期
- IRowSet set = null;
- try {
- set = DbUtil.executeQuery(ctx, "select * from T_EVA_PerfEvaObject where FPERIODID ='"+periodId+"'");
- if(set != null && set.size() > 0 && set.next()) {
- }else {
- fromPeriod = getFromPeriod(periodId);
- }
- return fromPeriod;
- } catch (BOSException | SQLException e) {
- e.printStackTrace();
- }
- return fromPeriod;
- }
- public String addFromPeriodAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
- throws SHRWebException {
- String customItems = request.getParameter("custom_params");
- Context ctx = SHRContext.getInstance().getContext();
- if (!StringUtils.isEmpty(customItems)) {
- Map map = JSONUtils.convertJsonToObject(ctx, customItems);
- logger.error("getListDataAction-map--" + map.toString());
- String periodId = map.get("periodId").toString();
- checkPeriod(periodId);
- String perfPlanId = request.getParameter("perfPlanId");
- String hrOrgUnit = request.getParameter("hrOrgId");
- String fromPeriod = null;
- //自动引用上期数据----------
- //1.首先查询是否有人-当前考核周期
- IRowSet set = null;
- try {
- fromPeriod = getFromPeriod(periodId);
- if(fromPeriod != null) {
- Map<String,String> mapRequest = new HashMap<String,String>();
- mapRequest.put("isUpdate", "1");
- mapRequest.put("isRefGroup", "1");
- mapRequest.put("isRefPersonIncharge", "1");
- mapRequest.put("isUpdateIndicator", "1");
- mapRequest.put("fromPeriod", fromPeriod);
- mapRequest.put("periodId", periodId);
- mapRequest.put("hrOrgUnit", hrOrgUnit);
- myAddFromPeriod(mapRequest, hrOrgUnit,request);
- return null;
- }
- } catch (BOSException | SQLException e) {
- e.printStackTrace();
- }
- }
- return null;
- }
- private void myAddFromPeriod(Map<String,String> mapRequest, String hrOrgUnit,HttpServletRequest request)
- throws SHRWebException {
- String isUpdate = mapRequest.get("isUpdate");
- String isRefGroup = mapRequest.get("isRefGroup");
- String isRefPersonIncharge = mapRequest.get("isRefPersonIncharge");
- String isUpdateIndicator = mapRequest.get("isUpdateIndicator");
- Map<String, PerfFileInfo> filemap = new HashMap();
- Set<String> set = new HashSet();
- String[] ids = null;
- String bePerdiodId = mapRequest.get("fromPeriod");
- String periodId = mapRequest.get("periodId");
- PerfEvaObjectCollection coll = this.getEvaObjectCollection(bePerdiodId, set);
- if (coll != null && coll.size() >= 1) {
- Boolean isOrg = coll.get(0).getIsOrg().getValue() == 1;
- CoreBaseCollection croeBase = new CoreBaseCollection();
- Map map = null;
- PerfPeriodInfo currentPeriodInfo = null;
- try {
- map = new HashMap();
- currentPeriodInfo = PerfPeriodFactory.getRemoteInstance()
- .getPerfPeriodInfo("select *, perfRule.scoringWay where id ='" + periodId + "'");
- if ("1".equals(isRefGroup)) {
- Map<String, Object> checkResult = PerfRuleSettingUtil.checkRuleData(
- currentPeriodInfo.getPerfRule().getId().toString(), "",
- currentPeriodInfo.getPerfPlan().getId().toString(), this.ctx);
- boolean flag = (Boolean) checkResult.get("result");
- if (!flag) {
- throw new ShrWebBizException((String) checkResult.get("msg"));
- }
- map = PerfEvaObjectFactory.getRemoteInstance().addNewAndGroup(bePerdiodId, periodId, set,
- isUpdateIndicator);
- }
- } catch (Exception var37) {
- logger.error("addFromPeriod refGroup error: " + var37);
- throw new ShrWebBizException(var37.getMessage());
- }
- try {
- PerfPeriodInfo perfPeriodInfo = GetEntityInfoUtils.getPerfPeriodInfo(this.ctx, bePerdiodId);
- String defaultWorkFlow = "";
- PWorkFlowDefCollection defaultWorkFlowColl = RuleHistoryUtils.getDefaultWorkFlow(this.ctx,
- currentPeriodInfo.getPerfRule().getId().toString());
- if (defaultWorkFlowColl != null && defaultWorkFlowColl.size() > 0) {
- defaultWorkFlow = defaultWorkFlowColl.get(0).getId().toString();
- }
- if (StringUtils.isEmpty(defaultWorkFlow) && perfPeriodInfo.getIsHistoryUpdate().getValue() == 1) {
- PerfPlanInfo perfPlanInfo = PerfPlanFactory.getRemoteInstance()
- .getPerfPlanInfo("where id = '" + perfPeriodInfo.getPerfPlan().getId().toString() + "'");
- if (perfPlanInfo.getDefaultWorkFlow() != null) {
- defaultWorkFlow = perfPlanInfo.getDefaultWorkFlow().getId().toString();
- }
- }
- if ("1".equals(isUpdate) && !isOrg) {
- filemap = this.getLastPerfFile(ids, hrOrgUnit, bePerdiodId);
- } else if ("1".equals(isUpdate) && isOrg) {
- this.getLastAdminHis(ids, coll, bePerdiodId);
- }
- HashMap<String, String> flowIdMap = RuleHistoryUtils.getFlowIdMap(this.ctx, bePerdiodId, periodId);
- HashMap<String, String> evaObjMap = new HashMap();
- new HashMap();
- ScoringWayEnum scoringWay = currentPeriodInfo.getPerfRule().getScoringWay();
- for (int i = 0; coll != null && i < coll.size(); ++i) {
- PerfEvaObjectInfo info = coll.get(i);
- if (info.getIsOrg().getValue() != 1 && "1".equals(isUpdate)
- && info.getPerfFile().getAssignType().getValue() == 1) {
- String personId = info.getPerson().getId().toString();
- PerfFileInfo perfFileInfo = (PerfFileInfo) ((Map) filemap).get(personId);
- if (perfFileInfo != null) {
- info.setPerfFile(perfFileInfo);
- info.setAdminOrgUnit(perfFileInfo.getAdminOrgUnit());
- }
- }
- BOSUuid bosUuid = BOSUuid.create("8188E78B");
- evaObjMap.put(info.getId().toString(), bosUuid.toString());
- info.setId(bosUuid);
- PerfGoalsObjectCollection pgoColl = info.getPerfGoalsObject();
- for (int j = 0; j < pgoColl.size(); ++j) {
- pgoColl.get(j).setPerfEvaObject(info);
- pgoColl.get(j).setId((BOSUuid) null);
- }
- PerfGoalsFillerObjectCollection perfGoalsFillerObject = info.getPerfGoalsFillerObject();
- for (int j = 0; j < perfGoalsFillerObject.size(); ++j) {
- perfGoalsFillerObject.get(j).setPerfEvaObject(info);
- perfGoalsFillerObject.get(j).setId((BOSUuid) null);
- }
- PerfEvaluAdminResponsorCollection perfResponsorObject = info.getResponsor();
- if (perfResponsorObject != null) {
- for (int j = 0; j < perfResponsorObject.size(); ++j) {
- perfResponsorObject.get(j).setEvaObj(info);
- perfResponsorObject.get(j).setId((BOSUuid) null);
- }
- }
- info.put("period", periodId);
- String soureGroupId;
- if ("1".equals(isRefGroup)) {
- soureGroupId = info.getBelongGroup();
- logger.error("the soureGroupId is: " + soureGroupId);
- logger.error("the groupMap is: " + map);
- if (map != null && ((Map) map).get(soureGroupId) != null) {
- logger.error("the map.get(soureGroupId) is: " + ((Map) map).get(soureGroupId));
- info.setBelongGroup((String) ((Map) map).get(soureGroupId));
- } else if (!StringUtils.isEmpty(soureGroupId)) {
- String oql = "where period = '" + periodId + "' and relatedGroup ='" + soureGroupId + "'";
- PerfGoalsGroupCollection goalsColl = PerfGoalsGroupFactory.getRemoteInstance()
- .getPerfGoalsGroupCollection(oql);
- if (goalsColl != null && goalsColl.size() > 0) {
- info.setBelongGroup(goalsColl.get(0).getId().toString());
- } else {
- info.setBelongGroup((String) null);
- }
- } else {
- info.setBelongGroup((String) null);
- }
- } else {
- info.setBelongGroup((String) null);
- }
- info.setPersonalGoalStatus(PerfEvaObjectPersonalGoalStatusEnum.UNESTABLISHED);
- info.setUnitGoalsStatus(PerfEvaObjectUnitGoalsStatusEnum.UNASSIGN);
- info.put("targetBackReason", (Object) null);
- info.setGoalsPercent("");
- info.setGoalsScore("");
- info.setSendedTime((Date) null);
- info.setSendTiming((Timestamp) null);
- info.setChangeTime((Date) null);
- info.setTaskSendStatus(PerfEvaObjectSendStatusEnum.UNSENT);
- info.setWorkFlowStatus(PerfEvaObjectWFStatusEnum.UNSTARTED);
- info.setScoreTaskStatus(ScoreTaskStatusEnum.UNSEND);
- soureGroupId = (String) flowIdMap.get(info.getWorkFlow().getId().toString());
- info.put("workFlow", soureGroupId == null ? defaultWorkFlow : soureGroupId);
- info.setTargetMakeSure(perfPeriodInfo.getPerfPlan().isTargetMakeSure() ? 1 : 0);
- if (!"1".equals(isRefPersonIncharge)) {
- info.setPersonInChargeType(
- PersonInchargeUtils.setSuperior2PersonInChargeType(info.getPersonInChargeType()));
- info.setPointPosition((String) null);
- info.put("personIncharge", new PerfEvaPersonInchargeCollection());
- } else {
- PerfEvaPersonInchargeCollection personIncharge = info.getPersonIncharge();
- if (personIncharge != null && personIncharge.size() > 0) {
- PerfEvaPersonInchargeCollection personInchargeTemp = new PerfEvaPersonInchargeCollection();
- for (int j = 0; j < personIncharge.size(); ++j) {
- PerfEvaPersonInchargeInfo personInchargeInfo = personIncharge.get(j);
- if ("0".equals(personInchargeInfo.getComefrom())) {
- personInchargeInfo.setEvaObj(info);
- personInchargeInfo.setId((BOSUuid) null);
- personInchargeTemp.add(personInchargeInfo);
- }
- }
- info.put("personIncharge", personInchargeTemp);
- }
- }
- croeBase.add(info);
- }
- RuleHistoryUtils.copyMatrixWork(this.ctx, evaObjMap, bePerdiodId, periodId);
- } catch (Exception var38) {
- logger.error("addFromPeriod error: " + var38);
- throw new ShrWebBizException(
- (new SHRPerfWebBizException(SHRPerfWebBizException.REFELASTPERFFILEERR)).getMessage());
- }
- runBatchSaveEvaObject(mapRequest, croeBase,request);
- } else {
- throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.REFERPERIODHASNOEVAOBJ)).getMessage());
- }
- }
- private PerfEvaObjectCollection getEvaObjectCollection(String period, Set<String> idSet) {
- FilterInfo filter = new FilterInfo();
- if (idSet.size() > 0) {
- filter.getFilterItems().add(new FilterItemInfo("id", idSet, CompareType.INCLUDE));
- } else {
- filter.getFilterItems().add(new FilterItemInfo("period", period, CompareType.EQUALS));
- }
- filter.getFilterItems().add(new FilterItemInfo("changeDealType", 100, CompareType.EQUALS));
- EntityViewInfo viewInfo = new EntityViewInfo();
- SelectorItemCollection sic = viewInfo.getSelector();
- sic.add(new SelectorItemInfo("*"));
- sic.add(new SelectorItemInfo("perfFile.*"));
- sic.add(new SelectorItemInfo("perfFile.person.number"));
- sic.add(new SelectorItemInfo("perfFile.person.id"));
- sic.add(new SelectorItemInfo("perfGoalsObject.*"));
- sic.add(new SelectorItemInfo("perfGoalsFillerObject.*"));
- sic.add(new SelectorItemInfo("responsor.*"));
- sic.add(new SelectorItemInfo("personIncharge.*"));
- sic.add(new SelectorItemInfo("person.number"));
- sic.add(new SelectorItemInfo("person.name"));
- viewInfo.setFilter(filter);
- viewInfo.setSelector(sic);
- new PerfEvaObjectCollection();
- try {
- PerfEvaObjectCollection coll = PerfEvaObjectFactory.getRemoteInstance().getPerfEvaObjectCollection(viewInfo);
- return coll;
- } catch (BOSException var8) {
- logger.error(var8.toString());
- return null;
- }
- }
- private Map<String, PerfFileInfo> getLastPerfFile(String[] ids, String hrOrgUnit, String bePerdiodId)
- throws BOSException, EASBizException {
- PerfEvaObjectCollection evaColl = this.getEvaObjs(ids, bePerdiodId);
- return this.getPersonLastFile(hrOrgUnit, evaColl);
- }
- private Map<String, PerfFileInfo> getPersonLastFile(String hrOrgUnit, PerfEvaObjectCollection evaColl)
- throws BOSException {
- Map<String, PerfFileInfo> map = new HashMap();
- Set<String> personSet = new HashSet();
- boolean isOrg = false;
- for (int i = 0; i < evaColl.size(); ++i) {
- PerfEvaObjectInfo info = evaColl.get(i);
- isOrg = info.getIsOrg().getValue() == 1;
- if (isOrg) {
- return map;
- }
- String personId = info.getPerson().getId().toString();
- if (info.getPerfFile().getAssignType().getValue() == 0) {
- map.put(personId, info.getPerfFile());
- } else {
- personSet.add(personId);
- }
- }
- FilterInfo filter = new FilterInfo();
- EntityViewInfo viewInfo = new EntityViewInfo();
- SelectorItemCollection sic = viewInfo.getSelector();
- FilterItemCollection filterItems = filter.getFilterItems();
- filterItems.add(new FilterItemInfo("person", personSet, CompareType.INCLUDE));
- filterItems.add(new FilterItemInfo("hrOrgUnit", hrOrgUnit, CompareType.EQUALS));
- filterItems.add(new FilterItemInfo("assignType", 1, CompareType.EQUALS));
- filterItems.add(new FilterItemInfo("state", 1));
- filterItems.add(new FilterItemInfo("assignType", 1, CompareType.EQUALS));
- sic.add(new SelectorItemInfo("*"));
- sic.add(new SelectorItemInfo("position.*"));
- SorterItemCollection sorterItemCollection = new SorterItemCollection();
- try {
- sorterItemCollection.getSorter().decode("order by CREATETIME DESC");
- } catch (ParserException var15) {
- logger.error(var15.toString());
- }
- viewInfo.setFilter(filter);
- viewInfo.setSorter(sorterItemCollection);
- PerfFileCollection coll = PerfFileFactory.getRemoteInstance().getPerfFileCollection(viewInfo);
- for (int i = 0; i < coll.size(); ++i) {
- PerfFileInfo perfFile = coll.get(i);
- if (perfFile.getState().getValue() == 1) {
- String personIdKey = perfFile.getPerson().getId().toString();
- if (map.get(personIdKey) == null) {
- map.put(personIdKey, perfFile);
- }
- }
- }
- return map;
- }
- protected String runBatchSaveEvaObject(Map<String,String> mapRequest, CoreBaseCollection croeBase,HttpServletRequest request)
- throws SHRWebException {
- CoreBaseCollection mycroeBase = new CoreBaseCollection();
- int sucess = 0;
- int failure = 0;
- String billId = "";
- BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
- Set set = this.getCurrentRequestAdminOrgRangeIdSet(request);
- try {
- Set<String> sucessIds = new HashSet();
- String periodId = mapRequest.get("periodId");
- String hrOrgUnit = mapRequest.get("hrOrgUnit");
- Map<String, String> verifyMap = new HashMap();
- Map<String, String> evaPlanNameMap = this.getPerfPlanName(periodId, hrOrgUnit);
- CoreBaseCollection addCoreColl = new CoreBaseCollection();
- int count = croeBase.size();
- int j = 1;
- Set<String> personIds = new HashSet();
- int i;
- PerfEvaObjectInfo info;
- for (i = 0; i < count; ++i) {
- info = (PerfEvaObjectInfo) croeBase.get(i);
- personIds.add(info.getPerson().getId().toString());
- if (j != 500 && i != count - 1) {
- ++j;
- } else {
- Map<String, String> tempMap = this.getEvaObject(periodId, hrOrgUnit, personIds);
- if (!CollectionUtils.isEmpty(tempMap)) {
- verifyMap.putAll(tempMap);
- }
- j = 1;
- personIds = new HashSet();
- }
- }
- for (i = 0; i < croeBase.size(); ++i) {
- info = (PerfEvaObjectInfo) croeBase.get(i);
- BatchMessageTipsBody body = new BatchMessageTipsBody();
- try {
- String id = info.getPerfFile().getId().toString();
- billId = billId + id + ",";
- body.setId(id);
- if (sucessIds.contains(id)) {
- continue;
- }
- sucessIds.add(id);
- if (!set.contains(info.getAdminOrgUnit().getId().toString()) && info.getPerfFile().isUseDefault()) {
- throw new BOSException(
- (new SHRPerfWebBizException(SHRPerfWebBizException.USERHASNOPERFFILEORGPERMISSION))
- .getMessage());
- }
- String key = info.getPerson().getNumber() + "_" + info.getPerson().getName() + "_"
- + info.getPerfFile().getPosition().getId().toString() + "_"
- + info.getPerfFile().getAssignType().getValue();
- if (!StringUtils.isEmpty((String) verifyMap.get(key))) {
- throw new BOSException((new SHRPerfWebBizException(SHRPerfWebBizException.EVAOBJALREADYADDED,
- new Object[]{evaPlanNameMap.get(verifyMap.get(key))})).getMessage());
- }
- addCoreColl.add(info);
- ++sucess;
- body.setMuitTipsState(Boolean.TRUE);
- body.setMuitTipsMessage(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.OPERATESUCCESS, this.ctx));
- } catch (BOSException var22) {
- croeBase.removeObject(i);
- --i;
- ++failure;
- body.setMuitTipsState(Boolean.FALSE);
- body.setMuitTipsMessage(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.OPERATEFAILEDWITHSUFFIX,
- this.ctx, new Object[]{var22.getMessage()}));
- logger.error(var22.getMessage(), var22);
- } catch (Exception var23) {
- croeBase.removeObject(i);
- --i;
- ++failure;
- body.setMuitTipsState(Boolean.FALSE);
- if (var23 instanceof ObjectNotFoundException) {
- body.setMuitTipsMessage(
- SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.DATADELETED, this.ctx));
- } else {
- body.setMuitTipsMessage(
- SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.OPERATEFAILED, this.ctx));
- }
- logger.error(var23.getMessage(), var23);
- }
- batchMessageTipsHeader.addResult(body);
- if (addCoreColl.size() == 100) {
- PerfEvaObjectFactory.getRemoteInstance().saveBatchData(addCoreColl);
- mycroeBase.addCollection(addCoreColl);
- addCoreColl.clear();
- }
- }
- if (addCoreColl.size() > 0) {
- PerfEvaObjectFactory.getRemoteInstance().saveBatchData(addCoreColl);
- mycroeBase.addCollection(addCoreColl);
- addCoreColl.clear();
- }
- batchMessageTipsHeader.setBillId(billId.substring(0, billId.length() - 1));
- batchMessageTipsHeader.setFailureCount(failure);
- batchMessageTipsHeader.setSuccessCount(sucess);
- if (sucess > 0) {
- PerfPlanUtils.writeRefStateForPerfPeriod(this.ctx, periodId, RefStatusEnum.REFERED);
- }
- // JSONUtils.SUCCESS(batchMessageTipsHeader);
- //添加人员后自动分组 设置考核关系
- mycroeBase = updateAbovePerfEvaObject(mycroeBase,"1",periodId);
- PerfEvaObjectFactory.getRemoteInstance().updateBatchData(mycroeBase);
- for (int k = 0; k < mycroeBase.size(); k++) {
- info = (PerfEvaObjectInfo) mycroeBase.get(k);
- logger.error("getBelongGroup"+info.getBelongGroup());
- }
- updateAbovePerfEvaObject(mycroeBase,"2",periodId);
- return null;
- } catch (Exception var24) {
- throw new SHRWebException(var24.getMessage(), var24);
- }
- }
- protected String runBatchSaveEvaObject(HttpServletRequest request, CoreBaseCollection croeBase)
- throws SHRWebException {
- //添加人员后自动分组
- String addModel = request.getParameter("addModel");
- if ("0".equals(addModel)) { //单独添加人员
- String billId = this.getBillId(request);
- String[] ids = null;
- ids = billId.split(",");
- Set<String> set = new HashSet();
- set.addAll(Arrays.asList(ids));
- if(set != null && set.size() >0) {
- try {
- System.out.println("runBatchSaveEvaObject+11111"+croeBase.toString());
- updateAbovePerfEvaObject(croeBase,"1",null);
- } catch (BOSException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (EASBizException e) {
- e.printStackTrace();
- }
- }
- }
- String getStr = super.runBatchSaveEvaObject(request, croeBase);
- //设置考核关系
- if ("0".equals(addModel)) { //单独添加人员
- try {
- updateAbovePerfEvaObject(croeBase,"2",null);
- } catch (EASBizException e) {
- e.printStackTrace();
- } catch (BOSException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- return getStr;
- }
- /**
- * 上一期分组和考核关系
- * @param perfPlanId
- * @param periodId
- * @return
- * @throws SQLException
- * @throws BOSException
- * @throws EASBizException
- */
- private CoreBaseCollection updateAbovePerfEvaObject(CoreBaseCollection croeBase,String type,String periodId) throws BOSException, SQLException, EASBizException {
- PerfEvaObjectInfo info = null;
- String fromPeriod = null;
- IRowSet set = null;
- String FBELONGGROUP = null;
- String getperiodId = null;
- for (int i = 0; i < croeBase.size(); ++i) {
- info = (PerfEvaObjectInfo) croeBase.get(i);
- if(info.get("period") != null && info.get("period").toString() != null){
- getperiodId = info.get("period").toString();
- }else {
- getperiodId = periodId == null?info.getPeriod().getId().toString():periodId;
- }
- if(fromPeriod == null) {
- fromPeriod = getFromPeriod(getperiodId);
- }
- System.out.println("updateAbovePerfEvaObject+22222"+fromPeriod);
- if(fromPeriod != null) {
- if(type.equals("1")) {
- StringBuffer sb = new StringBuffer();
- sb.append("SELECT t1.fid FBELONGGROUP,t.FISSUPERIOR FISSUPERIOR");
- sb.append(",t.FISSELF FISSELF,t.FGOALSPERCENT FGOALSPERCENT,FPERSONINCHARGEPOSITIONID FPERSONINCHARGEPOSITIONID"
- + ",FPERSONINCHARGETYPEID FPERSONINCHARGETYPEID FROM T_EVA_PerfEvaObject t ");
- sb.append(" inner join T_EVA_PerfGoalsGroup T1 on T1.FRELATEDGROUPID = t.FBELONGGROUP");
- sb.append(" where t.FPERIODID = '"+fromPeriod+"' and T1.FPERIODID = '"+getperiodId+"'");
- sb.append(" and t.FPERSONID ='"+info.getPerson().getId().toString()+"' ");
- sb.append(" and t.FBELONGGROUP is not null");
- // System.out.println("ppinfo"+sb.toString());
- set = DbUtil.executeQuery(ctx, sb.toString());
- //如果有上一期的分组则
- if(set != null && set.size() > 0 && set.next()) {
- FBELONGGROUP = set.getString("FBELONGGROUP");
- info.setBelongGroup(FBELONGGROUP);
- info.setIsSuperior(set.getInt("FISSUPERIOR") == 1?YesOrNoEnum.YES:YesOrNoEnum.NO);
- info.setIsSelf(set.getInt("FISSELF") == 1?YesOrNoEnum.YES:YesOrNoEnum.NO);
- info.setGoalsPercent(set.getString("FGOALSPERCENT"));
- info.setPersonalGoalStatus(PerfEvaObjectPersonalGoalStatusEnum.UNESTABLISHED);
- info.setUnitGoalsStatus(PerfEvaObjectUnitGoalsStatusEnum.UNASSIGN);
- info.setPersonInchargePosition(set.getString("FPERSONINCHARGEPOSITIONID"));
- info.setPersonInChargeType(set.getString("FPERSONINCHARGETYPEID"));
- info.setWorkFlowStatus(PerfEvaObjectWFStatusEnum.UNSTARTED);
- info.setSendType(SendTypeEnum.HANDWORK);
- info.setIsSendEmail(YesOrNoEnum.NO);
- }else {
- info.setPersonalGoalStatus(PerfEvaObjectPersonalGoalStatusEnum.UNESTABLISHED);
- info.setWorkFlowStatus(PerfEvaObjectWFStatusEnum.UNSTARTED);
- info.setSendType(SendTypeEnum.HANDWORK);
- info.setIsSendEmail(YesOrNoEnum.NO);
- }
- }
- //如果有考核关系则
- if(info != null && info.size() > 0 && info.getId() != null && type.equals("2")) {
- String getSql = "SELECT fid FROM T_EVA_PerfEvaObject where FPERIODID = '"+fromPeriod+"' and FPERSONID ='"+info.getPerson().getId().toString()+"' ";
- System.out.println("getSql:"+getSql);
- //考核关系
- PerfEvaObjRelationObjectInfo reInfo = null;
- PerfEvaObjRelationObjectCollection reColl =
- PerfEvaObjRelationObjectFactory.getLocalInstance(ctx).getPerfEvaObjRelationObjectCollection(" where id in("
- + "SELECT fid fid FROM T_EVA_PerfEvaObjRelationObject where FEVAOBJID "
- + "in ("+getSql+"))");
- if(reColl != null && reColl.size() > 0) {
- for (int j = 0; j < reColl.size(); j++) {
- reInfo = reColl.get(j);
- reInfo.setEvaObj(info);
- reInfo.setId(null);
- PerfEvaObjRelationObjectFactory.getLocalInstance(ctx).addnew(reInfo);
- }
- }
- //目标填报
- PerfGoalsFillerObjectInfo foInfo = null;
- PerfGoalsFillerObjectCollection foColl =
- PerfGoalsFillerObjectFactory.getLocalInstance(ctx).getPerfGoalsFillerObjectCollection(" where id in("
- + "SELECT fid fid FROM T_EVA_PerfGoalsFillerObject where FPERFEVAOBJECTID "
- + "in ("+getSql+"))");
- if(foColl != null && foColl.size() > 0) {
- for (int j = 0; j < foColl.size(); j++) {
- foInfo = foColl.get(j);
- foInfo.setPerfEvaObject(info);
- foInfo.setId(null);
- PerfGoalsFillerObjectFactory.getLocalInstance(ctx).addnew(foInfo);
- }
- }
- //目标下达
- PerfGoalsObjectInfo goInfo = null;
- PerfGoalsObjectCollection goColl =
- PerfGoalsObjectFactory.getLocalInstance(ctx).getPerfGoalsObjectCollection(" where id in("
- + "SELECT fid fid FROM T_EVA_PerfGoalsObject where FPERFEVAOBJECTID "
- + "in ("+getSql+"))");
- if(goColl != null && goColl.size() > 0) {
- System.out.println("goColl.size()"+goColl.size());
- System.out.println("goColl.toString"+goColl.toString());
- //当期的清理掉
- PerfGoalsObjectFactory.getLocalInstance(ctx).delete(" where id in("
- + "SELECT fid fid FROM T_EVA_PerfGoalsObject where FPERFEVAOBJECTID "
- + "in (SELECT fid FROM T_EVA_PerfEvaObject where fid = '"+info.getId().toString()+"'))");
- for (int j = 0; j < goColl.size(); j++) {
- goInfo = goColl.get(j);
- goInfo.setPerfEvaObject(info);
- goInfo.setId(null);
- PerfGoalsObjectFactory.getLocalInstance(ctx).addnew(goInfo);
- }
- }
- //考核责任人
- PerfEvaPersonInchargeInfo enInfo = null;
- PerfEvaPersonInchargeCollection enColl =
- PerfEvaPersonInchargeFactory.getLocalInstance(ctx).getPerfEvaPersonInchargeCollection(" where id in("
- + "SELECT fid fid FROM T_EVA_PerfEvaPersonIncharge where FEVAOBJID "
- + "in ("+getSql+"))");
- if(enColl != null && enColl.size() > 0) {
- System.out.println("enColl.size()"+enColl.size());
- System.out.println("enColl.toString"+enColl.toString());
- //当期的清理掉
- PerfEvaPersonInchargeFactory.getLocalInstance(ctx).delete(" where id in("
- + "SELECT fid fid FROM T_EVA_PerfEvaPersonIncharge where FEVAOBJID "
- + "in (SELECT fid FROM T_EVA_PerfEvaObject where fid = '"+info.getId().toString()+"'))");
- for (int j = 0; j < enColl.size(); j++) {
- enInfo = enColl.get(j);
- enInfo.setEvaObj(info);
- enInfo.setId(null);
- PerfEvaPersonInchargeFactory.getLocalInstance(ctx).addnew(enInfo);
- }
- }
- }
- // }
- }
- }
- return croeBase;
- }
- /**
- * 获取上一期期间id
- * @return
- * @throws BOSException
- * @throws SQLException
- */
- private String getFromPeriod(String periodId) throws BOSException, SQLException {
- IRowSet set = null;
- String fromPeriod = null;
- set = DbUtil.executeQuery(ctx, "select fid fid from T_EVA_PerfPeriod where FPERFPLAN in (select FPERFPLAN from T_EVA_PerfPeriod where fid ='"+periodId+"')"
- + " and fid <> '"+periodId+"' "
- + " and FPSTARTDATE < (select FPENDDATE from T_EVA_PerfPeriod where fid ='"+periodId+"') "
- + " order by FPENDDATE desc");
- if(set != null && set.size() > 0 && set.next()) {
- fromPeriod = set.getString("fid");
- }
- set = DbUtil.executeQuery(ctx, "select fid from T_EVA_PerfEvaObject where FPERIODID ='"+fromPeriod+"'");
- if(set != null && set.size() > 0 && set.next()) {
- return fromPeriod;
- }else {
- fromPeriod = null;
- }
- return fromPeriod;
- }
- }
|