forum.bitel.ru
http://forum.bitel.ru/

Не работает восстановление лимитов
http://forum.bitel.ru/viewtopic.php?f=19&t=11806
Страница 1 из 1

Автор:  oldb0y [ 21 июл 2016, 10:29 ]
Заголовок сообщения:  Не работает восстановление лимитов

Здравствуйте.

Не отрабатывает восстановление лимитов при выставлении лимита через API. Задача в планировщике стоит + запускал вручную. Далее код и изображение результата его выполнения.
Вложение:
Screenshot.png
Screenshot.png [ 8.58 КБ | Просмотров: 3686 ]

Код:
         CLMT = Math.abs( Double.parseDouble( closesumma ) );
         CLMT = CLMT + 2000000;
         CLMT = CLMT * -1;
         LMT = BigDecimal.valueOf( CLMT );

         LimitManager lm = new LimitManager(con);
         ServerContext context = ServerContext.get();

         List<LimitChangeTask> taskList = lm.getContractMoveTasks( CID );

         for (LimitChangeTask task : taskList) {
            lm.deleteMoveTaskAndLog(task.getId(), task.getContractId(), task.getUserId());
         }

         lm.updateContractLimit(User.USER_SERVER, LMT, CID, comment, String.valueOf( days ) );

         context.publishAfterCommit(new SystemLimitChangedEvent( CID, LMT ) );
         context.publishAfterCommit(new LimitChangedEvent( CID, LMT ) );

Автор:  oldb0y [ 21 июл 2016, 10:36 ]
Заголовок сообщения:  Re: Не работает восстановление лимитов

Блин! Вот этот метод удаляет задачу по воставлению лимита? (судя по названию)
Код:
lm.deleteMoveTaskAndLog(task.getId(), task.getContractId(), task.getUserId());

Автор:  oldb0y [ 22 июл 2016, 11:59 ]
Заголовок сообщения:  Re: Не работает восстановление лимитов

Изменил код
Код:
         LimitManager lm = new LimitManager(con);
         ServerContext context = ServerContext.get();

         List<LimitChangeTask> taskList = lm.getContractMoveTasks( CID );

         for (LimitChangeTask task : taskList) {

//            lm.deleteMoveTaskAndLog(task.getId(), task.getContractId(), task.getUserId());

            LimitChangeTask taskRestore=new LimitChangeTask();
            taskRestore.setContractId( CID );
            taskRestore.setDate( Calendar.getInstance() );
            taskRestore.setUserId( User.USER_SERVER );
            taskRestore.setSubSumm( task.getSubSumm() );

            lm.addMoveTask( taskRestore );

         }

         lm.updateContractLimit( User.USER_SERVER, LMT, CID, comment, String.valueOf( days ) );

         context.publishAfterCommit( new SystemLimitChangedEvent( CID, LMT ) );
         context.publishAfterCommit( new LimitChangedEvent( CID, LMT ) );


Но восстановление лимитов не происходит, что я упускаю?

Автор:  oldb0y [ 22 июл 2016, 14:32 ]
Заголовок сообщения:  Re: Не работает восстановление лимитов

Разобрался...

Но есть один вопрос, почему setSubSumm возвращает отрицательное значение?
Код:
   double SLMT = 2000000;
   ...
   task.setSubSumm( BigDecimal.valueOf( SLMT ) );


Результат выполнения: -2000000

Карл??

Автор:  barguzin2 [ 22 июл 2016, 19:20 ]
Заголовок сообщения:  Re: Не работает восстановление лимитов

Карл, потому что понижение лимита нужно отрицательным делать. А вообще, используй просто lm.lowLimit(cid, summ, days) + кидание событий и будет тебе щщастье. Оно и лимит понижает (правда без коммента, но сумму положительную ставить) и задачу на восстановление добавляет.

Автор:  oldb0y [ 25 июл 2016, 11:28 ]
Заголовок сообщения:  Re: Не работает восстановление лимитов

barguzin2
Спасибо.

В 90% лимит отрицательный, но может быть и положительным (разрабы сами не исключают эту возможность). Отсюда и удивление на возврат функции. Минус я и сам могу приделать, а вот угадывать возвращаемые значения не очень хорошо...

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/