Triggers 映射以避免重复记录

Triggers 映射以避免重复记录,triggers,salesforce,Triggers,Salesforce,我有一个假日自定义对象,它包含基于 基于国家/地区的如何检索地图中的值 我试过: 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 (Hol

我有一个假日自定义对象,它包含基于 基于国家/地区的如何检索地图中的值

我试过:

 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); 
List holidays=新列表([从假日中选择id、日期、国家]);
Map mapOfHolidays=新地图();
用于holidays.put(Holiday.Date\uuuu c,假日)地图的(假日:假日);
假设2017年3月8日是法国和意大利的日期,如果我将键值设置为date_____________________________________

所以我必须在Map中使用Key和Value,我想使用Map检索日期,请任何人帮我回答

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());
        }
    }
}
在订单上触发忽略(插入前、更新前){
Set accountIds=new Set();
for(订单ord:Trigger.new){
AccountId.add(ord.AccountId);
}
map MapOfcounts=新地图([选择id,JDE_日期_交付_偏移量__cfrom account,其中id位于:accountID]);
列表假日=新列表([从假日中选择id、日期]);
Map mapOfHolidays=新地图();
用于holidays.put(Holiday.Date\uuuu c,假日)地图的(假日:假日);
for(订单so:Trigger.new){
Account acc=mapoaccounts.get(so.AccountId);

对于(整数i=0;i如果我理解正确,对于一个唯一的日期,您有多个国家。 为此,您可以创建日期映射作为键,列表作为值,而不是创建日期和假日映射。 例如:

Map<Date, List<Holiday__c>> mapofHolidays = new HashMap<Date, List<Holiday__c>>();
mapofHolidays=newHashMap();

之后,您可以检索唯一日期的所有国家/地区,并执行所需的处理。

如何使用国家/地区检索日期based@arpitgargin在这种情况下,遍历Holiday_c对象的列表,对于列表中的每个元素,获取country并将country作为键,将日期列表作为值。您能建议在中进行一些修改吗根据我的要求,我的代码Country_uc在假期中作为字段object@SFDC
Map-mapofHolidays=new-HashMap();for(Holiday_uc Holiday:holidays){if(!mapofHolidays.containsKey(Holiday.Date_uc)){List listholi=new ArrayList();listholi.add(Holiday);mapofHolidays.put(Holiday.Date_uc,listholi)}else{List listholi=mapOfHolidays.get(holiday.Date_uc);listholi.add(holiday);}
然后您可以这样检查:
如果(dayOfWeek=='saturday'| dayOfWeek=='sunday'| mapOfHolidays.containskey(dayOfWeek))