|
|
@@ -1,26 +1,55 @@
|
|
|
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.ObjectNotFoundException;
|
|
|
import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
|
|
|
-import com.kingdee.bos.metadata.entity.*;
|
|
|
+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.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.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;
|
|
|
@@ -28,38 +57,25 @@ 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.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.PerfEvaObjGroupUtils;
|
|
|
+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;
|
|
|
-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
|
|
|
@@ -72,18 +88,21 @@ public class PerfEvaluObjectListHandlerEx extends PerfEvaluObjectListHandler {
|
|
|
private Context ctx = SHRContext.getInstance().getContext();
|
|
|
private static Logger logger = LoggerFactory.getLogger(PerfEvaluObjectListHandlerEx.class);
|
|
|
|
|
|
- @Override
|
|
|
- protected void setInitData(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap, Map<String, Object> initData) throws SHRWebException {
|
|
|
+
|
|
|
+ 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");//项目id
|
|
|
+ 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) {
|
|
|
@@ -91,16 +110,9 @@ public class PerfEvaluObjectListHandlerEx extends PerfEvaluObjectListHandler {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 引入项目考核人员
|
|
|
- *
|
|
|
- * @param request
|
|
|
- * @param response
|
|
|
- * @param modelMap
|
|
|
- * @throws ShrWebBizException
|
|
|
- */
|
|
|
+
|
|
|
public void addPerjectPersonAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws ShrWebBizException {
|
|
|
- logger.error("addPerjectPersonAction---");
|
|
|
+ logger.error("addPerjectPersonAction-----");
|
|
|
String perfPlanId = request.getParameter("perfPlanId");//考核计划
|
|
|
String period = request.getParameter("period");//考核周期
|
|
|
try {
|
|
|
@@ -187,6 +199,7 @@ public class PerfEvaluObjectListHandlerEx extends PerfEvaluObjectListHandler {
|
|
|
res.put("jperfFileJiner", jperfFileJiner);
|
|
|
res.put("iObjectPKS", iObjectPKS);
|
|
|
JSONUtils.writeJson(response, res);
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
throw new ShrWebBizException(e);
|
|
|
@@ -241,17 +254,12 @@ public class PerfEvaluObjectListHandlerEx extends PerfEvaluObjectListHandler {
|
|
|
}
|
|
|
return perfFileSet;
|
|
|
}
|
|
|
- /**
|
|
|
- * 设置考核关系校验
|
|
|
- * @param request
|
|
|
- * @param response
|
|
|
- * @param modelMap
|
|
|
- * @throws SHRWebException
|
|
|
- */
|
|
|
+
|
|
|
public void checkCansetPerfRelationTypeAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
|
|
|
perfGoalsWorkListHandler p = new perfGoalsWorkListHandler();
|
|
|
- p.checkCansetPerfRelationTypeAction(request,response,modelMap);
|
|
|
+ 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();
|
|
|
@@ -270,14 +278,811 @@ public class PerfEvaluObjectListHandlerEx extends PerfEvaluObjectListHandler {
|
|
|
while (rs.next()) {
|
|
|
list.add(rs.getString("wfid"));
|
|
|
}
|
|
|
- if (list.size()>0){
|
|
|
+ if (list.size() > 0) {
|
|
|
String billid_wid = CommonBatchListHandler.joinStr(list);
|
|
|
- request.setAttribute("billId",billid_wid);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
|
|
|
- p.alterEvaWorkFlowAction(request,response,modelMap,batchMessageTipsHeader);
|
|
|
+ }
|
|
|
+ //考核责任人
|
|
|
+ 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;
|
|
|
}
|
|
|
}
|