|
|
|
@ -64,6 +64,9 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic |
|
|
|
private static final String DEFAULT_PROCESS_CONFIG_BU = "*"; |
|
|
|
private static final String DELIVERY_PACKAGE_PROCESS_CODE = "deliveryPackage"; |
|
|
|
private static final String DELIVERY_PACKAGE_PROCESS_NAME = "Delivery&Package"; |
|
|
|
private static final String TRACKING_PROOFING_STATUS_IN_PROGRESS = "进行中"; |
|
|
|
private static final String TRACKING_PROOFING_STATUS_FINISHED = "打样完成"; |
|
|
|
private static final String NPI_PROOFING_STATUS_FINISHED = "完成"; |
|
|
|
private static final int NPI_ID_THRESHOLD = 100000; |
|
|
|
|
|
|
|
/** |
|
|
|
@ -931,6 +934,9 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic |
|
|
|
if (isCompletedStatus(status)) { |
|
|
|
Date completionDate = resolveDeliveryPackageCompletionDate(newValue, data.getActualDate(), trackingData.getActualityDeliveryDate()); |
|
|
|
markProofingCompletedAndSyncNpi(trackingData, completionDate, updateBy); |
|
|
|
} else { |
|
|
|
// 误点“已完成”时允许从 Delivery&Package 回退,避免整单长期锁死在打样完成态。 |
|
|
|
rollbackProofingCompletedAndSyncNpi(trackingData, updateBy); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1135,7 +1141,9 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic |
|
|
|
if (isBlank(normalizedStatus) || "未完成".equals(normalizedStatus) || "进行中".equals(normalizedStatus)) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
if ("已完成".equals(normalizedStatus) || "打样完成".equals(normalizedStatus) || "完成".equals(normalizedStatus)) { |
|
|
|
if ("已完成".equals(normalizedStatus) |
|
|
|
|| TRACKING_PROOFING_STATUS_FINISHED.equals(normalizedStatus) |
|
|
|
|| NPI_PROOFING_STATUS_FINISHED.equals(normalizedStatus)) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
return normalizedStatus.contains("完成") && !normalizedStatus.contains("未"); |
|
|
|
@ -1169,7 +1177,7 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic |
|
|
|
} |
|
|
|
int syncedRows = sampleTrackingMapper.updateNpiProofingStatusAndActualityDate( |
|
|
|
npiProofingId, |
|
|
|
"完成", |
|
|
|
NPI_PROOFING_STATUS_FINISHED, |
|
|
|
completionDate, |
|
|
|
updateBy |
|
|
|
); |
|
|
|
@ -1178,6 +1186,49 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void rollbackProofingCompletedAndSyncNpi(ProofTrackingData trackingData, |
|
|
|
String updateBy) { |
|
|
|
if (trackingData == null || trackingData.getTrackingId() == null) { |
|
|
|
throw new RuntimeException("跟踪记录不存在,无法撤回打样完成"); |
|
|
|
} |
|
|
|
if (!isTrackingProofingCompleted(trackingData.getProofingStatus())) { |
|
|
|
return; |
|
|
|
} |
|
|
|
int trackingUpdatedRows = sampleProofTrackingMapper.updateTrackingProofingStatusAndActualityDate( |
|
|
|
trackingData.getTrackingId(), |
|
|
|
TRACKING_PROOFING_STATUS_IN_PROGRESS, |
|
|
|
null, |
|
|
|
updateBy |
|
|
|
); |
|
|
|
if (trackingUpdatedRows <= 0) { |
|
|
|
throw new RuntimeException("撤回打样完成失败,跟踪记录不存在"); |
|
|
|
} |
|
|
|
Integer npiProofingId = resolveNpiProofingIdForAutoComplete(trackingData); |
|
|
|
if (npiProofingId == null) { |
|
|
|
// 历史未同步到 NPI 的记录允许仅回退 tracking,避免误点后无法恢复。 |
|
|
|
return; |
|
|
|
} |
|
|
|
int syncedRows = sampleTrackingMapper.updateNpiProofingStatusAndActualityDate( |
|
|
|
npiProofingId, |
|
|
|
TRACKING_PROOFING_STATUS_IN_PROGRESS, |
|
|
|
null, |
|
|
|
updateBy |
|
|
|
); |
|
|
|
if (syncedRows <= 0) { |
|
|
|
throw new RuntimeException("撤回NPI打样状态失败,请先确认NPI打样单是否存在"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private boolean isTrackingProofingCompleted(String proofingStatus) { |
|
|
|
if (isBlank(proofingStatus)) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
String normalizedStatus = proofingStatus.trim(); |
|
|
|
return TRACKING_PROOFING_STATUS_FINISHED.equals(normalizedStatus) |
|
|
|
|| "已完成".equals(normalizedStatus) |
|
|
|
|| NPI_PROOFING_STATUS_FINISHED.equals(normalizedStatus); |
|
|
|
} |
|
|
|
|
|
|
|
private Integer resolveNpiProofingIdForAutoComplete(ProofTrackingData trackingData) { |
|
|
|
if (trackingData == null) { |
|
|
|
return null; |
|
|
|
|