修复V4 Trace确认态字段刷新
This commit is contained in:
@@ -20,6 +20,7 @@ import cn.nianxx.thhotel.workflows.reservation.common.enums.ReservationV4Notific
|
||||
import cn.nianxx.thhotel.workflows.reservation.common.enums.ReservationV4OrderTaskStatus;
|
||||
import cn.nianxx.thhotel.workflows.reservation.common.enums.ReservationV4ReadonlyReasonCode;
|
||||
import cn.nianxx.thhotel.workflows.reservation.common.enums.ReservationV4WorkbenchItemType;
|
||||
import cn.nianxx.thhotel.workflows.reservation.common.enums.ReservationReviewStatus;
|
||||
import cn.nianxx.thhotel.workflows.reservation.common.request.ReservationV4OrderTaskQueryRequest;
|
||||
import cn.nianxx.thhotel.workflows.reservation.common.request.ReservationV4SourceNotificationQueryRequest;
|
||||
import cn.nianxx.thhotel.workflows.reservation.common.request.ReservationV4WorkbenchQueryRequest;
|
||||
@@ -426,6 +427,8 @@ public class ReservationV4QueryServiceImpl implements ReservationV4QueryService
|
||||
JsonNode reviewResolution = parseJson(card.reviewResolutionJson());
|
||||
JsonNode validationErrors = parseJson(card.validationErrorsJson());
|
||||
ReservationV4ActionAvailabilityResult availability = cardAvailability(card, orderAvailability, basicCard);
|
||||
JsonNode responseValidationErrors = validationErrorsForCardResponse(card, confirmedPayload, validationErrors);
|
||||
JsonNode fieldsPayload = fieldsPayloadForCard(card, displayPayload, confirmedPayload);
|
||||
return new ReservationV4TaskCardResult(
|
||||
card.id().toString(),
|
||||
card.cardType(),
|
||||
@@ -437,8 +440,8 @@ public class ReservationV4QueryServiceImpl implements ReservationV4QueryService
|
||||
displayPayload,
|
||||
confirmedPayload,
|
||||
reviewResolution,
|
||||
validationErrors,
|
||||
cardFields(card, displayPayload, validationErrors, availability),
|
||||
responseValidationErrors,
|
||||
cardFields(card, fieldsPayload, responseValidationErrors, availability),
|
||||
card.confirmedBy(),
|
||||
UtcTimeFormatter.toUtcOffsetDateTime(card.confirmedAt()),
|
||||
card.version(),
|
||||
@@ -447,6 +450,49 @@ public class ReservationV4QueryServiceImpl implements ReservationV4QueryService
|
||||
availability);
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择字段展示的数据源;Trace 确认后以用户确认快照为准,避免刷新时回到 AI 原始建议。
|
||||
*/
|
||||
private JsonNode fieldsPayloadForCard(
|
||||
ReservationV4TaskCardSnapshot card,
|
||||
JsonNode displayPayload,
|
||||
JsonNode confirmedPayload) {
|
||||
if (shouldUseTraceConfirmedPayload(card, confirmedPayload)) {
|
||||
return confirmedPayload;
|
||||
}
|
||||
return displayPayload;
|
||||
}
|
||||
|
||||
/**
|
||||
* 选择响应校验错误;Trace 确认或复核成功后旧入站错误已经被解消,前端不再展示。
|
||||
*/
|
||||
private JsonNode validationErrorsForCardResponse(
|
||||
ReservationV4TaskCardSnapshot card,
|
||||
JsonNode confirmedPayload,
|
||||
JsonNode validationErrors) {
|
||||
if (shouldUseTraceConfirmedPayload(card, confirmedPayload)) {
|
||||
return objectMapper.createArrayNode();
|
||||
}
|
||||
return validationErrors;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断 Trace 卡是否已经有可用于刷新字段展示的安全确认快照。
|
||||
*/
|
||||
private boolean shouldUseTraceConfirmedPayload(ReservationV4TaskCardSnapshot card, JsonNode confirmedPayload) {
|
||||
if (!ReservationV4CardType.TRACE_RESERVATION_NOTES.name().equals(card.cardType())) {
|
||||
return false;
|
||||
}
|
||||
if (confirmedPayload == null || confirmedPayload.isNull() || confirmedPayload.isMissingNode()) {
|
||||
return false;
|
||||
}
|
||||
if (!confirmedPayload.path("trace_items").isArray()) {
|
||||
return false;
|
||||
}
|
||||
return ReservationV4CardStatus.CONFIRMED.name().equals(card.cardStatus())
|
||||
|| ReservationReviewStatus.RESOLVED.name().equals(card.reviewStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成卡片安全展示 payload;Room Information 卡在这里补稳定业务展示模型。
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user