diff --git a/src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java b/src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java index 3ae88b00..49312dfc 100644 --- a/src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java @@ -459,16 +459,28 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic if (isTrackingProofingCompleted(rowData.getProofingStatus())) { return "Complete"; } - String requiredDeliveryDate = toDateString(rowData.getRequiredDeliveryDate()); - if (isBlank(requiredDeliveryDate)) { + String packageDate = resolveTrackingPackageDateForExport(rowData); + String baseline = toDateString(rowData.getBaseline()); + if (isBlank(packageDate) || isBlank(baseline)) { return ""; } - String today = toDateString(new Date()); - String statusPrefix = today.compareTo(requiredDeliveryDate) <= 0 ? "On schedule" : "Delay"; + // Delay 按 Delivery&Package 相对原计划判定:package 晚于 baseline 即延期, + // 不再用“今天 vs 预计完成日期”,避免计划已改期后仍显示 On schedule。 + String statusPrefix = packageDate.compareTo(baseline) > 0 ? "Delay" : "On schedule"; String pendingProcessLabel = getFirstPendingProcessLabelForExport(rowData, processColumns, selectedBuNo, buProcessConfigMap); return statusPrefix + "-" + pendingProcessLabel; } + private String resolveTrackingPackageDateForExport(ProofTrackingData rowData) { + String packageDate = toDateString(rowData == null ? null : rowData.getRequiredDeliveryDate()); + if (!isBlank(packageDate)) { + return packageDate; + } + // required_delivery_date 与 Delivery&Package 工序日期同一口径,主字段缺失时回退工序实际日期。 + ProofTrackingProcessValueData processValue = resolveProcessValueByCode(rowData, DELIVERY_PACKAGE_PROCESS_CODE); + return toDateString(processValue == null ? null : processValue.getActualDate()); + } + private String getFirstPendingProcessLabelForExport(ProofTrackingData rowData, List processColumns, String selectedBuNo,