Как получить количество тикетов в определенном статусе?

Запросы на решение проблем

Модератор: ykolesnikov

Ответить
Styler
OTRS Новобранец
Сообщения: 7
Зарегистрирован: 11 дек 2012, 13:58

Как получить количество тикетов в определенном статусе?

Сообщение Styler » 11 июл 2013, 13:22

Добрый день коллеги.
Занимаюсь небольшой модернизацией OTRS и столкнулся с такой ситуацией.
В списке очередей присутствует информация о количестве тикетов в каждой из них - выводится при помощи $Counter{ $Queue{Queue} }
Это число включает в себя в том числе и тикеты, которые находятся в статусе "Ожидает автозакрытия" - то есть, фактически, уже отвеченные.

Пару раз столкнулся с ситуацией, когда начальство заходит в статистику, видит 100 тикетов в очереди и говорит - "айайай, плохо работаете :)" - хотя при этом из них 80 ожидают автозакрытия :) - то есть фактически, отвечены.

Подскажите пожалуйста, каким образом можно получить значение количества тикетов, находящихся в определенных статусах? Например, new или pending ?

Заранее огромное спасибо.

merkushov
OTRS Бывалый
Сообщения: 310
Зарегистрирован: 25 окт 2012, 15:06
Откуда: Воронеж
Поблагодарили: 2 раза

Re: Как получить количество тикетов в определенном статусе?

Сообщение merkushov » 11 июл 2013, 14:30

Переписать метод sub TicketAcceleratorIndex в файлах Kernel/System/Ticket/IndexAccelerator/RuntimeDB.pm и/или Kernel/System/Ticket/IndexAccelerator/StaticDB.pm
Меркушов Виктор, perl программист

Styler
OTRS Новобранец
Сообщения: 7
Зарегистрирован: 11 дек 2012, 13:58

Re: Как получить количество тикетов в определенном статусе?

Сообщение Styler » 11 июл 2013, 14:48

Виктор, спасибо за ответ.
Вы имеете ввиду изменить сам запрос?

Код: Выделить всё

SQL => 'UPDATE ticket_index SET'
                        . ' queue_id = ?, queue = ?, group_id = ?, s_lock = ?, s_state = ?'
                        . ' WHERE ticket_id = ?',
- указать тут статус явно?

Styler
OTRS Новобранец
Сообщения: 7
Зарегистрирован: 11 дек 2012, 13:58

Re: Как получить количество тикетов в определенном статусе?

Сообщение Styler » 11 июл 2013, 15:05

Хотя, судя по тому что делает этот запрос, я ошибаюсь :)

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Как получить количество тикетов в определенном статусе?

Сообщение alexus » 11 июл 2013, 15:33

Ticket::ViewableStateType Ticket -> Core::Ticket
или

Код: Выделить всё

my %Filters = (
        All => {
            Name   => 'All tickets',
            Prio   => 1000,
            Search => {
                StateIDs => \@ViewableStateIDs,
                QueueIDs => \@ViewableQueueIDs,
                %Sort,
                Permission => $Permission,
                UserID     => $Self->{UserID},
            },
        },
        Unlocked => {
            Name   => 'Available tickets',
            Prio   => 1001,
            Search => {
                LockIDs  => \@ViewableLockIDs,
                StateIDs => \@ViewableStateIDs,
                QueueIDs => \@ViewableQueueIDs,
                %Sort,
                Permission => $Permission,
                UserID     => $Self->{UserID},
            },
        },
    );
в модуле - AgentTicketQueue.pm поправьте StateIDs => \@ViewableStateIDs, и будете видеть только те статусы, которые надо. Посмотрите для аналогии фильтры в AgentTicketStatusView.pm. Там все прозрачно.
Решение Виктора слишком суровое и повлияет на всю систему.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

Styler
OTRS Новобранец
Сообщения: 7
Зарегистрирован: 11 дек 2012, 13:58

Re: Как получить количество тикетов в определенном статусе?

Сообщение Styler » 12 июл 2013, 15:21

Огромное спасибо - начало получаться :)
Делаю нечто подобное например, для вывода всех новых тикетов:

Код: Выделить всё

New => {
            Name   => 'New tickets',
            Prio   => 1002,
            Search => {
                LockIDs  => \@ViewableLockIDs,
                StateType => 'new',
                QueueIDs => \@ViewableQueueIDs,
                %Sort,
                Permission => $Permission,
                UserID     => $Self->{UserID},
            },
        },
По ходу продвижения возник вопрос - есть ли возможность отфильтровать все тикеты, заблокированные на определенного сотрудника?
Путем экспериментов нашел параметр OwnerIDs - при помощи которого используя поиск можно вывести все тикеты, заблокированные на определенного сотрудника в определенной очереди.

Вопрос в том, как это применить к фильтрам?

Ответить