|
@@ -212,7 +212,7 @@ public class WorkHoursCalcService {
|
|
|
|
|
|
|
|
// 离职时间: workDay > offlineDate 直接跳过验证
|
|
// 离职时间: workDay > offlineDate 直接跳过验证
|
|
|
LocalDate offlineDate = parseToLocalDate(info.get(PERSONNEL_OFFLINE_DATE));
|
|
LocalDate offlineDate = parseToLocalDate(info.get(PERSONNEL_OFFLINE_DATE));
|
|
|
- if (offlineDate != null && workDay.isAfter(offlineDate)) {
|
|
|
|
|
|
|
+ if (isAfterOfflineDate(workDay, offlineDate)) {
|
|
|
result.put("success", false);
|
|
result.put("success", false);
|
|
|
result.put("error", "员工已离职(offlineDate=" + offlineDate + "), 按业务规则跳过写入");
|
|
result.put("error", "员工已离职(offlineDate=" + offlineDate + "), 按业务规则跳过写入");
|
|
|
return result;
|
|
return result;
|
|
@@ -789,6 +789,11 @@ public class WorkHoursCalcService {
|
|
|
return sa.equals(sb);
|
|
return sa.equals(sb);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /** 离职日当天保留,仅离职日之后的日期视为无效。 */
|
|
|
|
|
+ static boolean isAfterOfflineDate(LocalDate workDay, LocalDate offlineDate) {
|
|
|
|
|
+ return workDay != null && offlineDate != null && workDay.isAfter(offlineDate);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// ==================== 多线程并发写入 ====================
|
|
// ==================== 多线程并发写入 ====================
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -849,7 +854,7 @@ public class WorkHoursCalcService {
|
|
|
skippedExisting.incrementAndGet();
|
|
skippedExisting.incrementAndGet();
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
- if (offlineDate != null && workDay.isAfter(offlineDate)) {
|
|
|
|
|
|
|
+ if (isAfterOfflineDate(workDay, offlineDate)) {
|
|
|
skippedOffline.incrementAndGet();
|
|
skippedOffline.incrementAndGet();
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
@@ -1001,7 +1006,7 @@ public class WorkHoursCalcService {
|
|
|
LocalDate workDay = parseToLocalDate(formData.get("dateField_mmd8onl5"));
|
|
LocalDate workDay = parseToLocalDate(formData.get("dateField_mmd8onl5"));
|
|
|
// 离职日之后的历史工时全删 (与 concurrentUpsert 的 offline 过滤逻辑对齐);
|
|
// 离职日之后的历史工时全删 (与 concurrentUpsert 的 offline 过滤逻辑对齐);
|
|
|
// 离职日当天及之前保留 (员工在职期间工时有效, 不动)
|
|
// 离职日当天及之前保留 (员工在职期间工时有效, 不动)
|
|
|
- if (workDay != null && workDay.isAfter(offlineDate)) {
|
|
|
|
|
|
|
+ if (isAfterOfflineDate(workDay, offlineDate)) {
|
|
|
toDelete.add(String.valueOf(instId));
|
|
toDelete.add(String.valueOf(instId));
|
|
|
if (samples.size() < 5) {
|
|
if (samples.size() < 5) {
|
|
|
Map<String, Object> s = new LinkedHashMap<>();
|
|
Map<String, Object> s = new LinkedHashMap<>();
|