public without sharing class TS_SearchAccountController { public List results {get; private set;} public Boolean getIsOverLimit() { if (results != null && results.size() > 50) { return true; } return false; } public TS_SearchAccountController () { this.results = new List(); } public void search() { // 検索条件を用意 String query = System.currentPageReference().getParameters().get('q'); system.debug('query--->'+query); String reporterState = System.currentPageReference().getParameters().get('r'); reporterState = reporterState == 'LS' ? 'BS':reporterState; if ('NDT/ANI'.equals(reporterState)) { reporterState = ''; reporterState += ' ( ProductSegmentF__c = \'' +'NDT' +'\' OR '; reporterState += ' ProductSegmentF__c = \'' +'ANI' +'\') AND '; } else if ('System'.equals(reporterState)) { reporterState = ''; reporterState += ' ( ProductSegmentF__c = \'' +'NDT' +'\' OR '; reporterState += ' ProductSegmentF__c = \'' +'BS' +'\' OR '; reporterState += ' ProductSegmentF__c = \'' +'IE' +'\' OR '; reporterState += ' ProductSegmentF__c = \'' +'RVI' +'\' OR '; reporterState += ' ProductSegmentF__c = \'' +'ANI' +'\') AND '; } else { reporterState = ' ProductSegmentF__c = \'' +reporterState +'\' AND '; } if (query == null || query == '') { return; } this.search(query, reporterState); } public void search(String query, String reporterState) { List qwords = new List(); List qwordstmp = query.split(' '); String nameCondition = ''; for (String qword : qwordstmp) { if (String.isBlank(qword) == false) { qwords.add('%' + String.escapeSingleQuotes(qword.replaceAll('%', '')) + '%'); nameCondition += ' Name like \'' + qwords[qwords.size() - 1] + '\' AND '; } } // 検索 // 客户 记录类型 String accountRecordTypeId = TSRepairUtil.AccountBaseRecordTypeIdSQL() + ' AND '; // 客户 产品分类 // String accountRecordTypeDelear = ' ProductSegmentF__c = \'' +reporterState +'\' AND '; // String queryString = 'select Id, ProductSegmentF__c,Name from Account where '+ nameCondition +accountRecordTypeId +accountRecordTypeDelear+' Id != null order by Name limit 51'; String queryString = 'select Id, ProductSegmentF__c,Name from Account where '+ nameCondition +accountRecordTypeId +reporterState+' Id != null order by Name limit 51'; system.debug('queryString=' + queryString); Map accMap = new Map((List) Database.query(queryString)); // system.debug('accMap--->'+accMap.values()); this.results = accMap.values(); // values()の場合、順序わからないです this.results.sort(); // order by Name } }