From e53fdfdd78538a21cddd45b9d3faa1a7e9e37a0a Mon Sep 17 00:00:00 2001
From: 19626 <1962676589@qq.com>
Date: 星期五, 21 七月 2023 13:36:24 +0800
Subject: [PATCH] 修改附件

---
 force-app/main/default/classes/InsReportPDFOuterController.cls |  113 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 87 insertions(+), 26 deletions(-)

diff --git a/force-app/main/default/classes/InsReportPDFOuterController.cls b/force-app/main/default/classes/InsReportPDFOuterController.cls
index cdde55d..6cd918f 100644
--- a/force-app/main/default/classes/InsReportPDFOuterController.cls
+++ b/force-app/main/default/classes/InsReportPDFOuterController.cls
@@ -15,46 +15,107 @@
     }
     
     public void saveSign() {
-        // Sign鐢诲儚銇竴銇ゃ仹銇勩亜銇樸們銇亜锛烡elete鈬扞nsert銇仚銈�
-        List<Attachment> atts = [select Id from Attachment where ParentId = :ir.Id and Name = :(ir.Name + '_Sign')];
-        if (atts.size() > 0) delete atts;
+        // // Sign鐢诲儚銇竴銇ゃ仹銇勩亜銇樸們銇亜锛烡elete鈬扞nsert銇仚銈�
+        // List<Attachment> 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';
+        // 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 = '<img src="/servlet/servlet.FileDownload?file=' + ac.Id + '"/>';
+        //     ir.SignUrl__c = '/servlet/servlet.FileDownload?file=' + ac.Id;
+        //     ir.Status__c = '宸茬瀛�';
+        //     update ir;
+        // } catch (Exception ex) {
+        //     ApexPages.addMessages(ex);
+        //     //return;
+        // }
+
+        List<ContentDocumentLink> links = [select ContentDocumentId from ContentDocumentLink where LinkedEntityId =: ir.Id];
+        if (links.size() > 0) {
+            List<Id> idList = new List<Id>();
+            for (ContentDocumentLink link : links) {
+                idList.add(link.ContentDocumentId);
+            }
+            List<ContentDocument> 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';
+        version.VersionData = EncodingUtil.base64Decode(this.signStr.removeStart('data:image/png;base64,'));
+        version.PathOnClient = ir.Name + '_Sign.jpg';
+        version.ContentLocation = 's';
         try {
-            insert ac;
-            //TODO status銆屻偟銈ゃ兂娓堛伩銆嶃伀銇欍倠
-            ir.ResponsiblePerson_Sign__c = '<img src="/servlet/servlet.FileDownload?file=' + ac.Id + '"/>';
-            ir.SignUrl__c = '/servlet/servlet.FileDownload?file=' + ac.Id;
+            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 = '<img src="/lightning/r/ContentDocument/'+ link.ContentDocumentId + '/view"/>';
+            // ir.SignUrl__c = '/lightning/r/ContentDocument/'+ link.ContentDocumentId + '/view';
+            ir.ResponsiblePerson_Sign__c = '<img src="/sfc/servlet.shepherd/version/download/'+ version.Id + '"/>';
+            ir.SignUrl__c = '/sfc/servlet.shepherd/version/download/'+ version.Id;
             ir.Status__c = '宸茬瀛�';
             update ir;
-        } catch (Exception ex) {
-            ApexPages.addMessages(ex);
-            //return;
+        } catch (Exception e) {
+            ApexPages.addMessages(e);
         }
     }
     
     public void savePDF() {
+        // String pdfPageURL = '/apex/InsReportPDF?id=' + ir.Id;
+        // PageReference pageRef = new PageReference(pdfPageURL);
+
+        // Attachment att = new Attachment();
+        // // TODO TestMethod銇痝etContent銈掋偟銉濄兗銉堛仐銇亜
+        // 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);
-
-        Attachment att = new Attachment();
-        // TODO TestMethod銇痝etContent銈掋偟銉濄兗銉堛仐銇亜
+        ContentVersion version = new ContentVersion();
         if (!Test.isRunningTest()) {
-            att.body = pageRef.getContent();
+            version.VersionData = pageRef.getContent();
         } else {
-            att.body = EncodingUtil.base64Decode('test');
+            version.VersionData = EncodingUtil.base64Decode('test');
         }
-        att.Name = ir.Name + '_鐐规鎶ュ憡涔' + String.valueOf(Datetime.now()) + '.pdf';
-        att.ParentId = ir.Id;
+        // 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 att;
-        } catch (Exception ex) {
-            ApexPages.addMessages(ex);
-            //return;
+            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);
         }
     }
     

--
Gitblit v1.9.1