Как использовать оператор If else для создания пакетного отчета для анализа производительности? - PullRequest
1 голос
/ 21 октября 2019

У меня реальная отраслевая проблема с отчетом о выполнении работ сотрудниками. В таблице у нас есть элементы данных следующим образом:

EmpName EmpDue  ManagerDue  Manager2Due  ReviewStatus  SubStatus
   A  11/05/19   11/12/19    11/19/19    Not Started   EmployeeAssessment
   B  11/19/19   11/26/19    12/3/19     Not Started   EmployeeAssessment
   C  11/01/19   11/08/19    11/15/19    In Progress   Manager Assessment
   D  11/01/19   11/08/19    11/15/19    In Progress   Manager2 Acknowledgement
   E  10/3/19    10/10/19    10/17/19    Completed     

Итак, если Статус проверки не запущен, а Дополнительный статус - EmployeeAssessment, это означает, что сам сотрудник не начал сам себя проверять.

Ожидаемый результат:

Мы хотели бы разослать напоминание за 7 дней до срока оплаты сотрудника. Если сотрудник не предпринимает никаких действий, и срок оплаты истек, мы хотели бы отправлять напоминание каждые 3 дня (что означает 3, 6, 9 ...) после даты оплаты.

После того, как сотрудник проверил себя, он переходит к следующему этапу, который означает, что ReviewStatus изменится на Выполняется, а под-статусом будет Оценка менеджера. На этом этапе мы бы хотели, чтобы прямой менеджер проверил работника. Если менеджер этого не сделал, а срок исполнения менеджера истек, мы также хотели бы отправлять напоминание каждые 3 дня.

После того, как сотрудник и менеджер сделали обзор, он обращается к менеджеру2 для проверки. статус проверки по-прежнему будет находиться в процессе выполнения, подчиненный статус будет «Подтверждение менеджера2», то же самое напоминание будет отправлено менеджеру2.

После того, как все люди пройдут, статус проверки станет Завершенным.

Из-за реальной рабочей платформы я не знаю, как применять операторы if-else в этом случае, особенно для ротации за 3 дня.

1 Ответ

1 голос
/ 21 октября 2019

Проверьте приведенное ниже решение, не стесняйтесь задавать вопросы:

# check the conditions below avery day at 00:00, take info from db and check it in your script

if ReviewStatus == "Not Started":
    if curremt_date =< EmpDueDate:
        if EmpDue - current_date == 7:
            send_message()
    else:
        if (curremt_Date - EmpDueDate).daysnumber % 3 == 0:
            send_message()

elif ReviewStatus == "Progress" and  SubStatus == "Manager Assessment":
    if curremt_date > ManagerDueDate:
        if (curremt_Date - ManagerDueDate).daysnumber % 3 == 0:
            send_message()

elif ReviewStatus == "Progress" and  SubStatus == "Acknowledgement":
    if curremt_date > Manager2DueDate:
        if (curremt_Date - Manager2DueDate).daysnumber % 3 == 0:
            send_message()

else:
    raise Exception("Something Unexpected here !")
...