public with sharing class otherLookUp { @AuraEnabled(cacheable=true) public static List lookUp(String searchTerm, String objName, String filter,String visitPlaceId) { system.debug('lookUp'); system.debug('objName:'+objName); system.debug('searchTerm:'+searchTerm); system.debug('filter:'+filter); system.debug('visitPlaceId:'+visitPlaceId); User loginUser = [Select Id, State_Hospital__c, Job_Category__c from User where Id =: UserInfo.getUserId()]; String reporterState = loginUser.State_Hospital__c; List recordList = new List(); String qureyObjName = 'Account'; if(objName == 'SearchVisitorPlace_Campaign') { qureyObjName = 'Campaign'; } if(objName == 'Opportunity') { qureyObjName = 'Opportunity'; } if(objName == 'MaintenanceContract') { qureyObjName = 'Maintenance_Contract__c'; } if(objName == 'InfrastructureProject') { qureyObjName = 'Infrastructure_Project__c'; } String searchQuery = 'select Id,name from '+qureyObjName+' where Id <> null '; //zzm 2023-11-24 日报询价加科室和状态 start if(objName == 'Opportunity') { searchQuery = 'Select Id, Opportunity_No__c, name, Department_Name__c,Field1__c,Close_Forecasted_Date__c, Competitor__c, Wholesale_Price__c from '+qureyObjName+' where Id <> null '; } //zzm 2023-11-24 日报询价加科室和状态 end searchQuery += nameCondition(searchTerm,qureyObjName); // if(String.isNotBlank(searchTerm)){ // if(qureyObjName=='Account'){ // searchQuery += 'and Name_for_Daily_Report_text__c like \'%'+ searchTerm + '%\''; // } else{ // searchQuery += 'and Name LIKE \'%' + searchTerm + '%\''; // } // } //访问场所 if(objName=='SearchVisitorPlace') { searchQuery += ' and Hospital__r.RecordType.DeveloperName = \'HP\' and Is_Active__c <> \'無効\' order by Name '; } // String queryString = 'select Id, Name from Account where' + nameCondition + ' Is_Active_Formula__c = \'有效\' and RecordType.DeveloperName = \'Agency\' order by Name limit 51'; if(objName=='SearchVisitorPlace_Sales') { searchQuery += ' and RecordType.DeveloperName = \'Agency\' and Is_Active_Formula__c = \'有效\' order by Name '; } // [select Id, Name from Account where Is_Active__c != '無効' and Name like :nameCondition and RecordType.DeveloperName = 'Training' order by Name limit 30] if(objName=='SearchVisitorPlace_Training') { searchQuery += ' and RecordType.DeveloperName = \'Training\' and Is_Active__c <> \'無効\' order by Name '; } // if(objName=='SearchVisitorPlace_Campaign' || objName == 'InfrastructureProject') { // searchQuery += ' id !=null '; // } if(objName == 'InfrastructureProject') { Account a = null; try { a = [select Id, Hospital__c from Account where Id=:visitPlaceId]; } catch ( System.QueryException qe) { return recordList; } searchQuery += ' and OCSM_Hospital__c=\'' + a.Hospital__c + '\' '; } //新建联系人,只能选择该医院下的所有的三级科室--没做出来 // if(objName == 'ContactDepartment') { // List recordTypes= [select Id from RecordType where SobjectType = 'Account' and DeveloperName in ('Department_GYN','Department_OTH','Department_BF','Department_GI','Department_GS','Department_URO','Department_ENT','Department')]; // List recordTypeIds = new List(); // for(RecordType rt : recordTypes) { // recordTypeIds.add(rt.Id); // } // Account a = null; // a = [select Id, Hospital__c from Account where Id=:visitPlaceId]; // searchQuery += ' and OCSM_Hospital__c=\'' + a.Hospital__c + '\' and RecordTypeId in :recordTypeIds'; // } Date toDate = Date.today(); Date lastDate = toDate.addYears(-1); // String today = String.valueOf(Date.newInstance(toDate.year(), toDate.month(), toDate.day())).substring(0,10); // String lastDate = String.valueOf(Date.newInstance(toDate.year()-1, toDate.month(), toDate.day())).substring(0,10); // Date lastDate = Date.newInstance(toDate.year()-1, toDate.month(), toDate.day()); //询价单独处理 if(objName=='Opportunity') { if(String.isNotBlank(visitPlaceId)){ searchQuery += ControllerUtil.getOppSearchSQOLforLwc(visitPlaceId,toDate,lastDate); // searchQuery = ControllerUtil.getOppSearchSQOL(visitPlaceId,' Id <> null ' +nameCondition(searchTerm,qureyObjName)); } } searchQuery += ' limit 31'; system.debug('searchQuery:'+searchQuery); List queryResult = new List(); //维修合同单独处理 if(objName == 'MaintenanceContract') { queryResult = searchMc(searchTerm,visitPlaceId); } else if(objName == 'Opportunity') { queryResult = ControllerUtil.getOpportunitys(searchQuery); }else{ queryResult = Database.query(searchQuery); } Map accMap = new Map(); if(queryResult.size()>0){ for(Sobject sobj : queryResult){ Record r = new Record(); r.Id = sobj.id; r.Name = (String)sobj.get('name'); //zzm 2023-11-24 日报询价加科室和状态 start if(objName=='Opportunity') { // r.Department_Name = (String)sobj.get('Department_Name__c'); // r.Competitor = (String)sobj.get('Competitor__c'); r.Name += '(' +(String)sobj.get('Department_Name__c') +')' +(String)sobj.get('Competitor__c'); } //zzm 2023-11-24 日报询价加科室和状态 end recordList.add(r); accMap.put(sobj.id,null); } } if(objName=='SearchVisitorPlace'){ if(recordList.size()<=50){ // さらに省単位のデータを検索 String nameCondition = nameCondition(searchTerm,'Account'); // Map stateDepartmentMap = selectDepartByHospitalState(' and Name_for_Daily_Report_text__c like \'%'+ searchTerm + '%\' ', 31 - recordList.size()); Map stateDepartmentMap = ControllerUtil.selectDepartByHospitalState(' Id<>null ' +nameCondition + ' and ',reporterState, 51 - recordList.size()); if (stateDepartmentMap.size() > 0) { for (Id accId : stateDepartmentMap.keySet()) { if (!accMap.containsKey(accId)) { Record r = new Record(); r.Id = accId; r.Name = stateDepartmentMap.get(accId).Name; recordList.add(r); } } } } } system.debug(recordList); return recordList; } public static String nameCondition(String searchTerm,String qureyObjName) { String nameCondition = ''; List qwords = new List(); List qwordstmp = searchTerm.split(' '); for (String qword : qwordstmp) { if (String.isBlank(qword) == false) { qwords.add('%' + String.escapeSingleQuotes(qword.replaceAll('%', '')) + '%'); if(qureyObjName=='Account'){ nameCondition += ' and Name_for_Daily_Report_text__c like \'' + qwords[qwords.size() - 1] + '\' '; } else{ nameCondition += ' and Name like \'' + qwords[qwords.size() - 1] + '\' '; } } } return nameCondition; } public class Record { @AuraEnabled public String Id; @AuraEnabled public String Name; } /*public static Map selectDepartByHospitalState(String nameCondition, Integer limitCnt) { User loginUser = [Select Id, State_Hospital__c, Job_Category__c from User where Id =: UserInfo.getUserId()]; String reporterState = loginUser.State_Hospital__c; String queryString = 'select Id, Name, Department_Class__c, Department_Class__r.Name, Hospital__c, Hospital__r.Name from Account where Id<>null ' + nameCondition + 'and Hospital__r.RecordType.DeveloperName = \'HP\' and Is_Active__c <> \'無効\''; if (loginUser.Job_Category__c == 'GI市场' || loginUser.Job_Category__c == 'SP市场' || loginUser.Job_Category__c == '服务本部' || loginUser.Job_Category__c == '培训' ) { // 全国範囲、なにもしない } else { // 省単位の条件追加 system.debug('selectDepartByHospitalState reporterState=' + reporterState); queryString += ' and Parent.Parent.State_Master__r.Name = :reporterState'; } queryString += ' order by Name limit '+limitCnt; system.debug('selectDepartByHospitalState queryString=' + queryString); return new Map((List) Database.query(queryString)); }*/ //检索询价 /*public static String getOppSearchSQOL(String visitorPlaceId,Date today,Date lastDate) { Account a = new Account(); List accountList = [select Id, Hospital__c, Agent_Ref__c, Parent.Parent.RecordType.DeveloperName, Parent.RecordType.DeveloperName, RecordType.DeveloperName from Account where Id=:visitorPlaceId]; if(accountList.size()>0) { a = accountList[0]; } // 検索 String queryString = ' '; // String temptoday = Date.today().format().replace('/', '-'); // String tempLastDate = Date.today().addDays(-365).format().replace('/', '-'); // Date today = Datetime.now().date(); // Date lastDate = Datetime.now().date().addyears(-1); // 病院 if (a.Parent.Parent.RecordType.DeveloperName == 'HP') { // queryString = 'Select Id, Opportunity_No__c, Name, toLabel(StageName), Department_Name__c,Field1__c,Close_Forecasted_Date__c, Competitor__c, Wholesale_Price__c from Opportunity where' + nameCondition // + ' Account.Hospital__c=\'' + a.Hospital__c + '\' and ( StageName IN (\'引合\',\'注残\') or ( StageName = \'出荷\' and Shipping_Finished_Day__c > '+tempLastDate+' and Shipping_Finished_Day__c <= '+temptoday+' and CALENDAR_YEAR(Created_Day__c) != 2012 )) and RecordTypeId in (\'01210000000QekK\',\'012100000006KMeAAM\') order by Name, Opportunity_No__c, Department_Name__c limit 31'; queryString += ' and Account.Hospital__c=\'' + a.Hospital__c + '\' and ( StageName IN (\'引合\',\'注残\') or ( StageName = \'出荷\' and Shipping_Finished_Day__c > :lastDate and Shipping_Finished_Day__c <= :today and CALENDAR_YEAR(Created_Day__c) != 2012 )) and RecordTypeId in (\'01210000000QekK\',\'012100000006KMeAAM\') order by Name, Opportunity_No__c, Department_Name__c '; // queryString += ' and Account.Hospital__c=\'' + a.Hospital__c + '\' and ( StageName IN (\'引合\',\'注残\') or ( StageName = \'出荷\' and CALENDAR_YEAR(Created_Day__c) <> 2012 )) and RecordTypeId in (\'01210000000QekK\',\'012100000006KMeAAM\') order by Name, Opportunity_No__c, Department_Name__c '; } // 販売店 else if (a.RecordType.DeveloperName == 'Agency') { queryString += ' and Account.Hospital__c=\'' + a.Hospital__c + '\' and ( StageName IN (\'引合\',\'注残\') or ( StageName = \'出荷\' and Shipping_Finished_Day__c > :lastDate and Shipping_Finished_Day__c <= :today and CALENDAR_YEAR(Created_Day__c) != 2012 )) and RecordTypeId in (\'01210000000QekK\',\'012100000006KMeAAM\') order by Name, Opportunity_No__c, Department_Name__c'; // queryString += ' and Account.Hospital__c=\'' + a.Hospital__c + '\' and ( StageName IN (\'引合\',\'注残\') or ( StageName = \'出荷\' CALENDAR_YEAR(Created_Day__c) <> 2012 )) and RecordTypeId in (\'01210000000QekK\',\'012100000006KMeAAM\') order by Name, Opportunity_No__c, Department_Name__c '; } return queryString; }*/ //检索合同 public static List searchMc(String query, String visitorPlaceId) { // Xin_SearchOpportunityと同じにする 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 += ' and Name like \'' + qwords[qwords.size() - 1] + '\' '; } } Account a = null; try { a = [select Hospital__c from Account where Id=:visitorPlaceId]; } catch ( System.QueryException qe) { return new List(); } system.debug('cond=' + nameCondition); String queryString = 'select Id, Name,Management_Code__c,Status__c from Maintenance_Contract__c where Id<>null ' + nameCondition + ' and Hospital__c=\'' + a.Hospital__c + '\' AND Status__c in (\'契約\',\'契約満了\') order by Status__c ASC limit 31'; System.debug(queryString); return (List) Database.query(queryString); } }