|
|
@@ -73,7 +73,7 @@ public class KeyBeHavEvalTask extends AbstractTask implements Plugin {
|
|
|
public final static Map<String,List<Integer>> jobSeqJobLevelMap = ImmutableMap.<String, List<Integer>>builder()
|
|
|
.put(JobSeqEnum.TECHNICALS.getCode(), Lists.newArrayList(13,14,15))
|
|
|
.put(JobSeqEnum.FUNCTIONAL.getCode(), Lists.newArrayList(13,14,15))
|
|
|
- .put(JobSeqEnum.SKILL.getCode(), Lists.newArrayList(12,13,14))
|
|
|
+ .put(JobSeqEnum.SKILL.getCode(), Lists.newArrayList(13,14,15))
|
|
|
.build();
|
|
|
|
|
|
@Override
|
|
|
@@ -101,51 +101,8 @@ public class KeyBeHavEvalTask extends AbstractTask implements Plugin {
|
|
|
));
|
|
|
logger.info("员工信息分组完成,分组后Map大小: {}", empPosOrgRelMap.size());
|
|
|
|
|
|
- //查询服务年限
|
|
|
- logger.info("开始查询服务年限,查询职务数量: {}", assignmentIds.size());
|
|
|
- DynamicObject[] perSerLenArray = EmpPosOrgRelHelper.getPerSerLen(assignmentIds);
|
|
|
- logger.info("查询到服务年限数据数量: {}", perSerLenArray != null ? perSerLenArray.length : 0);
|
|
|
- Map<Long, DynamicObject> perSerLenMap = Arrays.stream(perSerLenArray)
|
|
|
- .collect(Collectors.groupingBy(
|
|
|
- obj -> obj.getLong(String.join(".", FormConstant.EMPLOYEE_KEY, FormConstant.ID_KEY)),
|
|
|
- Collectors.toList()
|
|
|
- ))
|
|
|
- .entrySet()
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(
|
|
|
- Map.Entry::getKey,
|
|
|
- entry -> entry.getValue().get(0) // 由于已按日期降序排列,取第一条即为
|
|
|
- ));
|
|
|
- logger.info("服务年限数据分组完成,分组后Map大小: {}", perSerLenMap.size());
|
|
|
-
|
|
|
- //查询职位档案
|
|
|
- logger.info("开始查询职位档案,员工数量: {}", personIds.size());
|
|
|
- QFilter personPosFileFilter = new QFilter(PositionStructureConstant.NCKD_DISABLE, QCP.equals, EnableEnum.NO.getCode())
|
|
|
- .and(PositionStructureConstant.NCKD_TYPESTATE, QCP.in, new String[]{TypeStateEnum.NEW_ENTRY.getCode(),TypeStateEnum.IN_SERVICE_LEVEL.getCode(),TypeStateEnum.ANNUAL_ADJUSTMENT.getCode(),TypeStateEnum.POSITION_TRANSFER.getCode()})
|
|
|
- .and(String.join(".", FormConstant.NCKD_PERSON, FormConstant.ID_KEY),QCP.in,personIds);
|
|
|
- QueryFieldBuilder personPosFileFieldBuilder = QueryFieldBuilder.create()
|
|
|
- .addIdNumberName(PositionStructureConstant.NCKD_PERSON)
|
|
|
- .addIdNumberName(PositionStructureConstant.NCKD_JOBSEQHR)
|
|
|
- .addIdNumberNameWithExtras(new String[]{PositionStructureConstant.NCKD_JOBLEVELHR},FormConstant.JOBLEVELSEQ)
|
|
|
- .add(PositionStructureConstant.NCKD_BEGINDATE)
|
|
|
- .orderDesc(PositionStructureConstant.NCKD_BEGINDATE);
|
|
|
- DynamicObjectCollection personPosFileList = QueryServiceHelper.query(PositionStructureConstant.PERSONPOSFILE_ENTITYID, personPosFileFieldBuilder.buildSelect(), new QFilter[]{personPosFileFilter}, personPosFileFieldBuilder.buildOrder());
|
|
|
- logger.info("职位档案查询完成,查询结果数量: {}", personPosFileList.size());
|
|
|
- // 按人员分组,取最新一条记录
|
|
|
- Map<Long, DynamicObject> personPosLatestMap = personPosFileList.stream()
|
|
|
- .collect(Collectors.groupingBy(
|
|
|
- obj -> obj.getLong(String.join(".", FormConstant.NCKD_PERSON, FormConstant.ID_KEY)),
|
|
|
- Collectors.toList()
|
|
|
- ))
|
|
|
- .entrySet()
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(
|
|
|
- Map.Entry::getKey,
|
|
|
- entry -> entry.getValue().get(0) // 由于已按日期降序排列,取第一条即为最新
|
|
|
- ));
|
|
|
- logger.info("职位档案分组完成,分组后Map大小: {}", personPosLatestMap.size());
|
|
|
-
|
|
|
|
|
|
+ //TODO 职称/技能
|
|
|
|
|
|
//查询近3年考核结果
|
|
|
logger.info("开始查询近3年考核结果");
|
|
|
@@ -170,53 +127,6 @@ public class KeyBeHavEvalTask extends AbstractTask implements Plugin {
|
|
|
));
|
|
|
logger.info("考核结果分组完成,分组后Map大小: {}", perfManagerResultMap.size());
|
|
|
|
|
|
- //查询近3年科研创新积分
|
|
|
- logger.info("开始查询近3年科研创新积分");
|
|
|
- QFilter contribBillFilter = QFilterCommonHelper.getBillStatusFilter()
|
|
|
- .and(ContributionConstant.NCKD_YEAR,QCP.large_equals,beginDate)
|
|
|
- .and(ContributionConstant.NCKD_YEAR,QCP.less_equals, endDate)
|
|
|
- .and(String.join( ".",FormConstant.NCKD_ENTRYENTITY, ContributionConstant.NCKD_PERSON),QCP.in,personIds)
|
|
|
- .and(String.join( ".",ContributionConstant.NCKD_SCOREITEM, FormConstant.NUMBER_KEY),QCP.equals, ScoreItemEnum.RESEARCH_SCORE.getCode());
|
|
|
- QueryFieldBuilder scoreItemConfFieldBuilder = QueryFieldBuilder.create()
|
|
|
- .add(ContributionConstant.NCKD_YEAR)
|
|
|
- .addIdNumberName(ContributionConstant.NCKD_SCOREITEM)
|
|
|
- .addIdNumberName(ContributionConstant.NCKD_SCOREITEMSUB)
|
|
|
- .addIdNumberName(ContributionConstant.NCKD_SCOREITEMSUB, ContributionConstant.NCKD_SCOREITEMLEVEL)
|
|
|
- .addIdNumberName(ContributionConstant.NCKD_SCOREITEMRANK) // 添加积分项目名次字段
|
|
|
- .addIdNumberName(FormConstant.NCKD_ENTRYENTITY, ContributionConstant.NCKD_PERSON);
|
|
|
- DynamicObjectCollection contribBillList = QueryServiceHelper.query(ContributionConstant.CONTRIBBILL_ENTITYID, scoreItemConfFieldBuilder.buildSelect(), new QFilter[]{contribBillFilter}, scoreItemConfFieldBuilder.buildOrder());
|
|
|
- logger.info("科研创新积分查询完成,查询结果数量: {}", contribBillList.size());
|
|
|
- Map<Long, List<DynamicObject>> contribMap = contribBillList.stream()
|
|
|
- .collect(Collectors.groupingBy(obj ->
|
|
|
- obj.getLong(String.join(".",FormConstant.NCKD_ENTRYENTITY, FormConstant.NCKD_PERSON, FormConstant.ID_KEY))
|
|
|
- ));
|
|
|
- logger.info("科研创新积分分组完成,分组后Map大小: {}", contribMap.size());
|
|
|
-
|
|
|
- //查询当前已聘任的高级人才
|
|
|
- logger.info("开始查询当前已聘任的高级人才");
|
|
|
- QFilter keyFilter = new QFilter(PositionStructureConstant.NCKD_DISABLE, QCP.equals, EnableEnum.NO.getCode())
|
|
|
- .and(PositionStructureConstant.NCKD_TYPESTATE,QCP.equals, TypeStateEnum.HIGH_PROFESSIONAL_EMPLOYMENT.getCode());
|
|
|
- QueryFieldBuilder keyFieldBuilder = QueryFieldBuilder.create()
|
|
|
- .addIdNumberName(PositionStructureConstant.NCKD_PERSON)
|
|
|
- .addIdNumberName(PositionStructureConstant.NCKD_JOBSEQHR)
|
|
|
- .addIdNumberNameWithExtras(new String[]{PositionStructureConstant.NCKD_JOBLEVELHR},FormConstant.JOBLEVELSEQ)
|
|
|
- .add(PositionStructureConstant.NCKD_BEGINDATE)
|
|
|
- .orderDesc(PositionStructureConstant.NCKD_BEGINDATE);
|
|
|
- DynamicObjectCollection keyList = QueryServiceHelper.query(PositionStructureConstant.PERSONPOSFILE_ENTITYID, keyFieldBuilder.buildSelect(), new QFilter[]{keyFilter}, keyFieldBuilder.buildOrder());
|
|
|
- logger.info("高级人才查询完成,查询结果数量: {}", keyList.size());
|
|
|
- // 按人员分组,取最新一条记录
|
|
|
- Map<Long, DynamicObject> keyListLatestMap = keyList.stream()
|
|
|
- .collect(Collectors.groupingBy(
|
|
|
- obj -> obj.getLong(String.join(".", FormConstant.NCKD_PERSON, FormConstant.ID_KEY)),
|
|
|
- Collectors.toList()
|
|
|
- ))
|
|
|
- .entrySet()
|
|
|
- .stream()
|
|
|
- .collect(Collectors.toMap(
|
|
|
- Map.Entry::getKey,
|
|
|
- entry -> entry.getValue().get(0) // 由于已按日期降序排列,取第一条即为最新
|
|
|
- ));
|
|
|
- logger.info("高级人才分组完成,分组后Map大小: {}", keyListLatestMap.size());
|
|
|
|
|
|
//开始
|
|
|
logger.info("开始处理员工数据,总员工数: {}", empPosOrgRelMap.size());
|
|
|
@@ -225,39 +135,20 @@ public class KeyBeHavEvalTask extends AbstractTask implements Plugin {
|
|
|
for (DynamicObject person : empPosOrgRelMap.values()) {
|
|
|
long personId = person.getLong(String.join(".", FormConstant.EMPLOYEE_KEY, FormConstant.ID_KEY));
|
|
|
logger.debug("处理员工ID: {}", personId);
|
|
|
- DynamicObject personPosFile = personPosLatestMap.get(personId);
|
|
|
int jobLevelSeq = -2;
|
|
|
String jobSeqNumber = null;
|
|
|
DynamicObject jobSeqObj = null;
|
|
|
- if(personPosFile == null){
|
|
|
- continue;
|
|
|
- /*DynamicObject position = person.getDynamicObject(FormConstant.POSITION_KEY);
|
|
|
- if(position != null) {
|
|
|
- jobSeqObj = position.getDynamicObject(FormConstant.NCKD_JOBSEQ);
|
|
|
- if(jobSeqObj != null) {
|
|
|
- jobSeqNumber = jobSeqObj.getString(FormConstant.NUMBER_KEY);
|
|
|
- }
|
|
|
- }*/
|
|
|
- }else{
|
|
|
- jobLevelSeq = personPosFile.getInt(String.join(".", PositionStructureConstant.NCKD_JOBLEVELHR, FormConstant.JOBLEVELSEQ));
|
|
|
- jobSeqNumber = personPosFile.getString(String.join(".", PositionStructureConstant.NCKD_JOBSEQHR, FormConstant.NUMBER_KEY));
|
|
|
- long jobSeqId = personPosFile.getLong(String.join(".", PositionStructureConstant.NCKD_JOBSEQHR, FormConstant.ID_KEY));
|
|
|
- jobSeqObj = EntityHelper.newEntity(FormConstant.HBJM_JOBSEQHR,jobSeqId);
|
|
|
+ DynamicObject position = person.getDynamicObject(FormConstant.POSITION_KEY);
|
|
|
+ if(position != null) {
|
|
|
+ jobSeqObj = position.getDynamicObject(FormConstant.NCKD_JOBSEQ);
|
|
|
+ if(jobSeqObj != null) {
|
|
|
+ jobSeqNumber = jobSeqObj.getString(FormConstant.NUMBER_KEY);
|
|
|
+ }
|
|
|
}
|
|
|
if(StringUtils.isBlank(jobSeqNumber)){
|
|
|
logger.debug("员工ID {} 的职位序列号为空,跳过处理", personId);
|
|
|
continue;
|
|
|
}
|
|
|
- DynamicObject perSerLe = perSerLenMap.get(personId);
|
|
|
- BigDecimal socialWorkAge = perSerLe != null ? perSerLe.getBigDecimal(FormConstant.SOCIALWORKAGE) : BigDecimal.ZERO;
|
|
|
- DynamicObject keyDynObj = keyListLatestMap.get(personId);
|
|
|
- //当前高级人才聘任的职级
|
|
|
- int keyJobLevelSeq = 0;
|
|
|
- if(keyDynObj != null){
|
|
|
- keyJobLevelSeq = keyDynObj.getInt(String.join(".", PositionStructureConstant.NCKD_JOBLEVELHR, FormConstant.JOBLEVELSEQ));
|
|
|
- }
|
|
|
- logger.debug("员工ID: {}, 职位序列号: {}, 当前职级: {}, 工龄: {}, 高级人才职级: {}",
|
|
|
- personId, jobSeqNumber, jobLevelSeq, socialWorkAge, keyJobLevelSeq);
|
|
|
|
|
|
List<DynamicObject> perfManagerResult = perfManagerResultMap.get(personId);
|
|
|
logger.debug("员工ID {} 查询到考核结果数量: {}", personId, perfManagerResult != null ? perfManagerResult.size() : 0);
|
|
|
@@ -295,9 +186,6 @@ public class KeyBeHavEvalTask extends AbstractTask implements Plugin {
|
|
|
currentYear - 3, appraisalResultYearName3);
|
|
|
}
|
|
|
|
|
|
- //科研、创新、创效成果
|
|
|
- List<DynamicObject> contribList = contribMap.get(personId);
|
|
|
- logger.debug("员工ID {} 查询到科研创新成果数量: {}", personId, contribList != null ? contribList.size() : 0);
|
|
|
|
|
|
List<Integer> jobLevelList = jobSeqJobLevelMap.get(jobSeqNumber);
|
|
|
if(jobLevelList == null){
|
|
|
@@ -309,110 +197,56 @@ public class KeyBeHavEvalTask extends AbstractTask implements Plugin {
|
|
|
logger.debug("员工ID {} 职位序列: {}, 处理职级列表: {}", personId, jobSeq.getName(), jobLevelList);
|
|
|
for (Integer jobLevel : jobLevelList) {
|
|
|
logger.debug("处理员工ID {} 的职级: {}", personId, jobLevel);
|
|
|
- boolean isInnovation = false;
|
|
|
boolean isAppraisalResult = false;
|
|
|
- boolean isWorkYear= false;
|
|
|
+ boolean isAppoint = false;
|
|
|
if(jobSeq == JobSeqEnum.TECHNICALS){
|
|
|
//技术
|
|
|
if(jobLevel == 13){
|
|
|
- logger.debug("员工ID {} 技术序列13级条件判断", personId);
|
|
|
- isInnovation = hasFactoryTechInnovationThirdPrizeOrAbove(contribList);
|
|
|
- logger.debug("员工ID {} 技术序列13级创新条件判断结果: {}", personId, isInnovation);
|
|
|
// 判断近3年绩效定格均在合格及以上
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAbove(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 技术序列13级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
|
|
|
- //工作年限≥10 年,任前职级7至12级
|
|
|
- isWorkYear = socialWorkAge.compareTo(new BigDecimal(10)) >= 0 && jobLevelSeq > 7;
|
|
|
- logger.debug("员工ID {} 技术序列13级工作年限条件判断结果: {}, 工龄: {}, 当前职级: {}", personId, isWorkYear, socialWorkAge, jobLevelSeq);
|
|
|
|
|
|
}else if(jobLevel == 14){
|
|
|
- logger.debug("员工ID {} 技术序列14级条件判断", personId);
|
|
|
- isInnovation = hasFactoryTechSecondAndCompanyTechThird(contribList);
|
|
|
- logger.debug("员工ID {} 技术序列14级创新条件判断结果: {}", personId, isInnovation);
|
|
|
-
|
|
|
// 判断近3年绩效定格均在合格及以上,且至少有一次优秀
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAboveWithExcellent(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 技术序列14级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
- //在13职级工作不少于一个聘期
|
|
|
- isWorkYear = keyJobLevelSeq >= 13;
|
|
|
- logger.debug("员工ID {} 技术序列14级工作年限条件判断结果: {}, 高级人才职级: {}", personId, isWorkYear, keyJobLevelSeq);
|
|
|
}else if(jobLevel == 15){
|
|
|
logger.debug("员工ID {} 技术序列15级条件判断", personId);
|
|
|
- isInnovation = hasCompanyTechSecondAndProvinceTechThird(contribList);
|
|
|
- logger.debug("员工ID {} 技术序列15级创新条件判断结果: {}", personId, isInnovation);
|
|
|
- // 判断近3年绩效定格均在合格及以上,且至少有一次优秀
|
|
|
+
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAboveWithExcellent(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 技术序列15级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
- //工作年限≥15年,在14职级工作不少于一个聘期
|
|
|
- isWorkYear = socialWorkAge.compareTo(new BigDecimal(15)) >= 0 && keyJobLevelSeq >= 14;
|
|
|
- logger.debug("员工ID {} 技术序列15级工作年限条件判断结果: {}, 工龄: {}, 高级人才职级: {}", personId, isWorkYear, socialWorkAge, keyJobLevelSeq);
|
|
|
+
|
|
|
}
|
|
|
}else if(jobSeq == JobSeqEnum.FUNCTIONAL){
|
|
|
//职能序列
|
|
|
if(jobLevel == 13){
|
|
|
- logger.debug("员工ID {} 职能序列13级条件判断", personId);
|
|
|
- isInnovation = hasCompanyManagementInnovationThird(contribList);
|
|
|
- logger.debug("员工ID {} 职能序列13级创新条件判断结果: {}", personId, isInnovation);
|
|
|
// 判断近3年绩效定格均在合格及以上
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAbove(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 职能序列13级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
- //工作年限≥10 年,任前职级7至12级
|
|
|
- isWorkYear = socialWorkAge.compareTo(new BigDecimal(10)) >= 0 && jobLevelSeq > 7;
|
|
|
- logger.debug("员工ID {} 职能序列13级工作年限条件判断结果: {}, 工龄: {}, 当前职级: {}", personId, isWorkYear, socialWorkAge, jobLevelSeq);
|
|
|
}else if(jobLevel == 14){
|
|
|
- logger.debug("员工ID {} 职能序列14级条件判断", personId);
|
|
|
- isInnovation = hasCompanyManagementInnovationSecond(contribList);
|
|
|
- logger.debug("员工ID {} 职能序列14级创新条件判断结果: {}", personId, isInnovation);
|
|
|
// 判断近3年绩效定格均在合格及以上,且至少有一次优秀
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAboveWithExcellent(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 职能序列14级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
- //在13职级工作不少于一个聘期
|
|
|
- isWorkYear = keyJobLevelSeq >= 13;
|
|
|
- logger.debug("员工ID {} 职能序列14级工作年限条件判断结果: {}, 高级人才职级: {}", personId, isWorkYear, keyJobLevelSeq);
|
|
|
}else if(jobLevel == 15){
|
|
|
- logger.debug("员工ID {} 职能序列15级条件判断", personId);
|
|
|
- isInnovation = hasCompanyManagementInnovationFirst(contribList);
|
|
|
- logger.debug("员工ID {} 职能序列15级创新条件判断结果: {}", personId, isInnovation);
|
|
|
// 判断近3年绩效定格均在合格及以上,且至少有一次优秀
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAboveWithExcellent(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 职能序列15级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
- //工作年限≥15年,在14职级工作不少于一个聘期
|
|
|
- isWorkYear = socialWorkAge.compareTo(new BigDecimal(15)) >= 0 && keyJobLevelSeq >= 14;
|
|
|
- logger.debug("员工ID {} 职能序列15级工作年限条件判断结果: {}, 工龄: {}, 高级人才职级: {}", personId, isWorkYear, socialWorkAge, keyJobLevelSeq);
|
|
|
}
|
|
|
}else if(jobSeq == JobSeqEnum.SKILL){
|
|
|
//技能序列
|
|
|
if(jobLevel == 12){
|
|
|
- logger.debug("员工ID {} 技能序列12级条件判断", personId);
|
|
|
- isInnovation = hasFactoryInnovationThird(contribList);
|
|
|
- logger.debug("员工ID {} 技能序列12级创新条件判断结果: {}", personId, isInnovation);
|
|
|
// 判断近3年绩效定格均在合格及以上
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAbove(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 技能序列12级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
- //工作年限≥10 年,任前职级7至11级
|
|
|
- isWorkYear = socialWorkAge.compareTo(new BigDecimal(10)) >= 0 && jobLevelSeq > 7;
|
|
|
- logger.debug("员工ID {} 技能序列12级工作年限条件判断结果: {}, 工龄: {}, 当前职级: {}", personId, isWorkYear, socialWorkAge, jobLevelSeq);
|
|
|
}else if(jobLevel == 13){
|
|
|
- logger.debug("员工ID {} 技能序列13级条件判断", personId);
|
|
|
- isInnovation = hasFactoryInnovationSecondAndCompanyTechThird(contribList);
|
|
|
- logger.debug("员工ID {} 技能序列13级创新条件判断结果: {}", personId, isInnovation);
|
|
|
// 判断近3年绩效定格均在合格及以上,且至少有一次优秀
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAboveWithExcellent(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 技能序列13级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
- //在12职级工作不少于一个聘期
|
|
|
- isWorkYear = keyJobLevelSeq >= 12;
|
|
|
- logger.debug("员工ID {} 技能序列13级工作年限条件判断结果: {}, 高级人才职级: {}", personId, isWorkYear, keyJobLevelSeq);
|
|
|
}else if(jobLevel == 14){
|
|
|
- logger.debug("员工ID {} 技能序列14级条件判断", personId);
|
|
|
- isInnovation = hasCompanyInnovationSecondAndProvinceTechThird(contribList);
|
|
|
- logger.debug("员工ID {} 技能序列14级创新条件判断结果: {}", personId, isInnovation);
|
|
|
// 判断近3年绩效定格均在合格及以上,且至少有一次优秀
|
|
|
isAppraisalResult = isAllAppraisalQualifyOrAboveWithExcellent(appraisalResultYear1, appraisalResultYear2, appraisalResultYear3);
|
|
|
logger.debug("员工ID {} 技能序列14级绩效条件判断结果: {}", personId, isAppraisalResult);
|
|
|
- //工作年限≥15年,在13职级工作不少于一个聘期
|
|
|
- isWorkYear = socialWorkAge.compareTo(new BigDecimal(15)) >= 0 && keyJobLevelSeq >= 13;
|
|
|
- logger.debug("员工ID {} 技能序列14级工作年限条件判断结果: {}, 工龄: {}, 高级人才职级: {}", personId, isWorkYear, socialWorkAge, keyJobLevelSeq);
|
|
|
}
|
|
|
}
|
|
|
String appraisalResultsDisplay = String.join("、",
|
|
|
@@ -420,30 +254,20 @@ public class KeyBeHavEvalTask extends AbstractTask implements Plugin {
|
|
|
appraisalResultYearName2 != null ? appraisalResultYearName2 : "无",
|
|
|
appraisalResultYearName3 != null ? appraisalResultYearName3 : "无");
|
|
|
StringJoiner matchCondDescJoin = new StringJoiner(StrFormatter.LINE_SEPARATOR);
|
|
|
- String contribString = getContribString(contribList);
|
|
|
- matchCondDescJoin.add(StrFormatter.format("职位序列:{},匹配职级:{},员工职位档案最新职级:{}",jobSeq.getName(),jobLevel,jobLevelSeq == -2 ? "无" : jobLevelSeq));
|
|
|
- matchCondDescJoin.add(StrFormatter.format("科研、创新、创效成果:【{}】,获奖情况:{}",(isInnovation ? "满足" : "不满足"),StringUtils.isBlank(contribString) ? "无" : contribString));
|
|
|
+ matchCondDescJoin.add(StrFormatter.format("职位序列:{}",jobSeq.getName()));
|
|
|
matchCondDescJoin.add(StrFormatter.format("绩效表现:【{}】,近三年考核结果:【{}】",(isAppraisalResult ? "满足" : "不满足"),appraisalResultsDisplay));
|
|
|
- matchCondDescJoin.add(StrFormatter.format("工作年限:【{}】,工龄:【{}】,员工职位档案最新职级:【{}】,高级人才聘任职级:【{}】",
|
|
|
- (isWorkYear ? "满足" : "不满足"),
|
|
|
- socialWorkAge != null ? socialWorkAge.setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO,
|
|
|
- jobLevelSeq == -2 ? "无" : jobLevelSeq,
|
|
|
- keyDynObj != null ? keyJobLevelSeq : "无"));
|
|
|
DynamicObject keyBeHavEval = EntityHelper.newEntity(PositionStructureConstant.KEYBEHAVEVAL_ENTITYID);
|
|
|
keyBeHavEval.set(FormConstant.NCKD_PERSON, person.getDynamicObject(FormConstant.EMPLOYEE_KEY));
|
|
|
keyBeHavEval.set(FormConstant.NCKD_DEP, person.getDynamicObject(FormConstant.ADMINORG));
|
|
|
keyBeHavEval.set(FormConstant.NCKD_POSITION_KEY, person.getDynamicObject(FormConstant.POSITION_KEY));
|
|
|
keyBeHavEval.set(FormConstant.NCKD_JOBSEQ, jobSeqObj);
|
|
|
keyBeHavEval.set(PositionStructureConstant.NCKD_JOBLEVEL, jobLevel);
|
|
|
- keyBeHavEval.set(PositionStructureConstant.NCKD_INNOVATE, isInnovation ? EnableEnum.YES.getCode() : EnableEnum.NO.getCode());
|
|
|
- keyBeHavEval.set(PositionStructureConstant.NCKD_WORKYEAR, isWorkYear ? EnableEnum.YES.getCode() : EnableEnum.NO.getCode());
|
|
|
+ keyBeHavEval.set(PositionStructureConstant.NCKD_APPOINT, isAppoint ? EnableEnum.YES.getCode() : EnableEnum.NO.getCode());
|
|
|
keyBeHavEval.set(PositionStructureConstant.NCKD_APPRAISALRESULT, isAppraisalResult ? EnableEnum.YES.getCode() : EnableEnum.NO.getCode());
|
|
|
keyBeHavEval.set(PositionStructureConstant.NCKD_MATCHCONDDESC+"_tag", matchCondDescJoin.toString());
|
|
|
keyBeHavEval.set(PositionStructureConstant.STATUS, StatusEnum.C.toString());
|
|
|
keyBeHavEval.set(PositionStructureConstant.ENABLE, EnableEnum.YES.getCode());
|
|
|
|
|
|
- logger.debug("员工ID {} 职级 {} 的评估结果: 创新条件={}, 绩效条件={}, 工作年限条件={}",
|
|
|
- personId, jobLevel, isInnovation, isAppraisalResult, isWorkYear);
|
|
|
saveKeyBeHavEval.add(keyBeHavEval);
|
|
|
processedCount++;
|
|
|
}
|