Mám objekt Holiday Custom, obsahuje jedinečné dátumy založené na podľa krajiny Ako načítať hodnotu v Mape
Skúsil som:
List<Holiday__c> holidays = new List<Holiday__c>([Select id, Date__c,Country__c from Holiday__c]);
Map<date, Holiday__c> mapOfHolidays = new Map<date, Holiday__c>();
for (Holiday__c holiday: holidays) mapOfHolidays.put(holiday.Date__c , holiday);
Predpokladajme napríklad dátum 3/8/17 pre krajinu Francúzsko a Taliansko, Ak uvediem hodnotu Key ako Date__c, mapa neobsahuje kľúč ako duplikáty, ale pre každú krajinu jedinečné dátumy sú tam
Takže to, čo musím použiť kľúč a hodnotu v mape, chcem získať dátum pomocou mapy, prosím niekto Pomocník pre mňa odpoveď
trigger ignoreweekends on order (before insert,before update) {
Set<id> accountIds = new Set<Id>();
for (order ord : Trigger.new) {
accountids.add(ord.AccountId);
}
map<id, account> mapOfAccounts = new map<id, account>([select id,JDE_Date_Delivery_Offset__c from account where id IN: accountIds]);
List<Holiday__c> holidays = new List<Holiday__c>([Select id, Date__c from Holiday__c]);
Map<date, Holiday__c> mapOfHolidays = new Map<date, Holiday__c>();
for (Holiday__c holiday: holidays) mapOfHolidays.put(holiday.Date__c , holiday);
for (order so : Trigger.new) {
Account acc = mapOfAccounts.get(so.AccountId);
for(integer i=0;i<=acc.JDE_Date_Delivery_Offset__c;i++) {
Datetime dt = DateTime.newInstance(Date.today() +acc.JDE_Date_Delivery_Offset__c.longvalue(), Time.newInstance(0, 0, 0, 0));
String dayOfWeek=dt.format("EEEE");
if(dayOfWeek == "saturday" || dayOfWeek == "sunday"|| mapOfHolidays.containskey(mapOfHolidays.Date__c))
acc.JDE_Date_Delivery_Offset__c = acc.JDE_Date_Delivery_Offset__c+ 1;
so.JDE_Synchronization_Date__c = Date.today().addDays(acc.JDE_Date_Delivery_Offset__c.intValue());
}
}
}
odpovede:
1 pre odpoveď č. 1Ak som správne pochopil, pre jeden jedinečný dátummáte viac krajín. Za týmto účelom môžete vytvoriť mapu Dátum ako kľúč a Zoznam ako hodnotu namiesto vytvorenia mapy Dátum a Dovolenka. Napríklad :
Map<Date, List<Holiday__c>> mapofHolidays = new HashMap<Date, List<Holiday__c>>();
Potom môžete získať všetky krajiny pre jedinečný dátum a vykonať požadované spracovanie.