Как обновить объекты способа оплаты с помощью подтвержденных данных счета в Spring Boot?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как обновить объекты способа оплаты с помощью подтвержденных данных счета в Spring Boot?

Сообщение Anonymous »

Я работаю над приложением Spring Boot, в котором мне нужно обновить объекты способа оплаты (например, CardEntity, CashEntity) с подтвержденными данными счета-фактуры после его подтверждения. Вот упрощенная версия моей текущей настройки:
CardEntity.java:
@Entity
@Table(name = "card_tbl")
public class CardEntity {
@Id
private Long cardRefNo;

private Double paidAmount;
private Date paidDate;

private Long paymentId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tempInvoiceId")
private TempInvoiceEntity tempInvoiceEntity;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "confirmInvoiceId")
private ConfirmInvoiceEntity confirmInvoiceEntity;

// Getters and Setters
}


ConfirmInvoiceServiceImple.java:
@Service
@RequiredArgsConstructor
public class ConfirmInvoiceServiceImple implements ConfirmInvoiceService {

private final TempInvoiceRepo tempInvoiceRepo;
private final ConfirmInvoiceRepo confirmInvoiceRepo;
private final ConfirmProductCartService confirmProductCartService;
private final PaymentsRepo paymentsRepo;
private final CardRepo cardRepo;
private final CashRepo cashRepo;
private final ChequeRepo chequeRepo;

@Override
@Transactional
public NonPaginatedResponse insertIntoConfirmInvoice(Long invoiceId) {
NonPaginatedResponse response = new NonPaginatedResponse();
try {
TempInvoiceEntity selectedTempInvoice = tempInvoiceRepo.findById(invoiceId).get();
ConfirmInvoiceEntity confirmedInvoice = createNewConfirmInvoiceData(selectedTempInvoice);
Boolean isCartItemsConfirmed = confirmProductCartService.confirmTheCartItems(invoiceId, confirmedInvoice);
if (isCartItemsConfirmed) {
List
selectAllPayments = paymentsRepo.findBySalesInvoice_TempInvoiceId(confirmedInvoice.getConfirmInvoiceId());
List listOfPayments = selectAllPayments.stream().map(
payment -> {
PaymentsEntity aPay = new PaymentsEntity();
aPay.setPaymentType(payment.getPaymentType());
aPay.setPaidDate(payment.getPaidDate());
aPay.setPaidAmount(payment.getPaidAmount());
aPay.setConfirmInvoice(confirmedInvoice);
aPay.setSalesInvoice(null);
alterPaymentMethConfirmInvoice(payment, confirmedInvoice);
return aPay;
}
).toList();
paymentsRepo.saveAll(listOfPayments);
tempInvoiceRepo.deleteById(confirmedInvoice.getConfirmInvoiceId());
}
response.setStatus(HttpStatus.ACCEPTED);
response.setSuccessMessage("Invoice has been confirmed.");
response.setResult(null);
} catch (Exception e) {
e.printStackTrace();
response.setErrors(Collections.singletonList("Couldn't confirm the selected invoice"));
response.setStatus(HttpStatus.BAD_GATEWAY);
}
return response;
}

public void alterPaymentMethConfirmInvoice(PaymentsEntity payment, ConfirmInvoiceEntity confirmedInvoice) {
if (payment.getPaymentType().equalsIgnoreCase("card")) {
List cardEntities = cardRepo.findByTempInvoiceEntity_TempInvoiceId(payment.getPaymentId());
for (CardEntity cardEntity : cardEntities) {
cardEntity.setConfirmInvoiceEntity(confirmedInvoice);
}
cardRepo.saveAll(cardEntities);
}
}

private ConfirmInvoiceEntity createNewConfirmInvoiceData(TempInvoiceEntity tempInvoiceEntity) {
ConfirmInvoiceEntity confirmInvoiceEntity = new ConfirmInvoiceEntity();
confirmInvoiceEntity.setConfirmInvoiceId(tempInvoiceEntity.getTempInvoiceId());
confirmInvoiceEntity.setInvoiceNumber(tempInvoiceEntity.getTempInvoiceNumber());
confirmInvoiceEntity.setDate(new Date());
confirmInvoiceEntity.setPaidAmount(tempInvoiceEntity.getPaidAmount());
confirmInvoiceEntity.setNetAmount(tempInvoiceEntity.getNetAmount());
confirmInvoiceEntity.setCustomer(tempInvoiceEntity.getCustomer());
return confirmInvoiceRepo.save(confirmInvoiceEntity);
}
}


