|
@@ -19,9 +19,10 @@ import kd.bos.entity.operate.result.IOperateInfo;
|
|
|
import kd.bos.entity.operate.result.OperationResult;
|
|
import kd.bos.entity.operate.result.OperationResult;
|
|
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
|
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
|
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
|
|
|
|
+import kd.bos.logging.Log;
|
|
|
|
|
+import kd.bos.logging.LogFactory;
|
|
|
import kd.bos.orm.query.QCP;
|
|
import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
import kd.bos.orm.query.QFilter;
|
|
|
-import kd.bos.servicehelper.QueryServiceHelper;
|
|
|
|
|
import kd.bos.servicehelper.basedata.BaseDataServiceHelper;
|
|
import kd.bos.servicehelper.basedata.BaseDataServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
|
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
|
|
import kd.hr.hbp.business.servicehelper.HRQueryEntityHelper;
|
|
import kd.hr.hbp.business.servicehelper.HRQueryEntityHelper;
|
|
@@ -62,10 +63,15 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
*/
|
|
|
public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
|
|
public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
|
|
|
|
|
|
|
|
|
|
+ private static final Log logger = LogFactory.getLog(CycleGenerateOpPlugin.class);
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
|
public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
|
|
|
|
+ logger.info("开始执行周期生成操作");
|
|
|
//获取待生成新周期人员
|
|
//获取待生成新周期人员
|
|
|
Map<Long, PerfManagerSaveOpPlugin.PersonPerfInfo> pendingCyclePersonnelMap = getPendingCyclePersonnel();
|
|
Map<Long, PerfManagerSaveOpPlugin.PersonPerfInfo> pendingCyclePersonnelMap = getPendingCyclePersonnel();
|
|
|
|
|
+ logger.info("获取到待生成新周期人员数量: {}", pendingCyclePersonnelMap.size());
|
|
|
|
|
+
|
|
|
List<Long> perfManagerId = pendingCyclePersonnelMap.values().stream()
|
|
List<Long> perfManagerId = pendingCyclePersonnelMap.values().stream()
|
|
|
.map(PerfManagerSaveOpPlugin.PersonPerfInfo::getId)
|
|
.map(PerfManagerSaveOpPlugin.PersonPerfInfo::getId)
|
|
|
.filter(Objects::nonNull)
|
|
.filter(Objects::nonNull)
|
|
@@ -115,7 +121,11 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
newPerfManager.set(FormConstant.NAME_KEY, StrFormatter.format("【{}】{}~{}的考核周期",personName,value.getBeginYear().getYear(),value.getEndYear().getYear()));
|
|
newPerfManager.set(FormConstant.NAME_KEY, StrFormatter.format("【{}】{}~{}的考核周期",personName,value.getBeginYear().getYear(),value.getEndYear().getYear()));
|
|
|
savePerfManager.add(newPerfManager);
|
|
savePerfManager.add(newPerfManager);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ logger.info("准备保存 {} 条新的绩效管理记录", savePerfManager.size());
|
|
|
|
|
+
|
|
|
if(savePerfManager.isEmpty()){
|
|
if(savePerfManager.isEmpty()){
|
|
|
|
|
+ logger.warn("生成周期完成,本次没有需要生成周期的人员");
|
|
|
this.operationResult.setShowMessage(true);
|
|
this.operationResult.setShowMessage(true);
|
|
|
this.operationResult.setSuccess(false);
|
|
this.operationResult.setSuccess(false);
|
|
|
this.operationResult.setMessage("生成周期完成,本次没有需要生成周期的人员");
|
|
this.operationResult.setMessage("生成周期完成,本次没有需要生成周期的人员");
|
|
@@ -124,6 +134,7 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
OperateOption option = OperateOption.create();
|
|
OperateOption option = OperateOption.create();
|
|
|
option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, Boolean.TRUE + "");
|
|
option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, Boolean.TRUE + "");
|
|
|
option.setVariableValue("cyclegenerate", Boolean.TRUE + "");
|
|
option.setVariableValue("cyclegenerate", Boolean.TRUE + "");
|
|
|
|
|
+ logger.info("开始执行保存操作,实体ID: {}", PerfManagerFormConstant.PERFMANAGER_ENTITYID);
|
|
|
OperationResult operationResult = OperationServiceHelper.executeOperate(FormConstant.SAVE_OP, PerfManagerFormConstant.PERFMANAGER_ENTITYID, savePerfManager.toArray(new DynamicObject[0]), option);
|
|
OperationResult operationResult = OperationServiceHelper.executeOperate(FormConstant.SAVE_OP, PerfManagerFormConstant.PERFMANAGER_ENTITYID, savePerfManager.toArray(new DynamicObject[0]), option);
|
|
|
|
|
|
|
|
if (!operationResult.isSuccess()) {
|
|
if (!operationResult.isSuccess()) {
|
|
@@ -131,6 +142,7 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
for (IOperateInfo error : operationResult.getAllErrorOrValidateInfo()) {
|
|
for (IOperateInfo error : operationResult.getAllErrorOrValidateInfo()) {
|
|
|
errorMsg.add(error.getMessage());
|
|
errorMsg.add(error.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
+ logger.error("周期生成失败,错误信息: {}", errorMsg.toString());
|
|
|
throw new ValidationException(errorMsg.toString());
|
|
throw new ValidationException(errorMsg.toString());
|
|
|
}else{
|
|
}else{
|
|
|
//周期生成成功,以下是本次周期生成的人员:
|
|
//周期生成成功,以下是本次周期生成的人员:
|
|
@@ -143,6 +155,7 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
String description = value.getDescription();
|
|
String description = value.getDescription();
|
|
|
msg.add(StrFormatter.format("{}、【{}】{}",index.getAndIncrement(),personName,value.getWhyEnd()));
|
|
msg.add(StrFormatter.format("{}、【{}】{}",index.getAndIncrement(),personName,value.getWhyEnd()));
|
|
|
}
|
|
}
|
|
|
|
|
+ logger.info("周期生成成功,生成了 {} 条记录", savePerfManager.size());
|
|
|
this.operationResult.setMessage(msg.toString());
|
|
this.operationResult.setMessage(msg.toString());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -159,6 +172,7 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
* @date: 2025/11/06 14:19
|
|
* @date: 2025/11/06 14:19
|
|
|
*/
|
|
*/
|
|
|
public static Map<Long, PerfManagerSaveOpPlugin.PersonPerfInfo> getPendingCyclePersonnel() {
|
|
public static Map<Long, PerfManagerSaveOpPlugin.PersonPerfInfo> getPendingCyclePersonnel() {
|
|
|
|
|
+ logger.info("开始获取待生成新周期人员");
|
|
|
LocalDateTime now = DateUtil.beginOfYear(DateUtil.now());
|
|
LocalDateTime now = DateUtil.beginOfYear(DateUtil.now());
|
|
|
// LocalDateTime lastDate = now;
|
|
// LocalDateTime lastDate = now;
|
|
|
LocalDateTime lastDate = DateUtil.minusYears(now, 1);
|
|
LocalDateTime lastDate = DateUtil.minusYears(now, 1);
|
|
@@ -169,15 +183,17 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
Map<Long, PerfManagerSaveOpPlugin.PersonPerfInfo> personPerfInfoMap = new HashMap<>();
|
|
Map<Long, PerfManagerSaveOpPlugin.PersonPerfInfo> personPerfInfoMap = new HashMap<>();
|
|
|
|
|
|
|
|
//查询岗位工资制单位
|
|
//查询岗位工资制单位
|
|
|
- DynamicObjectCollection postWageUnitList = QueryServiceHelper.query(PerfManagerFormConstant.POSTWAGEUNITLIST_ENTITYID, QueryFieldBuilder.create().addIdNumberName(FormConstant.NCKD_ORG).buildSelect(), null);
|
|
|
|
|
- List<Long> postWageUnitIds = postWageUnitList.stream().map(postWageUnit -> postWageUnit.getLong(String.join(".", FormConstant.NCKD_ORG, FormConstant.ID_KEY))).collect(Collectors.toList());
|
|
|
|
|
|
|
+ /* DynamicObjectCollection postWageUnitList = QueryServiceHelper.query(PerfManagerFormConstant.POSTWAGEUNITLIST_ENTITYID, QueryFieldBuilder.create().addIdNumberName(FormConstant.NCKD_ORG).buildSelect(), null);
|
|
|
|
|
+ List<Long> postWageUnitIds = postWageUnitList.stream().map(postWageUnit -> postWageUnit.getLong(String.join(".", FormConstant.NCKD_ORG, FormConstant.ID_KEY))).collect(Collectors.toList());*/
|
|
|
// 在职并去年入职的人员
|
|
// 在职并去年入职的人员
|
|
|
QFilter newHireFilter = buildNewHireFilter(lastBegin, lastEnd);
|
|
QFilter newHireFilter = buildNewHireFilter(lastBegin, lastEnd);
|
|
|
- if(!postWageUnitIds.isEmpty()){
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /*if(!postWageUnitIds.isEmpty()){
|
|
|
newHireFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.COMPANY_KEY), QCP.in, postWageUnitIds);
|
|
newHireFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.COMPANY_KEY), QCP.in, postWageUnitIds);
|
|
|
}else{
|
|
}else{
|
|
|
return personPerfInfoMap;
|
|
return personPerfInfoMap;
|
|
|
- }
|
|
|
|
|
|
|
+ }*/
|
|
|
// 只处理权限范围内的人员
|
|
// 只处理权限范围内的人员
|
|
|
AuthorizedOrgResultWithSub userAdminOrgWithSub = HRPermissionServiceHelper.getUserAdminOrgsWithSub(
|
|
AuthorizedOrgResultWithSub userAdminOrgWithSub = HRPermissionServiceHelper.getUserAdminOrgsWithSub(
|
|
|
currUserId, "nckd_pm", PerfManagerFormConstant.PERFMANAGER_ENTITYID,
|
|
currUserId, "nckd_pm", PerfManagerFormConstant.PERFMANAGER_ENTITYID,
|
|
@@ -193,7 +209,6 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
|
|
|
|
|
// 构建考核周期查询条件
|
|
// 构建考核周期查询条件
|
|
|
QFilter perfManagerFilter = buildPerfManagerFilter(userAdminOrgWithSub);
|
|
QFilter perfManagerFilter = buildPerfManagerFilter(userAdminOrgWithSub);
|
|
|
- perfManagerFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.COMPANY_KEY), QCP.in, postWageUnitIds);
|
|
|
|
|
QueryFieldBuilder perfManagerQueryFieldBuilder = buildPerfManagerQueryFieldBuilder();
|
|
QueryFieldBuilder perfManagerQueryFieldBuilder = buildPerfManagerQueryFieldBuilder();
|
|
|
QueryEntityType perfManagerQueryEntityType = (QueryEntityType) EntityMetadataCache.getDataEntityTypeNoCache("nckd_perfmanager_query");
|
|
QueryEntityType perfManagerQueryEntityType = (QueryEntityType) EntityMetadataCache.getDataEntityTypeNoCache("nckd_perfmanager_query");
|
|
|
|
|
|
|
@@ -209,20 +224,30 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
collectPersonIds(personIds, perfManagerQueryDataSet.copy());
|
|
collectPersonIds(personIds, perfManagerQueryDataSet.copy());
|
|
|
|
|
|
|
|
// 1、去年入职人员生成周期
|
|
// 1、去年入职人员生成周期
|
|
|
|
|
+ logger.info("开始处理去年入职人员生成周期");
|
|
|
generateCycleForNewHires(personPerfInfoMap, newHirePersonList, personIds, now);
|
|
generateCycleForNewHires(personPerfInfoMap, newHirePersonList, personIds, now);
|
|
|
|
|
+ logger.info("去年入职人员生成周期处理完成,当前待处理人员数: {}", personPerfInfoMap.size());
|
|
|
|
|
|
|
|
// 2、上年度绩效结果不合格或基本合格的人员,并且当前周期是最新的
|
|
// 2、上年度绩效结果不合格或基本合格的人员,并且当前周期是最新的
|
|
|
|
|
+ logger.info("开始处理上年度绩效结果不合格或基本合格的人员");
|
|
|
handleUnqualifiedLastYearResults(personPerfInfoMap, perfManagerQueryDataSet.copy(),
|
|
handleUnqualifiedLastYearResults(personPerfInfoMap, perfManagerQueryDataSet.copy(),
|
|
|
perfManagerQueryFieldBuilder, lastBegin, now);
|
|
perfManagerQueryFieldBuilder, lastBegin, now);
|
|
|
|
|
+ logger.info("上年度绩效结果不合格或基本合格的人员处理完成,当前待处理人员数: {}", personPerfInfoMap.size());
|
|
|
|
|
|
|
|
// 3、上年度无绩效结果(周期开始及结束年份含上年)
|
|
// 3、上年度无绩效结果(周期开始及结束年份含上年)
|
|
|
|
|
+ logger.info("开始处理上年度无绩效结果的人员");
|
|
|
handleMissingLastYearResults(personPerfInfoMap, perfManagerQueryDataSet.copy(),
|
|
handleMissingLastYearResults(personPerfInfoMap, perfManagerQueryDataSet.copy(),
|
|
|
perfManagerQueryFieldBuilder, lastBegin, now);
|
|
perfManagerQueryFieldBuilder, lastBegin, now);
|
|
|
|
|
+ logger.info("上年度无绩效结果的人员处理完成,当前待处理人员数: {}", personPerfInfoMap.size());
|
|
|
|
|
|
|
|
// 4、三年考评周期结束(周期结束年份为去年,不管有没有结果)
|
|
// 4、三年考评周期结束(周期结束年份为去年,不管有没有结果)
|
|
|
|
|
+ logger.info("开始处理三年考评周期结束的人员");
|
|
|
handleEndedThreeYearCycles(personPerfInfoMap, perfManagerQueryDataSet.copy(),
|
|
handleEndedThreeYearCycles(personPerfInfoMap, perfManagerQueryDataSet.copy(),
|
|
|
perfManagerQueryFieldBuilder, lastBegin, now);
|
|
perfManagerQueryFieldBuilder, lastBegin, now);
|
|
|
|
|
+ logger.info("三年考评周期结束的人员处理完成,最终待处理人员数: {}", personPerfInfoMap.size());
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ logger.info("获取待生成新周期人员完成,共 {} 人", personPerfInfoMap.size());
|
|
|
return personPerfInfoMap;
|
|
return personPerfInfoMap;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -233,7 +258,10 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
return new QFilter(String.join(".", FormConstant.HRPI_EMPENTREL, FormConstant.ENTRYDATE), QCP.large_equals, lastBegin)
|
|
return new QFilter(String.join(".", FormConstant.HRPI_EMPENTREL, FormConstant.ENTRYDATE), QCP.large_equals, lastBegin)
|
|
|
.and(String.join(".", FormConstant.HRPI_EMPENTREL, FormConstant.ENTRYDATE), QCP.less_equals, lastEnd)
|
|
.and(String.join(".", FormConstant.HRPI_EMPENTREL, FormConstant.ENTRYDATE), QCP.less_equals, lastEnd)
|
|
|
.and(String.join(".", FormConstant.HRPI_EMPENTREL, FormConstant.LABOR_REL_STATUS, FormConstant.IS_HIRED),
|
|
.and(String.join(".", FormConstant.HRPI_EMPENTREL, FormConstant.LABOR_REL_STATUS, FormConstant.IS_HIRED),
|
|
|
- QCP.equals, EnableEnum.YES.getCode());
|
|
|
|
|
|
|
+ QCP.equals, EnableEnum.YES.getCode())
|
|
|
|
|
+ //岗位绩效工资制
|
|
|
|
|
+ .and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.POSITION_KEY,FormConstant.NCKD_PAYSTDPLAN, FormConstant.NUMBER_KEY),QCP.equals,FormConstant.POST_PERF_WAGE_SYS);
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -267,6 +295,8 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
perfManagerFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.ADMINORG), QCP.in, orgIds);
|
|
perfManagerFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.ADMINORG), QCP.in, orgIds);
|
|
|
}
|
|
}
|
|
|
perfManagerFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.IS_SEQLATESTRECORD), QCP.equals,EnableEnum.YES.getCode());
|
|
perfManagerFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.IS_SEQLATESTRECORD), QCP.equals,EnableEnum.YES.getCode());
|
|
|
|
|
+ //岗位绩效工资制
|
|
|
|
|
+ perfManagerFilter.and(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.POSITION_KEY,FormConstant.NCKD_PAYSTDPLAN, FormConstant.NUMBER_KEY),QCP.equals,FormConstant.POST_PERF_WAGE_SYS);
|
|
|
return perfManagerFilter;
|
|
return perfManagerFilter;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -304,6 +334,7 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
DynamicObjectCollection newHirePersonList,
|
|
DynamicObjectCollection newHirePersonList,
|
|
|
Set<Long> personIds,
|
|
Set<Long> personIds,
|
|
|
LocalDateTime now) {
|
|
LocalDateTime now) {
|
|
|
|
|
+ logger.debug("开始为新入职员工生成考核周期,新入职员工总数: {}", newHirePersonList.size());
|
|
|
for (DynamicObject person : newHirePersonList) {
|
|
for (DynamicObject person : newHirePersonList) {
|
|
|
long personId = person.getLong(String.join(".", FormConstant.HRPI_EMPLOYEE, FormConstant.ID_KEY));
|
|
long personId = person.getLong(String.join(".", FormConstant.HRPI_EMPLOYEE, FormConstant.ID_KEY));
|
|
|
long empPosOrgRelId = person.getLong(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.ID_KEY));
|
|
long empPosOrgRelId = person.getLong(String.join(".", FormConstant.HRPI_EMPPOSORGREL, FormConstant.ID_KEY));
|
|
@@ -324,8 +355,12 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
cyclePerson,empPosOrgRel,adminOrg, DateUtil.toDate(now), DateUtil.toDate(DateUtil.addYears(now, 2)), "周期生成(新入职)");
|
|
cyclePerson,empPosOrgRel,adminOrg, DateUtil.toDate(now), DateUtil.toDate(DateUtil.addYears(now, 2)), "周期生成(新入职)");
|
|
|
personPerfInfo.setWhyEnd("新入职员工");
|
|
personPerfInfo.setWhyEnd("新入职员工");
|
|
|
personPerfInfoMap.put(personId, personPerfInfo);
|
|
personPerfInfoMap.put(personId, personPerfInfo);
|
|
|
|
|
+ logger.debug("为新员工 {} 添加周期生成记录", personName);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ logger.debug("员工ID {} 已存在周期,跳过生成", personId);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ logger.debug("新入职员工考核周期生成完成,新增 {} 条记录", personPerfInfoMap.size());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -336,13 +371,15 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
QueryFieldBuilder perfManagerQueryFieldBuilder,
|
|
QueryFieldBuilder perfManagerQueryFieldBuilder,
|
|
|
LocalDateTime lastBegin,
|
|
LocalDateTime lastBegin,
|
|
|
LocalDateTime now) {
|
|
LocalDateTime now) {
|
|
|
|
|
+ logger.debug("开始处理上年度绩效不合格或基本合格的人员");
|
|
|
DataSet lastYearFailFilter = perfManagerQueryDataSet.copy().filter(
|
|
DataSet lastYearFailFilter = perfManagerQueryDataSet.copy().filter(
|
|
|
"perfmanagerentry.nckd_appraisalresult.number in ('" + AppraisalResultEnum.UN_QUALIFIED.getCode() + "','" +
|
|
"perfmanagerentry.nckd_appraisalresult.number in ('" + AppraisalResultEnum.UN_QUALIFIED.getCode() + "','" +
|
|
|
AppraisalResultEnum.BASICALLY_QUALIFIED.getCode() + "') " +
|
|
AppraisalResultEnum.BASICALLY_QUALIFIED.getCode() + "') " +
|
|
|
"and YEAR(perfmanagerentry.nckd_appraisalyear) = " + lastBegin.getYear() +
|
|
"and YEAR(perfmanagerentry.nckd_appraisalyear) = " + lastBegin.getYear() +
|
|
|
" and nckd_iscurrentnewest = true")
|
|
" and nckd_iscurrentnewest = true")
|
|
|
.select(perfManagerQueryFieldBuilder.buildSelect());
|
|
.select(perfManagerQueryFieldBuilder.buildSelect());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ int count = 0;
|
|
|
while (lastYearFailFilter.hasNext()) {
|
|
while (lastYearFailFilter.hasNext()) {
|
|
|
Row next = lastYearFailFilter.next();
|
|
Row next = lastYearFailFilter.next();
|
|
|
Long id = next.getLong(FormConstant.ID_KEY);
|
|
Long id = next.getLong(FormConstant.ID_KEY);
|
|
@@ -379,7 +416,10 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
personPerfInfoMap.put(personId, personPerfInfo);
|
|
personPerfInfoMap.put(personId, personPerfInfo);
|
|
|
|
|
+ count++;
|
|
|
|
|
+ logger.debug("添加上年度绩效不合格或基本合格人员: {} ({})", personName, appraisalResult);
|
|
|
}
|
|
}
|
|
|
|
|
+ logger.debug("上年度绩效不合格或基本合格人员处理完成,共处理 {} 条记录", count);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -390,6 +430,7 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
QueryFieldBuilder perfManagerQueryFieldBuilder,
|
|
QueryFieldBuilder perfManagerQueryFieldBuilder,
|
|
|
LocalDateTime lastBegin,
|
|
LocalDateTime lastBegin,
|
|
|
LocalDateTime now) {
|
|
LocalDateTime now) {
|
|
|
|
|
+ logger.debug("开始处理上年度无绩效结果的人员");
|
|
|
DataSet lastYearNoPerfFilter = perfManagerQueryDataSet.copy().filter(
|
|
DataSet lastYearNoPerfFilter = perfManagerQueryDataSet.copy().filter(
|
|
|
"YEAR(NCKD_BEGINYEAR) <= " + lastBegin.getYear() +
|
|
"YEAR(NCKD_BEGINYEAR) <= " + lastBegin.getYear() +
|
|
|
" AND YEAR(NCKD_ENDYEAR) >= " + lastBegin.getYear() +
|
|
" AND YEAR(NCKD_ENDYEAR) >= " + lastBegin.getYear() +
|
|
@@ -404,6 +445,7 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
Map<Long, Long> personIdAndEmpPosOrgRelMap = new HashMap<>();
|
|
Map<Long, Long> personIdAndEmpPosOrgRelMap = new HashMap<>();
|
|
|
Map<Long, Long> personIdAndAdminOrgMap = new HashMap<>();
|
|
Map<Long, Long> personIdAndAdminOrgMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
+ int filterCount = 0;
|
|
|
while (lastYearNoPerfFilter.hasNext()) {
|
|
while (lastYearNoPerfFilter.hasNext()) {
|
|
|
Row next = lastYearNoPerfFilter.next();
|
|
Row next = lastYearNoPerfFilter.next();
|
|
|
Long id = next.getLong(FormConstant.ID_KEY);
|
|
Long id = next.getLong(FormConstant.ID_KEY);
|
|
@@ -425,14 +467,17 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
personIdAndEndDateMap.put(personId, endYear);
|
|
personIdAndEndDateMap.put(personId, endYear);
|
|
|
personIdAndEmpPosOrgRelMap.put(personId, empPosOrgRelId);
|
|
personIdAndEmpPosOrgRelMap.put(personId, empPosOrgRelId);
|
|
|
personIdAndAdminOrgMap.put(personId, adminOrgId);
|
|
personIdAndAdminOrgMap.put(personId, adminOrgId);
|
|
|
|
|
+ filterCount++;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ logger.debug("筛选出 {} 条上年度绩效记录", filterCount);
|
|
|
|
|
|
|
|
// 找出上年度绩效记录为空或等于"无"的人员
|
|
// 找出上年度绩效记录为空或等于"无"的人员
|
|
|
List<Long> filteredPersonIds = personIdAndAppraisalYearMap.entrySet().stream()
|
|
List<Long> filteredPersonIds = personIdAndAppraisalYearMap.entrySet().stream()
|
|
|
.filter(entry -> AppraisalResultEnum.NONE.getCode().equals(entry.getValue()) || entry.getValue() == null)
|
|
.filter(entry -> AppraisalResultEnum.NONE.getCode().equals(entry.getValue()) || entry.getValue() == null)
|
|
|
.map(Map.Entry::getKey)
|
|
.map(Map.Entry::getKey)
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
|
|
+ logger.debug("筛选出 {} 条上年度无绩效结果的人员", filteredPersonIds.size());
|
|
|
|
|
|
|
|
for (Long filteredPersonId : filteredPersonIds) {
|
|
for (Long filteredPersonId : filteredPersonIds) {
|
|
|
String personName = personIdAndPersonNameMap.get(filteredPersonId);
|
|
String personName = personIdAndPersonNameMap.get(filteredPersonId);
|
|
@@ -456,7 +501,9 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
personPerfInfo.setActEndYear(actualEndYear);
|
|
personPerfInfo.setActEndYear(actualEndYear);
|
|
|
|
|
|
|
|
personPerfInfoMap.put(filteredPersonId, personPerfInfo);
|
|
personPerfInfoMap.put(filteredPersonId, personPerfInfo);
|
|
|
|
|
+ logger.debug("添加上年度无绩效结果人员: {}", personName);
|
|
|
}
|
|
}
|
|
|
|
|
+ logger.debug("上年度无绩效结果人员处理完成");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -467,10 +514,12 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
QueryFieldBuilder perfManagerQueryFieldBuilder,
|
|
QueryFieldBuilder perfManagerQueryFieldBuilder,
|
|
|
LocalDateTime lastBegin,
|
|
LocalDateTime lastBegin,
|
|
|
LocalDateTime now) {
|
|
LocalDateTime now) {
|
|
|
|
|
+ logger.debug("开始处理三年考评周期结束的人员");
|
|
|
DataSet yearEvalEndFilter = perfManagerQueryDataSet.copy().filter(
|
|
DataSet yearEvalEndFilter = perfManagerQueryDataSet.copy().filter(
|
|
|
"YEAR(nckd_endyear) = " + lastBegin.getYear() + " and nckd_iscurrentnewest = true ")
|
|
"YEAR(nckd_endyear) = " + lastBegin.getYear() + " and nckd_iscurrentnewest = true ")
|
|
|
.select(perfManagerQueryFieldBuilder.buildSelect());
|
|
.select(perfManagerQueryFieldBuilder.buildSelect());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ int processedCount = 0;
|
|
|
while (yearEvalEndFilter.hasNext()) {
|
|
while (yearEvalEndFilter.hasNext()) {
|
|
|
Row next = yearEvalEndFilter.next();
|
|
Row next = yearEvalEndFilter.next();
|
|
|
Long id = next.getLong(FormConstant.ID_KEY);
|
|
Long id = next.getLong(FormConstant.ID_KEY);
|
|
@@ -501,8 +550,13 @@ public class CycleGenerateOpPlugin extends AbstractOperationServicePlugIn implem
|
|
|
personPerfInfo.setActEndYear(actualEndYear);
|
|
personPerfInfo.setActEndYear(actualEndYear);
|
|
|
|
|
|
|
|
personPerfInfoMap.put(personId, personPerfInfo);
|
|
personPerfInfoMap.put(personId, personPerfInfo);
|
|
|
|
|
+ processedCount++;
|
|
|
|
|
+ logger.debug("添加三年考评周期结束人员: {}", personName);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ logger.debug("人员 {} 已在其他规则中处理,跳过", personName);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ logger.debug("三年考评周期结束人员处理完成,共处理 {} 条记录", processedCount);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|