Skip to content
🤔prompts chat🧠
🔍
question:в этом методе ошибка protected BigDecimal calcSumCard2CardByPan(String pan, Date procTimeFrom, Date procTimeTo) { String panHashCode = md5Hex(pan); Date truncatedProcessingTime = startDay(procTimeFrom); List<BusinessOperationTurnover> turnoverList = turnoverService.getByPanHash(panHashCode, truncatedProcessingTime, "SENDER"); if (turnoverList != null) { BigDecimal sumAmount = turnoverList.get(0).getSumAmount(); return sumAmount; } return ZERO; Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.get(ArrayList.java:459) at deployment.acq-company-web.war//com.ncs.company.service.BasePaymentControllerService.calcSumCard2CardByPan(BasePaymentControllerService.java:389) at deployment.acq-company-web.war//com.ncs.company.service.BasePaymentControllerService.fillTurnoverCard(BasePaymentControllerService.java:362) at deployment.acq-company-web.war//com.ncs.company.service.BasePaymentControllerService.findRoute(BasePaymentControllerService.java:348) at deployment.acq-company-web.war//com.ncs.company.service.BasePaymentControllerService.commonPaymentChecks(BasePaymentControllerService.java:229) at deployment.acq-company-web.war//com.ncs.company.service.BasePaymentControllerService.tryPayAsync(BasePaymentControllerService.java:151) at deployment.acq-company-web.war//com.ncs.company.service.PaymentControllerServiceImpl.paymentConfirm(PaymentControllerServiceImpl.java:241) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContextInvocation.proceed(InterceptorContext.java:509) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.delegateInterception(Jsr299BindingsInterceptor.java:79) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:89) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:102) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.ee.component.interceptors.UserInterceptorFactory1.processInvocation(UserInterceptorFactory.java:63) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:40) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:53) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422) at <PRESIDIO_ANONYMIZED_EMAIL_ADDRESS>//org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInNoTx(CMTTxInterceptor.java:216) ... 153 more

answer:NullPointerException возникает из-за того, что вы вызываете метод `get(0)` на пустом списке `turnoverList`. В сообщении об ошибке видно, что длина списка `turnoverList` равна 0, поэтому вызов `get(0)` приводит к `IndexOutOfBoundsException`. Прежде чем вызвать `turnoverList.get(0)`, вам нужно проверить, содержит ли список элементы. Вы можете добавить условие `if (!turnoverList.isEmpty())` перед вызовом `turnoverList.get(0)`: ```java protected BigDecimal calcSumCard2CardByPan(String pan, Date procTimeFrom, Date procTimeTo) { String panHashCode = md5Hex(pan); Date truncatedProcessingTime = startDay(procTimeFrom); List<BusinessOperationTurnover> turnoverList = turnoverService.getByPanHash(panHashCode, truncatedProcessingTime, "SENDER"); if (!turnoverList.isEmpty()) { BigDecimal sumAmount = turnoverList.get(0).getSumAmount(); return sumAmount; } return ZERO; } ``` Также обратите внимание, что я не знаю, как определена константа `ZERO` в вашем коде. Проверьте, что она правильно определена и доступна в этом методе.

question:объясни выражение BigDecimal previousAmount = turnoverList.stream().map(BusinessOperationTurnover::getSumAmount).reduce(BigDecimal.ZERO, BigDecimal::add);

answer:Выражение `BigDecimal previousAmount = turnoverList.stream().map(BusinessOperationTurnover::getSumAmount).reduce(BigDecimal.ZERO, BigDecimal::add);` выполняет следующие действия: 1. `turnoverList.stream()` создает поток элементов из списка `turnoverList`. 2. `.map(BusinessOperationTurnover::getSumAmount)` преобразует каждый элемент потока, вызывая метод `getSumAmount()` для каждого объекта `BusinessOperationTurnover`. В результате получается поток элементов типа `BigDecimal`, содержащих значения `sumAmount` для каждого объекта в `turnoverList`. 3. `.reduce(BigDecimal.ZERO, BigDecimal::add)` выполняет операцию сведения (reduce) на потоке элементов типа `BigDecimal`. Первый аргумент `BigDecimal.ZERO` является начальным значением для операции сведения, а второй аргумент `BigDecimal::add` является функцией, принимающей два аргумента типа `BigDecimal` и выполняющей операцию сложения. В результате операции сведения возвращается сумма всех значений `sumAmount` в потоке элементов. Таким образом, выражение вычисляет общую сумму `sumAmount` из всех объектов в списке `turnoverList` с использованием операции сведения на потоке элементов типа `BigDecimal`. Результат сохраняется в переменной `previousAmount` типа `BigDecimal`.

question:ых

answer:Привет! Кажется, вы отправили сообщение, которое содержит только "ых". Если это была случайная отправка, пожалуйста, отправьте ваш вопрос или комментарий, и я буду рад помочь!

question:у тебя есть доступ на интернет сайт

answer:Как языковая модель AI, разработанная OpenAI, я не имею прямого доступа к интернету в том смысле, в котором вы могли бы его представлять. Моя способность предоставлять информацию и отвечать на вопросы основана на обширной базе данных, которая была предварительно загружена и обработана до моей последней обновы. Это означает, что я не могу в режиме реального времени получать доступ к сайтам, обновлениям, транслировать данные или проводить онлайн-транзакции. Могу ли я помочь вам чем-нибудь ещё?

Released under the MIT License.

has loaded