| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088 |
- 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 com.kingdee.bos.dao.ormapping.ObjectReferedException;
- import com.kingdee.eas.framework.util.ExceptionMessageUtility;
- import com.kingdee.shr.base.syssetting.util.NetCtrlHelper;
- import com.kingdee.shr.perfweb.app.base.evalplan.*;
- 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.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 PerfEvaObjectCollection getEvaluObjectById(String[] personId) {
- if (personId.length == 0) {
- return null;
- } else {
- HashSet<String> set = new HashSet();
- for(int i = 0; i < personId.length; ++i) {
- set.add(personId[i]);
- }
- FilterInfo filter = new FilterInfo();
- filter.getFilterItems().add(new FilterItemInfo("id", set, CompareType.INCLUDE));
- EntityViewInfo viewInfo = new EntityViewInfo();
- SelectorItemCollection sic = viewInfo.getSelector();
- sic.add(new SelectorItemInfo("*"));
- sic.add(new SelectorItemInfo("workFlow.*"));
- sic.add(new SelectorItemInfo("perfGoalsObject.*"));
- sic.add(new SelectorItemInfo("perfGoalsFillerObject.*"));
- viewInfo.setFilter(filter);
- viewInfo.setSelector(sic);
- SorterItemCollection sorterItemCollection = new SorterItemCollection();
- try {
- sorterItemCollection.getSorter().decode("order by perfGoalsObject.personName");
- } catch (ParserException var10) {
- logger.error(var10.toString());
- }
- viewInfo.setSorter(sorterItemCollection);
- PerfEvaObjectCollection coll = null;
- try {
- coll = PerfEvaObjectFactory.getRemoteInstance().getPerfEvaObjectCollection(viewInfo);
- } catch (BOSException var9) {
- logger.error(var9.toString());
- }
- return coll;
- }
- }
- public BatchMessageTipsHeader defaultAlterEvaWorkFlowAction(String billId) throws SHRWebException {
- CoreBaseCollection perfEvaObjColl = new CoreBaseCollection();
- if (org.apache.commons.lang.StringUtils.isEmpty(billId)) {
- throw new ShrWebBizException((new SHRPerfWebBizException(SHRPerfWebBizException.IDREQUIRED)).getMessage());
- } else {
- String[] ids = billId.split(",");
- int sucess = 0;
- int failure = 0;
- BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
- try {
- PerfEvaObjectCollection coll = this.getEvaluObjectById(billId.split(","));
- Set<String> sucessIds = new HashSet();
- IPerfEvaObject iService = null;
- iService = PerfEvaObjectFactory.getRemoteInstance();
- NetCtrlHelper.batchRequestObjIDForUpdate(Arrays.asList(ids));
- for(int i = 0; i < coll.size(); ++i) {
- PerfEvaObjectInfo info = coll.get(i);
- BatchMessageTipsBody body = new BatchMessageTipsBody();
- body.setId(info.getId().toString());
- if (!sucessIds.contains(info.getId().toString())) {
- sucessIds.add(info.getId().toString());
- try {
- info.put("workFlow", info.getWorkFlow().getId().toString());
- if (0 != info.getWorkFlowStatus().getValue()) {
- throw new BOSException(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.ALTERERRASEVALUSTARTED, this.ctx));
- }
- perfEvaObjColl.add(info);
- ++sucess;
- body.setMuitTipsState(Boolean.TRUE);
- body.setMuitTipsMessage(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.OPERATESUCCESS, this.ctx));
- } catch (BOSException var29) {
- ++failure;
- body.setMuitTipsState(Boolean.FALSE);
- body.setMuitTipsMessage(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.OPERATEFAILEDWITHSUFFIX, this.ctx, new Object[]{var29.getMessage()}));
- logger.error(var29.getMessage(), var29);
- } catch (Exception var30) {
- ++failure;
- body.setMuitTipsState(Boolean.FALSE);
- if (var30 instanceof com.kingdee.bos.dao.ObjectNotFoundException) {
- body.setMuitTipsMessage(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.DATADELETED, this.ctx));
- } else {
- body.setMuitTipsMessage(SHRPerfWebResourceUtil.getRes(SHRPerfWebResource.OPERATEFAILED, this.ctx));
- }
- logger.error(var30.getMessage(), var30);
- }
- batchMessageTipsHeader.addResult(body);
- }
- }
- iService.updateBatchData(perfEvaObjColl);
- batchMessageTipsHeader.setBillId(billId);
- batchMessageTipsHeader.setFailureCount(failure);
- batchMessageTipsHeader.setSuccessCount(sucess);
- //JSONUtils.SUCCESS(batchMessageTipsHeader);
- } catch (ObjectReferedException var31) {
- String errorMessage = ExceptionMessageUtility.getMessage(var31);
- throw new ShrWebBizException(errorMessage, var31);
- } catch (Exception var32) {
- throw new SHRWebException(var32.getMessage(), var32);
- } finally {
- try {
- NetCtrlHelper.batchReleaseObjIDForUpdate(Arrays.asList(ids));
- } catch (BOSException var28) {
- logger.error(var28.getMessage(), var28);
- }
- }
- return 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();
- }
- }
- try {
- int count = croeBase.size();
- for (int i = 0; i < count; ++i) {
- PerfEvaObjectInfo info = (PerfEvaObjectInfo) croeBase.get(i);
- defaultAlterEvaWorkFlowAction(info.getId().toString());
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- return getStr;
- }
- /**
- * 上一期分组和考核关系
- *
- * @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;
- }
- }
|