public with sharing class BatchSelectRepairPageController { public RetrievalData RevalInfo { get; set; } public List RAInfoList { get; set; } public List RepairList { get; set; } public List repairIdList{ get; set; } public List StatusItems1 { get; private set; } public List StatusItems { get; private set; } public List SiteRepairItems { get; private set; } public String pdfURL { get; private set; } public Integer RACount { get { return RAInfoList == null ? 0 : RAInfoList.size(); } } public BatchSelectRepairPageController() { StatusItems = new List(); StatusItems.add(new SelectOption('','--无--')); StatusItems.add(new SelectOption('00.申请完毕','00.申请完毕')); StatusItems.add(new SelectOption('01.分公司受理完毕','01.分公司受理完毕')); StatusItems.add(new SelectOption('02.RC受理完毕','02.RC受理完毕')); StatusItems.add(new SelectOption('03.报价检查结束','03.报价检查结束')); StatusItems.add(new SelectOption('04.报价跟进中','04.报价跟进中')); StatusItems.add(new SelectOption('05.报价同意完备','05.报价同意完备')); StatusItems.add(new SelectOption('06.零件齐备','06.零件齐备')); StatusItems.add(new SelectOption('07.修理開始','07.修理開始')); StatusItems.add(new SelectOption('08.修理预计完成','08.修理预计完成')); StatusItems.add(new SelectOption('09.修理完成','09.修理完成')); StatusItems.add(new SelectOption('10.最终检查完成','10.最终检查完成')); StatusItems.add(new SelectOption('11.RC修理品已返送','11.RC修理品已返送')); StatusItems.add(new SelectOption('12.发票已发送','12.发票已发送')); StatusItems.add(new SelectOption('13.已返送到用户','13.已返送到用户')); StatusItems.add(new SelectOption('14.收到验收单','14.收到验收单')); StatusItems.add(new SelectOption('15.验收单签收复核通过','15.验收单签收复核通过')); StatusItems.add(new SelectOption('16.部分付款','16.部分付款')); StatusItems.add(new SelectOption('16.完毕','16.完毕')); StatusItems.add(new SelectOption('17.付款完毕','17.付款完毕')); StatusItems.add(new SelectOption('00.取消','00.取消')); StatusItems.add(new SelectOption('00.删除','00.删除')); StatusItems.add(new SelectOption('00.关闭','00.关闭')); StatusItems1 = new List(); StatusItems1.add(new SelectOption('','--无--')); StatusItems1.add(new SelectOption('0.申请完毕','0.申请完毕')); StatusItems1.add(new SelectOption('2.维修报价阶段','2.维修报价阶段')); StatusItems1.add(new SelectOption('3.维修阶段','3.维修阶段')); StatusItems1.add(new SelectOption('4.修理品返送阶段','4.修理品返送阶段')); StatusItems1.add(new SelectOption('5.完毕','5.完毕')); StatusItems1.add(new SelectOption('0.删除','0.删除')); StatusItems1.add(new SelectOption('0.取消','0.取消')); SiteRepairItems = new List(); SiteRepairItems.add(new SelectOption('','--无--')); SiteRepairItems.add(new SelectOption('RC修理','RC修理')); SiteRepairItems.add(new SelectOption('直送SORC修理','直送SORC修理')); SiteRepairItems.add(new SelectOption('直送OGZ修理','直送OGZ修理')); SiteRepairItems.add(new SelectOption('办事处修理','办事处修理')); SiteRepairItems.add(new SelectOption('现场修理','现场修理')); } public void init(){ RevalInfo = new RetrievalData(); } // public List getworkLocationSelect() { // List workLocationSelect = new List(); // workLocationSelect.add(new SelectOption('','--无--')); // workLocationSelect.add(new SelectOption('北京办事处','北京办事处')); // workLocationSelect.add(new SelectOption('天津办事处','天津办事处')); // workLocationSelect.add(new SelectOption('河北办事处','河北办事处')); // workLocationSelect.add(new SelectOption('济南办事处','济南办事处')); // workLocationSelect.add(new SelectOption('青岛办事处','青岛办事处')); // workLocationSelect.add(new SelectOption('内蒙办事处','内蒙办事处')); // workLocationSelect.add(new SelectOption('黑龙江办事处','黑龙江办事处')); // workLocationSelect.add(new SelectOption('吉林办事处','吉林办事处')); // workLocationSelect.add(new SelectOption('沈阳办事处','沈阳办事处')); // workLocationSelect.add(new SelectOption('大连办事处','大连办事处')); // workLocationSelect.add(new SelectOption('陕西办事处','陕西办事处')); // workLocationSelect.add(new SelectOption('青海办事处','青海办事处')); // workLocationSelect.add(new SelectOption('宁夏办事处','宁夏办事处')); // workLocationSelect.add(new SelectOption('甘肃办事处','甘肃办事处')); // workLocationSelect.add(new SelectOption('新疆办事处','新疆办事处')); // workLocationSelect.add(new SelectOption('山西办事处','山西办事处')); // workLocationSelect.add(new SelectOption('河南办事处','河南办事处')); // workLocationSelect.add(new SelectOption('上海办事处','上海办事处')); // workLocationSelect.add(new SelectOption('江苏办事处','江苏办事处')); // workLocationSelect.add(new SelectOption('江西办事处','江西办事处')); // workLocationSelect.add(new SelectOption('浙江办事处','浙江办事处')); // workLocationSelect.add(new SelectOption('安徽办事处','安徽办事处')); // workLocationSelect.add(new SelectOption('福建办事处','福建办事处')); // workLocationSelect.add(new SelectOption('广东办事处','广东办事处')); // workLocationSelect.add(new SelectOption('深圳办事处','深圳办事处')); // workLocationSelect.add(new SelectOption('湖北办事处','湖北办事处')); // workLocationSelect.add(new SelectOption('湖南办事处','湖南办事处')); // workLocationSelect.add(new SelectOption('云南办事处','云南办事处')); // workLocationSelect.add(new SelectOption('贵州办事处','贵州办事处')); // workLocationSelect.add(new SelectOption('四川办事处','四川办事处')); // workLocationSelect.add(new SelectOption('重庆办事处','重庆办事处')); // workLocationSelect.add(new SelectOption('杭州办事处','杭州办事处')); // workLocationSelect.add(new SelectOption('杭州共通办事处','杭州共通办事处')); // workLocationSelect.add(new SelectOption('西安办事处','西安办事处')); // workLocationSelect.add(new SelectOption('西安共通办事处','西安共通办事处')); // workLocationSelect.add(new SelectOption('共通办事处','共通办事处')); // workLocationSelect.add(new SelectOption('成都办事处','成都办事处')); // workLocationSelect.add(new SelectOption('成都共通办事处','成都共通办事处')); // workLocationSelect.add(new SelectOption('广州办事处','广州办事处')); // return workLocationSelect; // } public PageReference RetrievalBtn() { RepairList = new List(); RAInfoList = new List(); if(String.isBlank(RevalInfo.Status1) && String.isBlank(RevalInfo.Status2) && String.isBlank(RevalInfo.RepairName) && String.isBlank(RevalInfo.SAPRepairNo) && String.isBlank(RevalInfo.SerialNumber) && String.isBlank(RevalInfo.repair.Incharge_Staff__c) && String.isBlank(RevalInfo.onSiteRepair) && String.isBlank(String.valueOf(RevalInfo.repair.Aware_date__c)) && String.isBlank(String.valueOf(RevalInfo.repair.Aware_date2__c)) && String.isBlank(RevalInfo.workLocationSelect) && String.isBlank(RevalInfo.State_Hospital)){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '请至少添加一个检索条件!')); return null; } String sql = 'select Id, Name, SAP_Service_Repair_No__c, Status1__c, Status2__c, Delivered_Product__c, SerialNumber__c, '; sql += 'HP_Name__c, State_Hospital__c, Incharge_Staff__c, FSE_ApplyForRepair_Day__c, work_location_select__c, On_site_repair__c,'; sql += 'Number_of_EffectiveContract__c, NewProductGuaranteeObject__c from Repair__c where Id != null '; if(String.isNotBlank(RevalInfo.Status2)){ sql += ' and Status2__c = \'' + RevalInfo.Status2 + '\''; } if(String.isNotBlank(RevalInfo.Status1)){ sql += ' and Status1__c = \'' + RevalInfo.Status1 + '\''; } if(String.isNotBlank(RevalInfo.HospitalName)){ sql += ' and HP_Name__c like \'%' + RevalInfo.HospitalName.trim() + '%\''; } if(String.isNotBlank(RevalInfo.RepairName)){ System.debug(LoggingLevel.INFO, '***RevalInfo.RepairName.contains(): ' + RevalInfo.RepairName.contains(' ')); String splitStr = null; if(RevalInfo.RepairName.contains(' ')){ splitStr = ' '; }else if(RevalInfo.RepairName.contains(',')){ splitStr = ','; } if(splitStr != null && RevalInfo.RepairName.contains(splitStr)){ sql += ' and ('; list nameList = RevalInfo.RepairName.split(splitStr); for(String name: nameList){ sql += 'Name like \'%' + name + '%\' or '; } sql = sql.removeEnd('or '); sql += ')'; }else{ sql += ' and Name like \'%' + RevalInfo.RepairName.trim() + '%\''; } System.debug(LoggingLevel.INFO, '*** sql: ' + sql); } if(String.isNotBlank(RevalInfo.SAPRepairNo)){ System.debug(LoggingLevel.INFO, '***RevalInfo.SAPRepairNo.contains(): ' + RevalInfo.SAPRepairNo.contains(' ')); String splitStr = null; if(RevalInfo.SAPRepairNo.contains(' ')){ splitStr = ' '; }else if(RevalInfo.SAPRepairNo.contains(',')){ splitStr = ','; } if(splitStr != null && RevalInfo.SAPRepairNo.contains(splitStr)){ sql += ' and ('; list noList = RevalInfo.SAPRepairNo.split(splitStr); for(String no: noList){ sql += 'SAP_Service_Repair_No__c like \'%' + no + '%\' or '; } sql = sql.removeEnd('or '); sql += ')'; }else{ sql += ' and SAP_Service_Repair_No__c like \'%' + RevalInfo.SAPRepairNo.trim() + '%\''; } System.debug(LoggingLevel.INFO, '*** sql: ' + sql); } if(String.isNotBlank(RevalInfo.SerialNumber)){ List SerialNumberList = new List(); if(RevalInfo.SerialNumber.indexOf(',') != -1){ SerialNumberList = RevalInfo.SerialNumber.split(','); } System.debug('SerialNumberList1:' + SerialNumberList); // 支持模糊查询多个,文本框输入用英文半角逗号分隔 if(SerialNumberList.size() > 0){ sql += ' and (SerialNumber__c like \'%'; Integer i = 0; for(String SerialNumber : SerialNumberList){ if(i == 0){ sql += SerialNumber.trim() + '%\''; }else{ sql += 'or SerialNumber__c like \'%' + SerialNumber.trim() + '%\''; } i++; } sql += ')'; } else{ sql += ' and SerialNumber__c like \'%' + RevalInfo.SerialNumber.trim() + '%\''; } } if(String.isNotBlank(RevalInfo.repair.Incharge_Staff__c)){ sql += ' and Incharge_Staff__c = \'' + RevalInfo.repair.Incharge_Staff__c + '\''; } if(String.isNotBlank(String.valueof(RevalInfo.repair.Aware_date__c))&&String.isNotBlank(String.valueof(RevalInfo.repair.Aware_date2__c))){ String day = String.valueof(RevalInfo.repair.Aware_date__c); String day2 = String.valueof(RevalInfo.repair.Aware_date2__c); day = day.substring(0,10); day2 = day2.substring(0,10); sql += ' and FSE_ApplyForRepair_Day__c >= ' + day + 'and FSE_ApplyForRepair_Day__c <=' +day2; } if(String.isNotBlank(RevalInfo.onSiteRepair)){ sql += ' and On_site_repair__c = \'' + RevalInfo.onSiteRepair + '\''; } if(String.isNotBlank(RevalInfo.workLocationSelect)){ List workLocationSelectList = new List(); if(RevalInfo.workLocationSelect.indexOf(',') != -1){ workLocationSelectList = RevalInfo.workLocationSelect.split(','); } System.debug('workLocationSelectList1:' + workLocationSelectList); if(workLocationSelectList.size() > 0){ sql += ' and (work_location_select__c like \'%'; Integer i = 0; for(String workLocationSelect : workLocationSelectList){ if(i == 0){ sql += workLocationSelect.trim() + '%\''; }else{ sql += 'or work_location_select__c like \'%' + workLocationSelect.trim() + '%\''; } i++; } sql += ')'; } else{ sql += ' and work_location_select__c like \'%' + RevalInfo.workLocationSelect.trim() + '%\''; } } if(String.isNotBlank(RevalInfo.State_Hospital)){ sql += ' and State_Hospital__c like \'%' + RevalInfo.State_Hospital.trim() + '%\''; } sql += 'and Status1__c not in(\'0.删除\',\'0.取消\') limit 200'; System.debug('sql1:' + sql); if(String.isNotBlank(sql)){ RepairList = Database.query(sql); } if(RepairList.size() == 200){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '检索数据太多,请缩小检索范围!')); } if(RepairList.size() <= 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '没检索到任何修理')); return null; } for(Repair__c ra : RepairList){ RepairData raData = new RepairData(ra); RAInfoList.add(raData); } return null; } public PageReference showPDF() { System.debug(LoggingLevel.INFO, '*** joinshoPDF: '); repairIdList = new List(); RepairList = new List(); String url = '='; System.debug('RAInfoList:' + RAInfoList); if(RAInfoList == null || RAInfoList.isEmpty()){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '请先检索修理')); return null; } for(RepairData rd : RAInfoList) { System.debug(LoggingLevel.INFO, '*** rd: ' + rd); if(rd.IFCheck){ repairIdList.add(rd.repair.Id); RepairList.add(rd.repair); } } System.debug(LoggingLevel.INFO, '***repairIdList : ' + repairIdList); System.debug(LoggingLevel.INFO, '***RepairList : ' + RepairList); if(repairIdList.size() > 0){ if(repairIdList.size() <= 50){ if(RepairList.size() > 0){ System.debug(LoggingLevel.INFO, '*** if size>0 generateAttachment: '); generateAttachment(RepairList); } for(String Id : repairIdList){ url += Id + '='; } url = url.substring(0, url.lastIndexOf('=')); // PageReference pageRef = new PageReference('/apex/MaintenanceCommissionPDF?id' + url); // pageRef.setRedirect(true); // return pageRef; if(isSandbox()){ pdfURL = 'https://ocsm--stagefull--c.visualforce.com/apex/MaintenanceCommissionPDF?id' + url; } else{ pdfURL = 'https://ocsm.my.salesforce.com/apex/MaintenanceCommissionPDF?id' + url; } return null; } else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '多单打印最大数量为50,请选择少于50个修理!')); return null; } } else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '请至少选择一个修理')); return null; } } // 生成pdf添加到对应的修理中 public static PageReference generateAttachment(List repList){ System.debug(LoggingLevel.INFO, '*** generateAttachment: '); // PageReference pdfPage; // List attachments = new List(); // List attachmentNameList = new List(); // List isGeneratedPDFList = new List(); // //删除已存在的附件,生成新的附件 // for(Repair__c re : repList){ // attachmentNameList.add(re.name + '_' + 'MaintenanceCommission.pdf'); // } // isGeneratedPDFList = [select id from Attachment where name IN:attachmentNameList]; // System.debug(LoggingLevel.INFO, '*** isGeneratedPDFList: ' + isGeneratedPDFList); // if(isGeneratedPDFList.size() > 0){ // delete isGeneratedPDFList; // } BatchSelectRepairPDFDelete pdf = new BatchSelectRepairPDFDelete(); pdf.deletePDF(repList); pdf.createPDF(repList); // for(Repair__c re : repList){ // pdfPage = new PageReference('/apex/MaintenanceCommissionPDF?id=' + re.Id); // Blob pdfBody; // if(Test.isRunningTest()) { // pdfBody = blob.valueOf('Unit.Test'); // } else { // pdfBody = pdfPage.getContentAsPDF(); // } // Attachment attach = new Attachment(); // attach.Body = pdfBody; // attach.Name = re.name + '_' + 'MaintenanceCommission.pdf'; // attach.ParentId = re.id; // attachments.add(attach); // } // System.debug(LoggingLevel.INFO, '*** attachments: ' + attachments); // insert attachments; return null; } // 判断是否是测试环境 public Boolean isSandbox() { return [SELECT IsSandbox FROM Organization LIMIT 1].IsSandbox; } public class RetrievalData { public String Status1{ get; set; } public String Status2{ get; set; } public String RepairName{ get; set; } public String SAPRepairNo{ get; set; } public String SerialNumber{ get; set; } public String onSiteRepair{ get; set; } public String workLocationSelect{ get; set; } public String State_Hospital{ get; set; } public String HospitalName{ get; set; } public Repair__c repair{ get; set; } public RetrievalData(){ repair = new Repair__c(); } } public class RepairData { public Boolean IFCheck { get; set; } public Repair__c repair { get; set; } public RepairData(Repair__c RepairInfo){ IFCheck = null; repair = RepairInfo; } } }