fix: require dedicated appointment cancellation command
This commit is contained in:
+3
-2
@@ -95,14 +95,15 @@ public class InboundFbaAppointmentService {
|
||||
}
|
||||
@Transactional(isolation=org.springframework.transaction.annotation.Isolation.READ_COMMITTED)
|
||||
public FbaAppointmentResponse update(String operatorId,String appointmentNo,UpdateFbaAppointmentRequest request) {
|
||||
if ("CANCELLED".equals(status(request.details().appointmentStatus()))) throw bad("取消预约请使用取消操作并填写实际取消原因");
|
||||
return command("UPDATE:"+appointmentNo,operatorId,request.idempotencyKey(),request,()->{
|
||||
var appointment=find(appointmentNo,true);if(appointment==null) throw missing();
|
||||
if(!Objects.equals(appointment.getVersion(),request.version())) throw conflict("预约已更新,请重新读取后操作");
|
||||
if(queryMapper.countActiveDispatches(appointment.getId())>0) throw conflict("已关联有效排车,请先核对并处理运输安排后再改约");
|
||||
var current=items(appointment.getId());
|
||||
String status=status(request.details().appointmentStatus());
|
||||
if(Set.of("FAILED","CANCELLED").contains(status)) {
|
||||
if(clean(request.details().appointmentRemark())==null) throw bad("取消或未约成时请填写原因");
|
||||
if("FAILED".equals(status)) {
|
||||
if(clean(request.details().appointmentRemark())==null) throw bad("未约成时请填写原因");
|
||||
// Keep the last planned and confirmed times as historical facts.
|
||||
appointment.setAppointmentStatus(status);appointment.setAppointmentRemark(request.details().appointmentRemark().trim());
|
||||
current.forEach(item->{item.setActive(false);itemMapper.updateById(item);});
|
||||
|
||||
Reference in New Issue
Block a user