public with sharing class calendarUtil { //日期中间取日历Map public static Map getCalendarMap(Date beginDate,Date endDate){ Map calendarMap = new Map(); List calendarList = [select id,Date__c,IsWorkDay__c from OlympusCalendar__c where Date__c >= :beginDate and Date__c <= :endDate]; for(OlympusCalendar__c cal : calendarList){ Date datetemp = cal.Date__c; calendarMap.put(datetemp.format(),cal); } return calendarMap; } //获取两个日期间的工资日 public static Integer getNumfromCalendarMap (Map calendarMap,Date beginDate,Date endDate){ Integer num = 0; List calendarList = new List(); Set keys = calendarMap.keySet(); for(String key : keys){ Date keyDate = Date.valueOf(key.replace('/', '-')); if(beginDate<=keyDate && keyDate <= endDate){ calendarList.add(calendarMap.get(key)); } } for(OlympusCalendar__c oly : calendarList){ if(oly.IsWorkDay__c == 1){ system.debug(oly.Date__c+' '+oly.IsWorkDay__c); num++; } } return num; } //获取日期num个工作日之后\之前的日期 public static Date getCorrespondingDate(Map calendarMap,Date beginDate,Integer num){ Integer count = 0; Date temp ; if(num > 0){ for(Integer i = 1;;i++){ temp = beginDate.addDays(i); String str = temp.format(); OlympusCalendar__c oly = calendarMap.get(str); if(oly.IsWorkDay__c == 1){ count++; } if(num == count){ break; } } }else{ for(Integer i = -1;;i--){ temp = beginDate.addDays(i); String str = temp.format(); OlympusCalendar__c oly = calendarMap.get(str); if(oly.IsWorkDay__c == 1){ count--; } if(num == count){ break; } } } return temp; } //获取两个日期间的工资日 public static string getWorkDayNum (String beginStr,String endStr){ Date beginDate = Date.valueOf(beginStr.replace('/', '-')); Date endDate = Date.valueOf(endStr.replace('/', '-')); Map olmap = calendarUtil.getCalendarMap(beginDate.addDays(-1),endDate.addDays(1)); Integer count = calendarUtil.getNumfromCalendarMap(olmap,beginDate,endDate); return String.valueOf(count); } //获取days个工作日之前或之后的日期 public static String getWorkDay(String beginStr,String days){ Date beginDate = Date.valueOf(beginStr.replace('/', '-')); Integer num = Integer.valueOf(days); Map olmap = new Map(); if(num<0){ olmap = calendarUtil.getCalendarMap(beginDate.addDays(num-20),beginDate.addDays(1)); }else{ olmap = calendarUtil.getCalendarMap(beginDate.addDays(-1),beginDate.addDays(num+20)); } Date newDate = calendarUtil.getCorrespondingDate(olmap,beginDate,num); return String.valueOf(newDate); } // 在自定义标签中获取老的简档ID calendarUtil.getMemberProfileID public static String getMemberProfileID(String memberID){ if(String.isBlank(memberID) || memberID.length()<15) return '0000000000000000'; memberID = memberID.substring(0, 15); List allProfile = Profile(); for(String profile:allProfile){ if(String.isNotBlank(profile) && profile.contains(':')){ List profileList = profile.split(':'); if(profileList.size() > 1 && profileList[1].contains(memberID)){ return profileList[0]; } } } return '0000000000000000'; } private static List Profile(){ List profilList = new List(); profilList.add(System.label.SSBG_ANI); // profilList.add(System.label.SSBG_ANI_after); profilList.add(System.label.SSBG_ANI_manager); profilList.add(System.label.SSBG_IE); profilList.add(System.label.SSBG_IE_Manager_Above); // profilList.add(System.label.SSBG_IE_after); profilList.add(System.label.SSBG_IE_One); profilList.add(System.label.SSBG_IE_manager); profilList.add(System.label.SSBG_LS); profilList.add(System.label.SSBG_LS_Manager_Above); profilList.add(System.label.SSBG_LS_OnlyLoaner); profilList.add(System.label.SSBG_LS_notone); profilList.add(System.label.SSBG_LS_prototype_manager); profilList.add(System.label.SSBG_NDT); profilList.add(System.label.SSBG_NDT_Manager_Above); profilList.add(System.label.SSBG_NDT_prototype_manager); profilList.add(System.label.SSBG_Read_Only); profilList.add(System.label.SSBG_Read_Only_OT); profilList.add(System.label.SSBG_RVI); // profilList.add(System.label.SSBG_RVI_one); profilList.add(System.label.SSBG_RVI_after_one); profilList.add(System.label.SSBG_RVI_2); profilList.add(System.label.SSBG_Scientific_management_headquarters); profilList.add(System.label.SSBG_Service_Manager); profilList.add(System.label.SSBG_service_department); profilList.add(System.label.SSBG_Compliance_department); profilList.add(System.label.SSBG_Market_promotion_department); profilList.add(System.label.SSBG_Scientific_management_headquarters2); profilList.add(System.label.SSBG_Business_management_department); profilList.add(System.label.SSBG_Strategic_planning_department); profilList.add(System.label.SSBG_Business_management_department2); profilList.add(System.label.SSBG_Business_management_department_Have_price); profilList.add(System.label.Trial_Customer_Portal_User); profilList.add(System.label.system_administrator); profilList.add(System.label.system_administrator2); profilList.add(System.label.SystemAdmin_GPI_New); return profilList; } }