public with sharing class QISPDFController { public QIS_Report__c qr { get; private set; } public User usr { get; private set; } public Boolean inGuarantee { get; private set; } public string staticResource { get; private set; } public string staticResourceFile { get; private set; } // HWAG-BC68W3 故障发生日为空时, 它为真 start public Boolean outOfGuarantee { get; private set; } // HWAG-BC68W3 故障发生日为空时, 它为真 end public string Photo_1_Text { get; private set; } public string Photo_2_Text { get; private set; } public string Photo_3_Text { get; private set; } public string Photo_4_Text { get; private set; } public QISPDFController() { qr = new QIS_Report__c(); usr = new User(); inGuarantee = false; staticResource = JSON.serialize(PIHelper.getPIIntegrationInfo('QIS_Report__c')); staticResourceFile = JSON.serialize(PIHelper.getPIIntegrationInfo('Document')); } public void init() { String id = ApexPages.currentPage().getParameters().get('id'); Schema.DescribeSobjectResult d = QIS_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 += ', Hospital_Department__r.Phone, Hospital_Department__r.Parent.Parent.State_Master__r.Name, Hospital_Department__r.Parent.Parent.City_Master__r.Name, Hospital__r.Name' + ', RC__r.Alias__c, RC_manager__r.Alias__c, OSH_Manager__r.Alias__c, OSH_Manager__r.BuchangApprovalManager__c, OSH_Manager__r.BuchangApprovalManager__r.Alias__c'; soql += ' from QIS_Report__c where Id = \'' + id + '\''; List qrList = Database.query(soql); if (qrList.size() > 0) { qr = qrList[0]; // TODO 一つのSOQLで出来る? usr = [select Name, Manager.Name, fen_corp_name__c, Salesdepartment__c from User where Id = :qr.OwnerId]; // HWAG-BC68W3 /* if (qr.QIS_Submit_day__c >= Date.today()) { */ if (qr.Faliour_date__c == null) { outOfGuarantee = true; } if ( qr.Faliour_date__c !=null && qr.guarantee_period_formula__c >= qr.Faliour_date__c) { //HWAG-BC68W3 end inGuarantee = true; } Photo_1_Text = getImageByUrl(qr.Photo_1_Text__c); Photo_2_Text = getImageByUrl(qr.Photo_2_Text__c); Photo_3_Text = getImageByUrl(qr.Photo_3_Text__c); Photo_4_Text = getImageByUrl(qr.Photo_4_Text__c); } } public static String getImageByUrl(string urlStr){ //urlStr = 'https://ocsm--stagefull--c.documentforce.com/servlet/rtaImage?eid=a0f1000000cS7qH&feoid=00N10000006P4rz&refid=0EM10000002WIgq'; // 'https://ocsm--stagefull.my.salesforce.com/services/data/v51.0/sobjects/QIS_Report__c/a0f1000000IJay1/richTextImageFields/Photo_1__c/0EM100000017hLN System.debug('urlStr='+urlStr); Id eid = getUrlParameters(urlStr,'eid'); if (string.isBlank(eid)) { System.debug('eid not found'); return null; } Id feoid = getUrlParameters(urlStr,'feoid'); if (string.isBlank(feoid)) { System.debug('feoid not found'); return null; } Id refid = getUrlParameters(urlStr,'refid'); if (string.isBlank(refid)) { System.debug('refid not found'); return null; } string body = MetaDataUtility.ToolingQuery('select id,FullName from CustomField where id=\''+feoid+'\''); if(string.isBlank(body)){ System.debug('body is blank'); return null; } string sobjecttype = eid.getSobjectType().getDescribe().getName(); List lo = (List)(((Map)JSON.deserializeUntyped(body)).get('records')); Map mso = (Map)(lo[0]); string f = ((string)mso.get('FullName')).replace(sobjecttype+'.', ''); String urlForClassic = 'https://'+System.URL.getOrgDomainUrl().getHost()+'/services/data/v53.0/sobjects/'+sobjecttype+'/'+eid+'/richTextImageFields/'+f+'/'+refid; system.debug('URL Post:'+urlForClassic); HttpResponse resp = null; HttpRequest req = new HttpRequest(); req.setMethod('GET'); req.setEndpoint(urlForClassic); req.setHeader('Authorization', 'Bearer ' + UserInfo.getsessionid()); Http client = new Http(); resp = client.send(req); system.debug('getStatusCode:'+resp.getStatusCode()); return 'data:image/png;base64,' + EncodingUtil.base64Encode(resp.getBodyAsBlob()); } public static String getUrlParameters(string url,string para){ //string url = 'https://sfpi-mebg-test.olympuschina.com:8081/stg/api/file/convert?from=https%3A%2F%2Focsm--stagefull--c.visualforce.com%2Fapex%2FQISPDF%3Fid%3Da0f1000000cS7qH&fileName=QISPDF'; if (string.isBlank(url) || string.isBlank(para)) { return null; } Pattern p = Pattern.compile('(?<=' + para + '=)[^&]*'); Matcher m = p.matcher(url); if (m.find()) { return m.group(); }else { system.debug('no found '+para+' in url='+url); return null; } } }