Содержит пары значений в двух полях - Groovy - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть набор данных с двумя полями: Department_ID и Vendor_ID.Я хочу пометить любую запись, где Department_ID равен определенному значению, а Vendor_ID равен определенному значению.Тем не менее, у меня есть много пар, которые я бы хотел отметить.Не имея длинного сценария, который избыточно повторяет информацию, я хочу что-то короткое и простое.

Старая логика: $ {(DPT == '10' && VND == '234' || DPT == '9' && VND == '13' || DPT == '200' && VND== '4987' || DPT == '598' && VND == '123')? "Да": "НЕТ"}

Предпочтительная логика: $ {['10', '9','200', '598']. Содержит (DPT) && ['234', '13', '4987', '123']. Содержит (VND)? "Да": "Нет"}

Проблема с предпочтительной логикой заключается в том, что она будет отмечать записи, которые соответствуют любой комбинации присутствующих значений.т. е. она помечает запись с DPT == '10' && VND == '13' ... Мне нужна функция размещения, но она должна искать только определенные пары.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы можете проверить наличие пары:

${[['10', '234'], ['9', '13'], ['200', '4987'], ['598', '123']].contains([DPT, VND])?"Yes":"No"}
0 голосов
/ 05 февраля 2019

Вы можете поместить пары в набор, а затем проверить, содержит ли набор их.Например,

def known = [
    // DPT, VND
    ["10","123"],
    ["20","456"],
].toSet()

assert known.contains(["30","789"])==false
assert known.contains(["10","789"])==false
assert known.contains(["30","123"])==false
assert known.contains(["10","123"])==true
...