Я работаю над приложением 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
Как обновить объекты способа оплаты с помощью подтвержденных данных счета в Spring Boot? ⇐ JAVA
Программисты JAVA общаются здесь
1716975107
Anonymous
Я работаю над приложением Spring Boot, в котором мне нужно обновить объекты способа оплаты (например, CardEntity, CashEntity) с подтвержденными данными счета-фактуры после его подтверждения. Вот упрощенная версия моей текущей настройки:
[b]CardEntity.java:[/b]
@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
}
[b]ConfirmInvoiceServiceImple.java[/b]:
@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);
}
}
[b]CardRepo.java:[/b]
@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();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78548587/how-to-update-payment-method-entities-with-confirmed-invoice-details-in-spring-b[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия