public without sharing class EquipmentRentalResponseController { // 借出申请 public Rental_Apply__c ra { get; set; } /** * 1.画面输入用借出申请 * 2.邮件cc用,最多5个 * 经理(服务) JingliApprovalManager__c => cc_1 * 经理(销售) SalesManager__c => cc_2 * 部长(服务) BuchangApprovalManager__c => cc_3 * 部长(销售) BuchangApprovalManagerSales__c => cc_4 * 总监 ZongjianApprovalManager__c => cc_5 */ public Rental_Apply__c cc { get; set; } // 借出申请ID public Id raid { get; private set; } // To:备品中心(response2center),To:申请者(response2user) public String type { get; set; } public Boolean hasError { get; private set; } public String baseUrl { get; private set; } public EquipmentRentalResponseController() { //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); raid = ApexPages.currentPage().getParameters().get('raid'); type = ApexPages.currentPage().getParameters().get('type'); } public EquipmentRentalResponseController(ApexPages.StandardController stdController) { //Apexpages.currentPage().getHeaders().put('X-UA-Compatible', 'IE=8'); baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); raid = stdController.getId(); type = ApexPages.currentPage().getParameters().get('type'); } // 画面初始化 public void init() { hasError = true; if(String.isBlank(raid)){ ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.FATAL, '无效的耗材申请Id'); Apexpages.addMessage(myMsg); return; } //ra = new Rental_Apply__c(); //cc = new Rental_Apply__c(); List raList = [select Id,Response__c, ResponseNew__c, Name, Person_In_Charge__c, Person_In_Charge__r.Name, Person_In_Charge__r.Email, ApplyUser__c, ApplyUser__r.Name, ApplyUser__r.Email, Loaner_centre_mail_address__c, Demo_purpose1__c, Demo_purpose2__c , SalesManager__c ,JingliApprovalManager__c ,Department_name__c,Hospital__r.Name,GI_Diff__c,Application_accept_time__c from Rental_Apply__c where Id = :raid]; if (raList.size() > 0) { ra = raList[0]; cc = raList[0]; } else{ ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.FATAL, '无效的耗材申请Id'); Apexpages.addMessage(myMsg); return; } cc.JingliApprovalManager__c = null; cc.SalesManager__c = null; cc.BuchangApprovalManager__c = null; cc.BuchangApprovalManagerSales__c = null; cc.ZongjianApprovalManager__c = null; cc.ResponseNew__c = null; // 邮件默认cc if (type == 'response2center') { //modify by sunlei 20160702 根据申请理由抄送销售经理或服务经理 //(备品借出申请: 使用目的1等于其他)) :抄送销售部长 if (ra.Demo_purpose1__c == '其他') { //cc.JingliApprovalManager__c = ra.Person_In_Charge__c; cc.JingliApprovalManager__c = ra.SalesManager__c; } else{ //((备品借出申请: 使用目的2等于引发询价,询价跟进,已购待货,学会展会,新产品评价) //抄送销售经理 if (ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('shiyongwuxunjia') || ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('shiyongyouxunjia') || ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('yigoudaihuo') || ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('xuehuizhanhui') || ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('xinchanpinpingjia')) { cc.JingliApprovalManager__c = ra.SalesManager__c; } //(备品借出申请: 使用目的2等于索赔QIS,一般用户) //抄送服务经理 if (ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('suopeiQIS') || ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('zaixiuli') || ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('yibanyonghu')){ // OLY_OCM-585 因为逻辑里面没有使用到这里设置的值,所以不需要修改 Start cc.JingliApprovalManager__c = ra.JingliApprovalManager__c; // OLY_OCM-585 End } //(备品借出申请: 使用目的2等于临床研究,保修用户,培训中心) //不需要抄送经理 if (ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('linchuangyanjiu') || ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('baoxiuyonghu') || ra.demo_purpose2__c == FixtureUtil.raDemo_purpose2MAP.get('shichangduonianbaoxiu') || ra.demo_purpose2__c == '培训中心') { cc.JingliApprovalManager__c = ra.ApplyUser__c; } } //delete by sunlei 20160702 根据申请理由抄送销售经理或服务经理 //cc.SalesManager__c = ra.ApplyUser__c; } else if (type == 'response2user') { //cc.JingliApprovalManager__c = ra.Loaner_centre_mail_address__c; } } // 保存按钮 // 20210927 ljh 应答沟通 update start public PageReference saveBtn() { // public void saveBtn() { // 20210927 ljh 应答沟通 update end hasError = true; String response = cc.ResponseNew__c; if (response == null || response.trim().length() == 0) { cc.ResponseNew__c.addError('请输入内容。'); //hasError=true; return null; // return ; // 20210927 ljh 应答沟通 update } // 送信者 String username = UserInfo.getName(); // 发送时间 Datetime dt = Datetime.now(); // 相关用户检索 List ccList = new List(); ccList.add(ra.Person_In_Charge__c); ccList.add(ra.ApplyUser__c); if (cc.JingliApprovalManager__c != null) { ccList.add(cc.JingliApprovalManager__c); } if (cc.SalesManager__c != null) { ccList.add(cc.SalesManager__c); } if (cc.BuchangApprovalManager__c != null) { ccList.add(cc.BuchangApprovalManager__c); } if (cc.BuchangApprovalManagerSales__c != null) { ccList.add(cc.BuchangApprovalManagerSales__c); } if (cc.ZongjianApprovalManager__c != null) { ccList.add(cc.ZongjianApprovalManager__c); } Map userMap = new Map([ select Id, Name, Email from User where Id in :ccList ]); // 收信者 List toNameListWithoutAddonMessage = new List (); List toNameListWithAddonMessage = new List (); List toMailList = new List(); if (type == 'response2center') { toNameListWithoutAddonMessage.add(ra.Loaner_centre_mail_address__c); toMailList.add(ra.Loaner_centre_mail_address__c); } else if (type == 'response2user') { toNameListWithoutAddonMessage.add(userMap.get(ra.Person_In_Charge__c).Name); toNameListWithAddonMessage.add(userMap.get(ra.ApplyUser__c).Name + '(操作者)'); toMailList.add(userMap.get(ra.Person_In_Charge__c).Email); toMailList.add(userMap.get(ra.ApplyUser__c).Email); } // 抄送者 List ccNameList = new List (); List ccMailList = new List(); if(type == 'response2user'){ ccNameList.add(ra.Loaner_centre_mail_address__c); ccMailList.add(ra.Loaner_centre_mail_address__c); } if (cc.JingliApprovalManager__c != null) { ccNameList.add(userMap.get(cc.JingliApprovalManager__c).Name); ccMailList.add(userMap.get(cc.JingliApprovalManager__c).Email); } if (cc.SalesManager__c != null) { ccNameList.add(userMap.get(cc.SalesManager__c).Name); ccMailList.add(userMap.get(cc.SalesManager__c).Email); } if (cc.BuchangApprovalManager__c != null) { ccNameList.add(userMap.get(cc.BuchangApprovalManager__c).Name); ccMailList.add(userMap.get(cc.BuchangApprovalManager__c).Email); } if (cc.BuchangApprovalManagerSales__c != null) { ccNameList.add(userMap.get(cc.BuchangApprovalManagerSales__c).Name); ccMailList.add(userMap.get(cc.BuchangApprovalManagerSales__c).Email); } if (cc.ZongjianApprovalManager__c != null) { ccNameList.add(userMap.get(cc.ZongjianApprovalManager__c).Name); ccMailList.add(userMap.get(cc.ZongjianApprovalManager__c).Email); } String toName = ''; if (toNameListWithoutAddonMessage.size() > 0) { String toNameWithoutAddonMessage = String.join(toNameListWithoutAddonMessage,','); toName += toNameWithoutAddonMessage; } if (toNameListWithAddonMessage.size() > 0) { String toNameWithAddonMessage = String.join(toNameListWithAddonMessage,','); toName += ',' + toNameWithAddonMessage; } String ccName = ''; if (ccNameList.size() > 0) { ccName = String.join(ccNameList,','); } // 原应答沟通信息 String oldResponse = ra.Response__c; // 现应答沟通信息 String temp = ''; // 20210927 ljh 应答沟通 update start /*temp += '****** ' + username + ' ' + dt.format() + ' ******\n'; temp += '*** To:' + toName + '\n'; temp += '*** Cc:' + ccName + '\n'; temp += cc.ResponseNew__c; if (oldResponse != null && oldResponse.trim().length() > 0) { temp += '\n\n' + oldResponse; } else { //于2016-07-01加入 temp += '\n\n备品借出申请链接: ' + baseUrl + '/' + ra.Id +' '; }*/ temp += '****** ' + username + ' ' + dt.format() + ' ******
'; temp += '*** To:' + toName + '
'; temp += '*** Cc:' + ccName + '
'; temp += cc.ResponseNew__c; if (oldResponse != null && oldResponse.trim().length() > 0) { temp += '

' + oldResponse; } else { //于2016-07-01加入 temp += '

备品借出申请链接: ' + baseUrl + '/' + ra.Id +' '; } // 20210927 ljh 应答沟通 update end try { // 更新应答沟通 Rental_Apply__c updra = new Rental_Apply__c(); updra.Id = ra.Id; updra.Response__c = temp; update updra; //Create a dummy instance of outbound email object // Messaging.SingleEmailMessage message= new Messaging.SingleEmailMessage(); //set a roolback point // Savepoint sp = Database.setSavepoint(); //set desired email template id // message.templateId = 'xxxxxx'; //set the target object record id(this is mandatory while using email template) // Id recId = [select Id from Contact where Email != null limit 1].id; // message.targetObjectId = recId; //fire dummy email // messaging.sendEmail(new Messaging.SingleEmailMessage[] {message}); //roll back to savepoint so that email is not sent // Database.rollback(sp); //Create insatnce of actual email Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage(); //get the bode from above dummy instance and set it to your actual email //messageNEW.HTMLBody = message.getHtmlBody(); //messageNEW.Subject = '备品借出申请' + ra.Name + '' + '应答沟通'; messageNEW.Subject = '备品借出申请 ' + ra.Name + ' ' + ra.Hospital__r.Name + ' ' + ra.Department_name__c + ' ' + ra.Demo_purpose1__c + '/' + ra.Demo_purpose2__c + ' ' + ra.GI_Diff__c + '-备品申请联络'; // 20210927 ljh 应答沟通 update start // messageNEW.PlainTextBody = temp; messageNEW.HtmlBody = temp; // 20210927 ljh 应答沟通 update end //set desired email addresses messageNEW.setCharset('UTF-8'); messageNEW.toAddresses = toMailList; messageNEW.ccAddresses = ccMailList; //send the mail Messaging.SendEmailResult[] results = messaging.sendEmail(new Messaging.SingleEmailMessage[] {messageNEW}); if(!results[0].success){ system.debug('=====' + results[0].errors[0].message); cc.ResponseNew__c.addError('邮件发送失败。'); return null; // return ; // 20210927 ljh 应答沟通 update //hasError=true; }else{ //邮件发送成功 // 更新申请受理时间 if (ra.Application_accept_time__c == null && type == 'response2user') { Rental_Apply__c upAppTime = new Rental_Apply__c(); upAppTime.Id = ra.Id; upAppTime.Application_accept_time__c = dt; update upAppTime; } hasError=false; return null; // return ; // 20210927 ljh 应答沟通 update } } catch (Exception ex) { system.debug('=====' + ex.getMessage()); //hasError = true; ApexPages.addMessages(ex); return null; // return ; // 20210927 ljh 应答沟通 update } PageReference ref = new Pagereference('/'+raid); ref.setRedirect(true); return ref; // return null; // 20210927 ljh 应答沟通 update } @TestVisible private static void test() { if (false == Test.isRunningTest()) return; Integer i = 0; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; } }