#freemarker
#freemarker
Вопрос:
Да, я хотел бы знать, как я могу предотвратить, чтобы вывод дважды отображал одну и ту же дату или один и тот же тип контракта. Кроме того, я не знаю, как я могу поставить запятую после последней даты / типа контракта…
На данный момент результат будет:
- Площадь Алессии: 200 м2, 100 000 евро, Тип контракта: Ограниченный Начало контракта: 2000-01-01 / 2000-01-01 Окончание контракта: 2020-12-31 / 2020-12-31
- Площадь за январь: 870 м2, 3 400 000 евро, Тип контракта: Ограниченный / неизвестный Начало контракта: 2001-01-09 / 2002-03-10 Окончание контрактов: 2025-12-31
Какой я хотел бы иметь результат:
- Площадь Алессии: 200 м2, 100 000 евро, Тип контракта: Ограниченный, Начало контракта: 2000-01-01, Окончание контракта: 2020-12-31
- Январь: 870 м2, 3 400 000 евро, Типы контрактов: Ограничено / Неизвестно, Начало контрактов: 2001-01-09 / 2002-03-10, Конец контрактов: 2025-12-31
Поэтому, если есть два раза одна и та же дата или один и тот же контракт, я хочу, чтобы это было только один раз в моем списке. Если он отличается, он должен отображать их все и в обоих случаях запятую за последним результатом списка. Если бы вы знали, как изменить заголовок в зависимости от того, идет ли за ним 0, 1 или две даты, это было бы потрясающе.
<#assign translations = {
"de": {
"bbo": "Per {0}",
"sqm":"m²",
"contract00":"Vertragstyp:",
"contract01":"Befristet",
"contract02":"Unbefristet",
"contract03":"Befristet mit echter Option",
"contract04":"Befristet mit unechter Option",
"contract05":"Amortisation Mieterausbau",
"contract06":"Umsatzmiete",
"contract07":"Andere",
"contract08":"Unbekannt",
"start00":"Vertragsstart:",
"end00":"Vertragsende"
},
"en":{
"bbo": "Per {0}",
"sqm":"m²",
"contract00":"Contract type:",
"contract01":"Limited",
"contract02":"Unlimited",
"contract03":"Limited with real option",
"contract04":"Limited with unreal option",
"contract05":"Amortisation Mieterausbau",
"contract06":"Umsatzmiete",
"contract07":"Other",
"contract08":"Unknown",
"start00":"Start of contract:",
"end00":"End of contract:"
}
}>
<br>
<#assign msg = translations[.lang]>
<#assign currency = valuation.valuationSettings.valuationCurrency>
<#assign rentalUnits = valuation.draftRul.rentalUnits>
<#assign rentalUnitsWithTenant = []>
<#list rentalUnits as ru>
<#if ru.currentLease?? amp;amp; ru.currentLease.tenant?? >
<#assign rentalUnitsWithTenant = rentalUnitsWithTenant [ru]>
</#if>
</#list>
<#assign rentalUnitsByTenant = groupBy(rentalUnitsWithTenant, "currentLease.tenant")>
<ul>
<#list rentalUnitsByTenant?keys?sort as tenant>
<#assign rentalUnitsOfTenant = rentalUnitsByTenant[tenant]>
<#assign area=sum(rentalUnitsOfTenant, "areaPerUnitValue")>
<#assign income = sum(rentalUnitsOfTenant, "currentLease.income.income")>
<#assign units = sum(rentalUnitsOfTenant, "units")>
<#if income gte 100000>
<li>
${tenant}: ${area} ${msg["sqm"]}, ${currency} ${income?string[",##0"]},
${msg["contract00"]}
<#list rentalUnitsOfTenant as ru>
<#if ru.currentLease??>
<#if ru.currentLease.contractType= "LIMITED">
<#assign contract = msg["contract01"]>
<#elseif ru.currentLease.contractType="UNLIMITED">
<#assign contract = msg["contract02"]>
<#elseif ru.currentLease.contractType="LIMITED_WITH_REAL_OPTION">
<#assign contract = msg["contract03"]>
<#elseif ru.currentLease.contractType="LIMITED_WITH_UNREAL_OPTION">
<#assign contract = msg["contract04"]>
<#elseif ru.currentLease.contractType="AMORTISATION">
<#assign contract = msg["contract05"]>
<#elseif ru.currentLease.contractType="UMSATZMIETE">
<#assign contract = msg["contract06"]>
<#elseif ru.currentLease.contractType="OTHER">
<#assign contract = msg["contract07"]>
<#elseif ru.currentLease.contractType="UNKNOWN">
<#assign contract = msg["contract08"]>
</#if>
${contract}<#sep>/</#sep>
</#if>
</#list>
${msg["start00"]}
<#list rentalUnitsOfTenant as ru>
<#if ru.currentLease??>
${ru.currentLease.start!}<#sep>/</#sep>
</#if>
</#list>
Enddaten:
<#list rentalUnitsOfTenant as ru>
<#if ru.currentLease.end??>
${ru.currentLease.end!}<#sep>/</#sep>
</#if>
</#list>
</li>
</#if>
</#list>
</ul>
Если у вас есть решение для одного из моих вопросов, я уже благодарен.
Ответ №1:
Попробуйте создать уникальный список перед печатью значений, это может быть что-то вроде примера ниже. Ключевым моментом является метод seq_contains.
<#assign uniqueList = []>
<#list rentalUnitsOfTenant as ru>
<#if ru.currentLease??>
<#if ru.currentLease.contractType= "LIMITED">
<#assign contract = msg["contract01"]>
...
</#if>
<#if !uniqueList?seq_contains(contract) >
<#assign uniqueList = uniqueList [contract]>
</#if>
</#if>
</#list>
<#list uniqueList as contract>
${contract}<#sep>/</#sep>
</#list>