CardRepo.java:
@Repository
public interface CardRepo extends JpaRepository {
List findByTempInvoiceEntity_TempInvoiceId(Long tempInvoiceId);
}


В методе alterPaymentMethConfirmInvoice я получаю экземпляры CardEntity, связанные с определенным TempInvoiceId, и обновляю их, добавляя в них данные ConfirmInvoiceEntity.
Хотя объект платежа будучи идеально настроенным с деталями submitInvoice, когда счет подтверждается, submitInvoice не устанавливается внутри функции alterPaymentMethConfirmInvoice. Что может быть причиной этой проблемы?
Я даже пытался передать все обновленные платежи в виде списка, а затем попытался получить данные «карты» и обновил подтвержденный счет с помощью alterPaymentMethConfirmInvoice(), но совсем не помогает.
@Override
@Transactional
public NonPaginatedResponse insertIntoConfirmInvoice(Long invoiceId) {
NonPaginatedResponse response = new NonPaginatedResponse();
try {
TempInvoiceEntity selectedTempInvoice = tempInvoiceRepo.findById(invoiceId).get();

ConfirmInvoiceEntity confirmedInvoice = createNewConfirmInvoiceData(selectedTempInvoice);
Boolean isCartItemsConfirmed = confirmProductCartService.confirmTheCartItems(invoiceId, confirmedInvoice);
if (isCartItemsConfirmed) {
List selectAllPayments = paymentsRepo.findBySalesInvoice_TempInvoiceId(confirmedInvoice.getConfirmInvoiceId());
alterPaymentMethConfirmInvoice(selectAllPayments, confirmedInvoice);
List listOfPayments = selectAllPayments.stream().map(
payment -> {
PaymentsEntity aPay = new PaymentsEntity();
aPay.setPaymentType(payment.getPaymentType());
aPay.setPaidDate(payment.getPaidDate());
aPay.setPaidAmount(payment.getPaidAmount());
aPay.setConfirmInvoice(confirmedInvoice);
aPay.setSalesInvoice(null);

return aPay;
}
).toList();
paymentsRepo.saveAll(listOfPayments);
tempInvoiceRepo.deleteById(confirmedInvoice.getConfirmInvoiceId());
}
response.setStatus(HttpStatus.ACCEPTED);
response.setSuccessMessage(ConfirmInvoiceConsonants.INVOICE_HAS_BEEN_CONFIRMED);
response.setResult(null);
} catch (Exception e) {
e.printStackTrace();
response.setErrors(Arrays.asList("Couldn't Confirm the selected invoice"));
response.setStatus(HttpStatus.BAD_GATEWAY);
}
return response;
}

public void alterPaymentMethConfirmInvoice(List selectAllPayments, ConfirmInvoiceEntity confirmedInvoice) {
selectAllPayments.stream().filter(
allPay->{
if (allPay.getPaymentType().equalsIgnoreCase("card")) {
List cardEntities = cardRepo.findByTempInvoiceEntity_TempInvoiceId(confirmedInvoice.getConfirmInvoiceId());
for (CardEntity cardEntity : cardEntities) {
cardEntity.setConfirmInvoiceEntity(confirmedInvoice);
}
cardRepo.saveAll(cardEntities);
}
return false;
}
).toList();

}



Подробнее здесь: https://stackoverflow.com/questions/785 ... n-spring-b
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»