|
|
@@ -285,54 +285,7 @@ public class PerfManagerSaveOpPlugin extends AbstractOperationServicePlugIn impl
|
|
|
if(StringUtils.isBlank(name)){
|
|
|
dataEntity.set(FormConstant.NAME_KEY, StrFormatter.format("【{}】{}~{}的考核周期",personName,beginYear.getYear(),endYear.getYear()));
|
|
|
}
|
|
|
- //上一周期标记为“已结束”并设置“实际结束时间” begin
|
|
|
- if(!isUpdate) {
|
|
|
- //找出当前周期前还未结束的考核周期
|
|
|
- QFilter filter = null;
|
|
|
- if (id > 0) {
|
|
|
- filter = new QFilter(FormConstant.ID_KEY, QCP.not_in, id);
|
|
|
- }
|
|
|
- DynamicObject[] beforeBeginYear = PerfManagerHelper.getBeforeBeginYear(DateUtil.toDate(beginYear), Collections.singletonList(personId), filter);
|
|
|
- if (beforeBeginYear != null && beforeBeginYear.length > 0) {
|
|
|
- DynamicObject[] allPerfManagerArray = PerfManagerHelper.getByPersonId(Collections.singletonList(personId), filter);
|
|
|
- List<DynamicObject> allPerfManagerList = new ArrayList<>(Arrays.asList(allPerfManagerArray));
|
|
|
- allPerfManagerList.add(dataEntity);
|
|
|
- for (DynamicObject lastPerfManager : beforeBeginYear) {
|
|
|
- lastPerfManager.set(PerfManagerFormConstant.NCKD_THESTATUS, "3");
|
|
|
- //找到当前周期的下一周期
|
|
|
- Date currentBeginYear = lastPerfManager.getDate(PerfManagerFormConstant.NCKD_BEGINYEAR);
|
|
|
- Date currentEndYear = lastPerfManager.getDate(PerfManagerFormConstant.NCKD_ENDYEAR);
|
|
|
|
|
|
- DynamicObject nextCycle = findNextCycle(allPerfManagerList, currentBeginYear);
|
|
|
- if (nextCycle != null) {
|
|
|
- // 获取下一周期的开始年份
|
|
|
- Date nextBeginYear = nextCycle.getDate(PerfManagerFormConstant.NCKD_BEGINYEAR);
|
|
|
- LocalDateTime nextBeginLocalDateTime = DateUtil.toLocalDateTime(nextBeginYear);
|
|
|
- // 计算预期的实际结束年份:下一周期开始时间-1年
|
|
|
- LocalDateTime expectedActEndYear = DateUtil.minusYears(nextBeginLocalDateTime, 1);
|
|
|
- LocalDateTime currentEndLocalDateTime = DateUtil.toLocalDateTime(currentEndYear);
|
|
|
- // 如果预期结束时间大于等于当前周期的结束时间,说明中间有断层
|
|
|
- // 则实际结束时间设置为当前周期的结束时间
|
|
|
- // 否则设置为预期的实际结束时间(下一周期开始时间-1年)
|
|
|
- LocalDateTime actEndYear = expectedActEndYear.isAfter(currentEndLocalDateTime) ?
|
|
|
- currentEndLocalDateTime : expectedActEndYear;
|
|
|
- lastPerfManager.set(PerfManagerFormConstant.NCKD_ACTENDYEAR, DateUtil.toDate(actEndYear));
|
|
|
- } else {
|
|
|
- // 如果没有找到下一周期,则实际结束时间设置为当前周期的结束时间
|
|
|
- lastPerfManager.set(PerfManagerFormConstant.NCKD_ACTENDYEAR, currentEndYear);
|
|
|
- }
|
|
|
- String str = isCycleGenerate ? "周期生成" : "手动/导入新增周期";
|
|
|
- lastPerfManager.set(PerfManagerFormConstant.NCKD_WHYEND, StrFormatter.format("{}({}~{}),系统自动结束前周期", str, beginYear.getYear(), endYear.getYear()));
|
|
|
- updatePerManager.add(lastPerfManager);
|
|
|
- }
|
|
|
- //找到当前周期的上一周期
|
|
|
- DynamicObject previousCycle = findPreviousCycle(allPerfManagerList, DateUtil.toDate(beginYear));
|
|
|
- if (previousCycle != null) {
|
|
|
- dataEntity.set(PerfManagerFormConstant.NCKD_LASTPERFMANAGER, previousCycle);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //上一周期标记为“已结束”并设置“实际结束时间” end
|
|
|
|
|
|
/*DynamicObject lastPerfManager = lastPerfManagerMap.get(personId);
|
|
|
if(lastPerfManager != null) {
|
|
|
@@ -415,10 +368,7 @@ public class PerfManagerSaveOpPlugin extends AbstractOperationServicePlugIn impl
|
|
|
}
|
|
|
//分录考核结果写入到表头 end
|
|
|
}
|
|
|
- if(!updatePerManager.isEmpty()) {
|
|
|
- DynamicObject[] lastPerfManagerArray = updatePerManager.toArray(new DynamicObject[0]);
|
|
|
- SaveServiceHelper.update(lastPerfManagerArray);
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -488,6 +438,74 @@ public class PerfManagerSaveOpPlugin extends AbstractOperationServicePlugIn impl
|
|
|
@Override
|
|
|
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
|
|
PerfManagerHelper.markAsCurrentNewest(personBeginYearMap.keySet(),null);
|
|
|
+
|
|
|
+ //上一周期标记为“已结束”并设置“实际结束时间” begin
|
|
|
+ Boolean isCycleGenerate = ConvertUtil.toBoolean(this.getOption().getVariableValue("cyclegenerate",StringUtils.EMPTY),Boolean.FALSE);
|
|
|
+ Boolean isUpdate = ConvertUtil.toBoolean(this.getOption().getVariableValue("isUpdate",StringUtils.EMPTY),Boolean.FALSE);
|
|
|
+ List<DynamicObject> updatePerManager = new ArrayList<>();
|
|
|
+ for (DynamicObject dataEntity : e.getDataEntities()) {
|
|
|
+ long id = dataEntity.getLong(FormConstant.ID_KEY);
|
|
|
+ DynamicObject person = dataEntity.getDynamicObject(FormConstant.NCKD_PERSON);
|
|
|
+ person = person == null ? dataEntity.getDynamicObject(FormConstant.NCKD_EMPPOSORGREL).getDynamicObject(FormConstant.EMPLOYEE_KEY) : person;
|
|
|
+ dataEntity.set(FormConstant.NCKD_PERSON, person);
|
|
|
+ LocalDateTime beginYear = DateUtil.toLocalDateTime(dataEntity.getDate(PerfManagerFormConstant.NCKD_BEGINYEAR));
|
|
|
+ LocalDateTime endYear = DateUtil.toLocalDateTime(dataEntity.getDate(PerfManagerFormConstant.NCKD_ENDYEAR));
|
|
|
+ long personId = person.getLong(FormConstant.ID_KEY);
|
|
|
+
|
|
|
+ if(!isUpdate) {
|
|
|
+ //找出当前周期前还未结束的考核周期
|
|
|
+ QFilter filter = null;
|
|
|
+ if (id > 0) {
|
|
|
+ filter = new QFilter(FormConstant.ID_KEY, QCP.not_in, id);
|
|
|
+ }
|
|
|
+ DynamicObject[] beforeBeginYear = PerfManagerHelper.getBeforeBeginYear(DateUtil.toDate(beginYear), Collections.singletonList(personId), filter);
|
|
|
+ if (beforeBeginYear != null && beforeBeginYear.length > 0) {
|
|
|
+ DynamicObject[] allPerfManagerArray = PerfManagerHelper.getByPersonId(Collections.singletonList(personId), filter);
|
|
|
+ List<DynamicObject> allPerfManagerList = new ArrayList<>(Arrays.asList(allPerfManagerArray));
|
|
|
+ allPerfManagerList.add(dataEntity);
|
|
|
+ for (DynamicObject lastPerfManager : beforeBeginYear) {
|
|
|
+ lastPerfManager.set(PerfManagerFormConstant.NCKD_THESTATUS, "3");
|
|
|
+ //找到当前周期的下一周期
|
|
|
+ Date currentBeginYear = lastPerfManager.getDate(PerfManagerFormConstant.NCKD_BEGINYEAR);
|
|
|
+ Date currentEndYear = lastPerfManager.getDate(PerfManagerFormConstant.NCKD_ENDYEAR);
|
|
|
+
|
|
|
+ DynamicObject nextCycle = findNextCycle(allPerfManagerList, currentBeginYear);
|
|
|
+ if (nextCycle != null) {
|
|
|
+ // 获取下一周期的开始年份
|
|
|
+ Date nextBeginYear = nextCycle.getDate(PerfManagerFormConstant.NCKD_BEGINYEAR);
|
|
|
+ LocalDateTime nextBeginLocalDateTime = DateUtil.toLocalDateTime(nextBeginYear);
|
|
|
+ // 计算预期的实际结束年份:下一周期开始时间-1年
|
|
|
+ LocalDateTime expectedActEndYear = DateUtil.minusYears(nextBeginLocalDateTime, 1);
|
|
|
+ LocalDateTime currentEndLocalDateTime = DateUtil.toLocalDateTime(currentEndYear);
|
|
|
+ // 如果预期结束时间大于等于当前周期的结束时间,说明中间有断层
|
|
|
+ // 则实际结束时间设置为当前周期的结束时间
|
|
|
+ // 否则设置为预期的实际结束时间(下一周期开始时间-1年)
|
|
|
+ LocalDateTime actEndYear = expectedActEndYear.isAfter(currentEndLocalDateTime) ?
|
|
|
+ currentEndLocalDateTime : expectedActEndYear;
|
|
|
+ lastPerfManager.set(PerfManagerFormConstant.NCKD_ACTENDYEAR, DateUtil.toDate(actEndYear));
|
|
|
+ } else {
|
|
|
+ // 如果没有找到下一周期,则实际结束时间设置为当前周期的结束时间
|
|
|
+ lastPerfManager.set(PerfManagerFormConstant.NCKD_ACTENDYEAR, currentEndYear);
|
|
|
+ }
|
|
|
+ String str = isCycleGenerate ? "周期生成" : "手动/导入新增周期";
|
|
|
+ lastPerfManager.set(PerfManagerFormConstant.NCKD_WHYEND, StrFormatter.format("{}({}~{}),系统自动结束前周期", str, beginYear.getYear(), endYear.getYear()));
|
|
|
+ updatePerManager.add(lastPerfManager);
|
|
|
+ }
|
|
|
+ //找到当前周期的上一周期
|
|
|
+ DynamicObject previousCycle = findPreviousCycle(allPerfManagerList, DateUtil.toDate(beginYear));
|
|
|
+ if (previousCycle != null) {
|
|
|
+ dataEntity.set(PerfManagerFormConstant.NCKD_LASTPERFMANAGER, previousCycle);
|
|
|
+ SaveServiceHelper.update(dataEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if(!updatePerManager.isEmpty()) {
|
|
|
+ DynamicObject[] lastPerfManagerArray = updatePerManager.toArray(new DynamicObject[0]);
|
|
|
+ SaveServiceHelper.update(lastPerfManagerArray);
|
|
|
+ }
|
|
|
+ //上一周期标记为“已结束”并设置“实际结束时间” end
|
|
|
}
|
|
|
|
|
|
private boolean showInteractionMessage(String confirMmsg) {
|