public without sharing class RepairTriggerHandler {
    public static void setdate(List<Repair__c> newList, Map<Id, Repair__c> newMap, List<Repair__c> oldList, Map<Id, Repair__c> oldMap) {
        for(Repair__c rep : newList){
            if(rep.RecordTypeId == '0120K000000wOGe'){
           // if(rep.RecordTypeId == '0120l000000WwBL'){
                if(rep.ServicePlace__c == '现场'){
                    if( rep.CustomerRequestDate__c == null || rep.ServiceStartDate__c== null){
                        rep.StartDatenwb__c  = null;
                    }else{
                        Map<String,OlympusCalendar__c> dateMap = calendarUtil.getCalendarMap(rep.CustomerRequestDate__c,rep.ServiceStartDate__c);
                        rep.StartDatenwb__c = (calendarUtil.getNumfromCalendarMap(dateMap,rep.CustomerRequestDate__c,rep.ServiceStartDate__c)-1)+'';
                    }
                }
                               
                if(rep.ServiceType__c=='维修' ){
                    if(rep.ServiceProperty__c =='有偿'){
                       if( rep.QuotationAgreeDate__c == null || rep.CompletionDate__c== null){
                           rep.MaintenanceDatewb__c  = null;
                       }else{
                           Map<String,OlympusCalendar__c> dateMap = calendarUtil.getCalendarMap(rep.QuotationAgreeDate__c,rep.CompletionDate__c);
                           rep.MaintenanceDatewb__c = (calendarUtil.getNumfromCalendarMap(dateMap,rep.QuotationAgreeDate__c,rep.CompletionDate__c)-1)+'';
                       }
                    }else if(rep.ServiceProperty__c =='无偿'){
                       if( rep.ServiceStartDate__c == null || rep.CompletionDate__c== null){
                           rep.MaintenanceDatewb__c  = null;
                       }else{
                           Map<String,OlympusCalendar__c> dateMap = calendarUtil.getCalendarMap(rep.ServiceStartDate__c,rep.CompletionDate__c);
                           rep.MaintenanceDatewb__c = (calendarUtil.getNumfromCalendarMap(dateMap,rep.ServiceStartDate__c,rep.CompletionDate__c)-1)+'';
                       }
                    }else{
                        rep.MaintenanceDatewb__c = null;
                    }
                }else{
                    rep.MaintenanceDatewb__c = null;
                }
                    
                if(rep.ServiceType__c=='维修' ){
                    if(rep.QuotationAgreeDate__c == null ){
                       if( rep.BugDate__c == null || rep.CompletionDate__c == null){
                            rep.Downtime__c = null;
                       }else{
                           Map<String,OlympusCalendar__c> dateMap = calendarUtil.getCalendarMap(rep.BugDate__c,rep.CompletionDate__c);
                           rep.Downtime__c = (calendarUtil.getNumfromCalendarMap(dateMap,rep.BugDate__c,rep.CompletionDate__c)-1)+'';
                       }
                    }else{
                        
                        if(rep.QuotationDate__c == null || rep.QuotationAgreeDate__c == null || rep.BugDate__c == null || rep.CompletionDate__c == null){
                            rep.Downtime__c = null;
                        }else{
                    
                           Integer num1 = 0;
                           Integer num2 = 0;
                       
                           Map<String,OlympusCalendar__c> dateMap = calendarUtil.getCalendarMap(rep.QuotationDate__c,rep.QuotationAgreeDate__c);
                           num1 = calendarUtil.getNumfromCalendarMap(dateMap,rep.QuotationDate__c,rep.QuotationAgreeDate__c)-1;
                       
                           Map<String,OlympusCalendar__c> dateMap1 = calendarUtil.getCalendarMap(rep.BugDate__c,rep.CompletionDate__c);
                           num2 = calendarUtil.getNumfromCalendarMap(dateMap1,rep.BugDate__c,rep.CompletionDate__c)-1;
                       
                           rep.Downtime__c = (num2 - num1)+'';
                       }
                    }                    
                }else{
                    rep.Downtime__c = null;
                }               
            }else if(rep.RecordTypeId == '0120K000000wOGg'){ //else if(rep.RecordTypeId == '0120l000000WwBQ'){
                if(rep.ServicePlace__c == '现场'){
                    if( rep.QuotationAgreeDate__c == null || rep.ReciveRepairDay__c== null){
                        rep.StartDatenwb__c  = null;
                    }else{
                        Map<String,OlympusCalendar__c> dateMap = calendarUtil.getCalendarMap(rep.ReciveRepairDay__c,rep.QuotationAgreeDate__c);
                        rep.StartDatenwb__c = (calendarUtil.getNumfromCalendarMap(dateMap,rep.ReciveRepairDay__c,rep.QuotationAgreeDate__c)-1)+'';
                    }
                }
                               
                if(rep.ServiceType__c=='维修' ||rep.ServiceType__c=='维护' ){
                 
                       if( rep.CompletionDate__c == null || rep.QuotationAgreeDate__c== null){
                           rep.MaintenanceDatewb__c  = null;
                       }else{
                           Map<String,OlympusCalendar__c> dateMap = calendarUtil.getCalendarMap(rep.QuotationAgreeDate__c,rep.CompletionDate__c);
                           rep.MaintenanceDatewb__c = (calendarUtil.getNumfromCalendarMap(dateMap,rep.QuotationAgreeDate__c,rep.CompletionDate__c)-1)+'';
                       }
                }else{
                    rep.MaintenanceDatewb__c = null;
                }
                    
                if(rep.ServiceType__c=='维修'||rep.ServiceType__c=='维护' ){
                    if(rep.ReciveRepairDay__c == null || rep.CompletionDate__c == null ){
                        rep.Downtime__c = null;
                    }else{
                       if( rep.ReciveRepairDay__c ==  rep.CompletionDate__c){
                            rep.Downtime__c ='0';
                       }else{
                           if(rep.QuotationDate__c == null || rep.QuotationAgreeDate__c == null || rep.ReciveRepairDay__c == null || rep.CompletionDate__c == null){
                               rep.Downtime__c = null;
                            }else{
                    
                                Integer num1 = 0;
                                Integer num2 = 0;
                       
                                Map<String,OlympusCalendar__c> dateMap = calendarUtil.getCalendarMap(rep.QuotationDate__c,rep.QuotationAgreeDate__c);
                                num1 = calendarUtil.getNumfromCalendarMap(dateMap,rep.QuotationDate__c,rep.QuotationAgreeDate__c)-1;
                       
                                Map<String,OlympusCalendar__c> dateMap1 = calendarUtil.getCalendarMap(rep.ReciveRepairDay__c,rep.CompletionDate__c);
                                num2 = calendarUtil.getNumfromCalendarMap(dateMap1,rep.ReciveRepairDay__c,rep.CompletionDate__c)-1;
                       
                                rep.Downtime__c = (num2 - num1)+'';
                           }   
                       }                        
                    }                    
                }else{
                    rep.Downtime__c = null;
                }                               
            }
        }    
    }
}