public with sharing class AssetMaintainAbandonSummaryController { public Id amhId{get;set;} public Map bjMap{get;set;} public Map shMap{get;set;} public Map gzMap{get;set;} public Map totalMap{get;set;} public final static List COLUMN_NAMES{get;set;} static{ COLUMN_NAMES = new List { '待废弃数量(固定资产)' , '待废弃数量(非固定资产)' , '废弃数量(固定资产)' , '废弃数量(非固定资产)' }; } public String getInit(){ bjMap = initMap(); shMap = initMap(); gzMap = initMap(); totalMap = initMap(); AggregateResult[] agrList = [ SELECT Asset__r.Internal_asset_location__c , Asset__r.Internal_Asset_number__c , sum(MaintainCount__c) daifeiqi , sum(AbandonCount__c) feiqi FROM AssetMaintainDetail__c WHERE AssetMaintainHeader__c =: amhId GROUP BY Asset__r.Internal_asset_location__c,Asset__r.Internal_Asset_number__c ]; for(AggregateResult agr: agrList){ String location = String.valueOf(agr.get('Internal_asset_location__c')); Boolean isFixed = String.isNotBlank(String.valueOf(agr.get('Internal_Asset_number__c'))); Map tempMap = null; switch on location { when '北京 备品中心'{ tempMap = bjMap; } when '上海 备品中心'{ tempMap = shMap; } when '广州 备品中心'{ tempMap = gzMap; } when else{ continue; } } String col_daifeiqi = isFixed ? COLUMN_NAMES[0]:COLUMN_NAMES[1]; String col_feiqi = isFixed ? COLUMN_NAMES[2]:COLUMN_NAMES[3]; Integer val_daifeiqi =intValueOf(agr.get('daifeiqi')); Integer val_feiqi = intValueOf(agr.get('feiqi')); tempMap.put(col_daifeiqi, tempMap.get(col_daifeiqi) + val_daifeiqi); tempMap.put(col_feiqi, tempMap.get(col_feiqi) + val_feiqi); totalMap.put(col_daifeiqi, totalMap.get(col_daifeiqi) + val_daifeiqi); totalMap.put(col_feiqi, totalMap.get(col_feiqi) + val_feiqi); } return ''; } private Integer intValueOf(Object obj){ if(obj == null){ return 0; } return Integer.valueOf((Decimal) obj); } private Map initMap(){ Map newMap = new Map(); for(String colName:COLUMN_NAMES){ newMap.put(colName, 0); } return newMap; } }