public with sharing class InsReportPDFOuterController { public Inspection_Report__c ir { get; private set; } //add by rentx 20210913 start public String isVm {get;set;} //add by rentx 20210913 end public string signStr { get; set; } public void init() { String id = ApexPages.currentPage().getParameters().get('id'); System.debug('id>>>>>' + id); ir = this.getReportData(id); System.debug('ir>>>'); //add by rentx 20210913 start isVm = ir.Contract__c == null ? 'FALSE' : 'TRUE'; //add by rentx 20210913 end } public void saveSign() { // 20231103 Lightning文件修改 Start // // Sign画像は一つでいいじゃない?Delete⇒Insertにする // List atts = [select Id from Attachment where ParentId = :ir.Id and Name = :(ir.Name + '_Sign')]; // if (atts.size() > 0) delete atts; // Attachment ac = new Attachment(); // ac.Body = EncodingUtil.base64Decode(this.signStr.removeStart('data:image/png;base64,')); // ac.Name = ir.Name + '_Sign'; // ac.ParentId = ir.Id; // ac.ContentType = 'jpg'; // try { // insert ac; // //TODO status「サイン済み」にする // ir.ResponsiblePerson_Sign__c = ''; // ir.SignUrl__c = '/servlet/servlet.FileDownload?file=' + ac.Id; // ir.Status__c = '已签字'; // update ir; // } catch (Exception ex) { // ApexPages.addMessages(ex); // //return; // } List links = [select ContentDocumentId from ContentDocumentLink where LinkedEntityId =: ir.Id]; if (links.size() > 0) { List idList = new List(); for (ContentDocumentLink link : links) { idList.add(link.ContentDocumentId); } List cons = [select Id from ContentDocument where Id in: idList and Title =: (ir.Name + '_Sign')]; if (cons.size() > 0) { delete cons; } } ContentVersion version = new ContentVersion(); version.Title = ir.Name + '_Sign'; System.debug('image>>>>>>' + this.signStr); version.VersionData = EncodingUtil.base64Decode(this.signStr.removeStart('data:image/png;base64,')); version.PathOnClient = ir.Name + '_Sign.jpg'; version.ContentLocation = 's'; try { insert version; version = [select Id,ContentDocumentId from ContentVersion where Id =: version.Id]; ContentDocumentLink link = new ContentDocumentLink(); link.LinkedEntityId = ir.Id; link.ShareType = 'I'; link.ContentDocumentId = version.ContentDocumentId; link.Visibility = 'AllUsers'; insert link; // //TODO status「サイン済み」にする // ir.ResponsiblePerson_Sign__c = ''; // ir.SignUrl__c = '/lightning/r/ContentDocument/'+ link.ContentDocumentId + '/view'; ir.ResponsiblePerson_Sign__c = ''; ir.SignUrl__c = '/sfc/servlet.shepherd/version/download/'+ version.Id; ir.Status__c = '已签字'; System.debug('ResponsiblePerson_Sign__c>>>>>>' + ir.ResponsiblePerson_Sign__c); update ir; } catch (Exception e) { ApexPages.addMessages(e); } // 20231103 Lightning文件修改 End } public void savePDF() { // 20231103 Lightning文件修改 Start // String pdfPageURL = '/apex/InsReportPDF?id=' + ir.Id; // PageReference pageRef = new PageReference(pdfPageURL); // Attachment att = new Attachment(); // // TODO TestMethodはgetContentをサポートしない // if (!Test.isRunningTest()) { // att.body = pageRef.getContent(); // } else { // att.body = EncodingUtil.base64Decode('test'); // } // att.Name = ir.Name + '_点检报告书_' + String.valueOf(Datetime.now()) + '.pdf'; // att.ParentId = ir.Id; // try { // insert att; // } catch (Exception ex) { // ApexPages.addMessages(ex); // //return; // } String pdfPageURL = '/apex/InsReportPDF?id=' + ir.Id; PageReference pageRef = new PageReference(pdfPageURL); ContentVersion version = new ContentVersion(); if (!Test.isRunningTest()) { version.VersionData = pageRef.getContentAsPDF(); } else { version.VersionData = EncodingUtil.base64Decode('test'); } // version.Title = ir.Name + '_点检报告书_' + String.valueOf(Datetime.now()) + '.pdf'; version.Title = ir.Name + '_点检报告书_' + String.valueOf(Datetime.now()); version.ContentLocation = 's'; version.PathOnClient = ir.Name + '_点检报告书_' + String.valueOf(Datetime.now()) + '.pdf'; try { insert version; version = [select ContentDocumentId from ContentVersion where Id =: version.Id]; ContentDocumentLink link = new ContentDocumentLink(); link.LinkedEntityId = ir.Id; link.ShareType = 'I'; link.Visibility = 'AllUsers'; link.ContentDocumentId = version.ContentDocumentId; insert link; } catch (Exception e) { ApexPages.addMessages(e); // ApexPages.addMessage(e); } // 20231103 Lightning文件修改 End } private Inspection_Report__c getReportData(String id) { Schema.DescribeSobjectResult d = Inspection_Report__c.sObjectType.getDescribe(); Map fieldMap = d.fields.getMap(); String soql = 'select '; String fields = ''; for (String field : fieldMap.keySet()) { if (fields.length() > 0) { fields += ', '; } fields += field; } soql += fields; soql += ' from Inspection_Report__c where Id = \'' + id + '\''; System.debug('soql = ' + soql); return Database.query(soql); } }