19626
2023-09-09 e14d6d0619330cad423f06493e3aa2371faa2a8f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
trigger ContentDocumentTrigger on ContentDocument (before delete) {
    if((!Test.isRunningTest())&&UserInfo.getUserId()==System.Label.ByPassTrigger){
        return;
    }
    System.debug('enter ContentDocumentTrigger');
    List<String> rentaldelIds = new List<String>();
    List<String> attdelIds = new List<String>();
    // LHJ CHAN-BCLD4P 20190618 Start
    List<String> specDelIds = new List<String>();
    // LHJ CHAN-BCLD4P 20190618 End
 
    List<String> OpporFileIds = new List<String>();
    Map<String,String> OpporFileUndeleteMap = new Map<String,String>();
    List<String> DeleteReIds = new List<String>();
    Map<String,String> OppordeleteReUserMap = new Map<String,String>();
    Map<String,Datetime> OppordeleteReTimeMap = new Map<String,Datetime>();
 
    List<String> oFOrderIds = new List<String>();
    Map<String,Boolean> oFOrderIdMap = new Map<String,Boolean>();
 
    // sx 20230210start 备品借出申请故障报告附件提取
    List<String> rentaldeleteApplyFaultIds = new List<String>();
    Map<String,List<Id>> deleteImages = new Map<String,List<Id>>();
    // sx 20230210end 备品借出申请故障报告附件提取
 
 
    //deloitte-zhj 发票附件删除 20230901 start
    String invoiceStart = System.Label.invoiceStart;
    List<String> rentaldelIdsZhj = new List<String>();
    List<String> attdelIdsZhj = new List<String>();
 
    if (Trigger.isBefore && Trigger.isDelete) {
        for (ContentDocument cd : Trigger.old) {
            System.debug('cd.Id = ' + cd.Id);
            List<ContentDocumentLink> cdlList = [SELECT id, LinkedEntityId FROM ContentDocumentLink WHERE ContentDocumentId = :cd.Id];
            System.debug('cdlList = ' + cdlList);
            System.debug('cd.Id = ' + cd.Id);
            for (ContentDocumentLink cdl : cdlList) {
                if (String.valueOf(cdl.LinkedEntityId).startsWith(invoiceStart)) {
                    System.debug('String.valueOf(cdl.LinkedEntityId).startsWith(invoiceStart)');
                    rentaldelIdsZhj.add(cdl.LinkedEntityId);
                    attdelIdsZhj.add(cd.Id);
                }
            }
        }
    }
    if (rentaldelIdsZhj.size() > 0) {
        System.debug('rentaldelIdsZhj = ' + rentaldelIdsZhj);
        System.debug('attdelIdsZhj = ' + attdelIdsZhj);
        List<Consumable_accessories_invoice__c> rentaldelList = new List<Consumable_accessories_invoice__c>();
        for (Consumable_accessories_invoice__c ra : [
            SELECT Id
            FROM Consumable_accessories_invoice__c
            WHERE Invoice_code__c IN :rentaldelIdsZhj AND Attachment_ID__c IN :attdelIdsZhj
        ]) {
            rentaldelList.add(ra);
        }
        System.debug('rentaldelList = ' + rentaldelList);
        ControllerUtil.delConsumableAccessoriesInvoiceSet(rentaldelList);
    }
    //deloitte-zhj 发票附件删除 20230901 end
 
    //CHAN-BCNCRB ---XHL----End-----
   
    if (Trigger.isBefore && Trigger.isDelete) {
        // List<Attachment> attDeleteList = new List<Attachment>();
        List<ContentDocumentLink> conDeleteList = new List<ContentDocumentLink>();
        List<Id> idList = new List<Id>();
        for (ContentDocument doc : Trigger.old) {
            idList.add(doc.Id);
        }
        List<ContentDocumentLink> link = [select LinkedEntityId from ContentDocumentLink where ContentDocumentId in: idList limit 1];
        List<ContentVersion> version = [select Id from ContentVersion where ContentDocumentId in: idList];
        for (ContentDocument doc : Trigger.old) {
            //if (att.Name.toUpperCase() == '合同书.PDF' && String.valueOf(att.ParentId).startsWith('a0t')) {
            // 添付した契約書のファイル名は指定できない
            if (String.valueOf(link[0].LinkedEntityId).startsWith('a2K')) {
                rentaldelIds.add(link[0].LinkedEntityId);
                attdelIds.add(version[0].Id);
            }
            if(String.valueOf(link[0].LinkedEntityId).startsWith(System.Label.Oppor_sepKey)){
                OpporFileIds.add(link[0].LinkedEntityId);
            }
            // LHJ CHAN-BCLD4P 20190618 Start
            if(String.valueOf(link[0].LinkedEntityId).startsWith(System.Label.OppSpecialApply)){
                specDelIds.add(link[0].LinkedEntityId);
            }
            // LHJ CHAN-BCLD4P 20190618 End
            if(String.valueOf(link[0].LinkedEntityId).startsWith('a3Z')){
                oFOrderIds.add(link[0].LinkedEntityId);
                oFOrderIdMap.put(link[0].LinkedEntityId,false);
            }
            //2023-2-10  sx备品 备品检测分析报告 start
            Id cid = link[0].LinkedEntityId;
            String parentLabel = cid.getSObjectType().getDescribe().getName();
            if(parentLabel.equals('Rental_Apply_Fault__c')){
                rentaldeleteApplyFaultIds.add(link[0].LinkedEntityId);
                conDeleteList.add(link[0]);
                if(deleteImages.containskey(version[0].Id)){
                    deleteImages.get(link[0].LinkedEntityId).add(version[0].Id);
                }else{
                    List<Id> temp = new List<Id>();
                    temp.add(version[0].Id);
                    deleteImages.put(link[0].LinkedEntityId,temp);
                }
            }
            //2023-2-10  sx备品 备品检测分析报告 end
        }
        //2023-2-10  sx备品 备品检测分析报告 start
        List<Rental_Apply_Fault__c> rafList = [SELECT Id, Name FROM Rental_Apply_Fault__c WHERE Id IN: rentaldeleteApplyFaultIds AND (status__c = '已发送' OR status__c = '已反馈')];
        for (Rental_Apply_Fault__c raf : rafList) {
            for (ContentDocumentLink link1 : conDeleteList) {
                if (link1.LinkedEntityId == raf.Id) {
                    // ContentDocument doc = [select Id from ContentDocument where Id =: link.ContentDocumentId];
                    link1.addError('非草案中的检测分析报告不允许删除已上传的故障图片');
                }
            }
        }
        //2023-2-10  sx备品 备品检测分析报告 end
    }
 
    
 
    //20221207 lt 医院审批优化 start
    //2023-2-10  sx备品 备品检测分析报告 start
 
    if(rentaldeleteApplyFaultIds.size() > 0){
        List<Rental_Apply_Fault__c> renList = [SELECT Id,AttachmentId1__c,AttachmentId2__c from Rental_Apply_Fault__c where Id in :rentaldeleteApplyFaultIds];
 
        system.debug('renList====='+renList);
        for(Rental_Apply_Fault__c ren : renList){
            if(deleteImages.containskey(ren.Id)){
 
                if(deleteImages.get(ren.Id).contains(ren.AttachmentId1__c)){
                    ren.AttachmentId1__c = '';
                }
                if(deleteImages.get(ren.Id).contains(ren.AttachmentId2__c)){
                    ren.AttachmentId2__c = '';
                }
            }
        }
        system.debug('renList====='+renList);
        UPDATE renList;
    }
    //2023-2-10  sx备品 备品检测分析报告 end
 
 
    if (rentaldelIds.size() > 0) {
        List<Consumable_accessories_invoice__c> rentaldelList = new List<Consumable_accessories_invoice__c>();
        for (Consumable_accessories_invoice__c ra : [select Id from Consumable_accessories_invoice__c where Invoice_code__c in :rentaldelIds and Attachment_ID__c in :attdelIds]) {
            rentaldelList.add(ra);
        }
        ControllerUtil.delConsumableAccessoriesInvoiceSet(rentaldelList);
    }
    
    
 
    if(OpporFileIds.size()>0){
        List<Opportunity_File__c> OpporList = [select id,Last_upload_time__c,
                                                            Is_Locked__c,
                                                            Last_upload_user__c,
                                                            Stock_apply_time__c
                                                        from Opportunity_File__c 
                                                        where id 
                                                        in:OpporFileIds ];
        if(OpporList.size()>0){
            for(Opportunity_File__c ofc : OpporList){
                if(!ofc.Is_Locked__c){
                    ofc.Last_upload_user__c = UserInfo.getUserId();
                    ofc.Last_upload_time__c = System.now();
                    System.debug(ofc+'23333');
                    update ofc;
                }else{
                    
                    OpporFileUndeleteMap.put(ofc.id,ofc.id);
                    System.debug(ofc+'23333444444');
                }
            }
        }
    }
    System.debug(Trigger.isDelete+'Trigger.isDelete');
    System.debug(Trigger.isBefore+'Trigger.isBefore');
   
 
 
    if(Trigger.isDelete && Trigger.isBefore){
        List<Id> idList = new List<Id>();
        for(ContentDocument doc : Trigger.old){
            idList.add(doc.Id);
        }
        List<ContentDocumentLink> link = [select LinkedEntityId from ContentDocumentLink where ContentDocumentId in: idList];
        for(ContentDocument doc : Trigger.old){
            if(OpporFileUndeleteMap.containsKey(link[0].LinkedEntityId)){
                doc.addError('备货已审批,不可删除附件');
                return;
            }else{
            }
        }
    }
    if(Trigger.isDelete && Trigger.isAfter){
        List<Id> idList = new List<Id>();
        for(ContentDocument doc : Trigger.old){
            idList.add(doc.Id);
        }
        List<ContentDocumentLink> link = [select LinkedEntityId from ContentDocumentLink where ContentDocumentId in: idList];
        for(ContentDocument doc : Trigger.old){
            // List<ContentDocumentLink> link = [select LinkedEntityId from ContentDocumentLink where ContentDocumentId =: doc.Id];
            if(OpporFileUndeleteMap.containsKey(link[0].LinkedEntityId)){
                link[0].addError('备货已审批,不可删除附件');
                return;
            }else{
                DeleteReIds.add(link[0].LinkedEntityId);
            }
        }
    }
    
 
    // List<Attachment> atcList = [select id,ParentId,createddate,createdbyid from Attachment where ParentId in:DeleteReIds];
    if (DeleteReIds.size() > 0) {
        List<ContentDocumentLink> linkList = [select ContentDocumentId from ContentDocumentLink where LinkedEntityId =:DeleteReIds];
        List<Id> idList = new List<Id>();
        for (ContentDocumentLink link : linkList) {
            idList.add(link.ContentDocumentId);
        }
        List<ContentDocument> docList = [select Id,ArchivedDate,ArchivedById from ContentDocument where Id =: idList];
        System.debug(DeleteReIds+'222222222222');
        if(docList.size()>0){
            for(String ids : DeleteReIds){
                for(ContentDocument doc : docList){
                    if(OppordeleteReTimeMap.containsKey(ids)){
                        if(doc.ArchivedDate > OppordeleteReTimeMap.get(ids)){
                            OppordeleteReTimeMap.put(ids,doc.ArchivedDate);
                            OppordeleteReUserMap.put(ids,doc.ArchivedById);
                        }else{
                            continue;
                        }
                    }else{
                        OppordeleteReTimeMap.put(ids,doc.ArchivedDate);
                        OppordeleteReUserMap.put(ids,doc.ArchivedById);
                    }
                }
            }
 
 
            List<Opportunity_File__c> reDateList = [select id,Last_upload_time__c,
                                                                    Is_Locked__c,
                                                                    Last_upload_user__c
                                                                from Opportunity_File__c 
                                                                where id 
                                                                in:DeleteReIds ];
            if(reDateList.size()>0){
                for(Opportunity_File__c ofc : reDateList){
                    ofc.Last_upload_time__c = OppordeleteReTimeMap.get(ofc.id);
                    ofc.Last_upload_user__c = OppordeleteReUserMap.get(ofc.id);
                    System.debug(ofc+'233333333');
                }
                update reDateList;
            }
        }else{
            List<Opportunity_File__c> reDateList = [select id,Last_upload_time__c,
                                                                    Is_Locked__c,
                                                                    Last_upload_user__c
                                                                from Opportunity_File__c 
                                                                where id 
                                                                in:DeleteReIds ];
            if(reDateList.size()>0){
                for(Opportunity_File__c ofc : reDateList){
                    ofc.Last_upload_time__c = null;
                    ofc.Last_upload_user__c = null;
                }
                update reDateList;
            }
        }
    }
    
 
    if (oFOrderIdMap.size() > 0) {
 
        List<OpportunityFileOrder__c> oFOrderList = [select Id,Name,LatestUploadUser__c,LatestUploadTime__c
                                                    from OpportunityFileOrder__c 
                                                    where Id In : oFOrderIdMap.keySet()];
        if (oFOrderList.size() > 0 ) {
 
            for (OpportunityFileOrder__c oFOrder :oFOrderList) {
 
                if (oFOrderIdMap.get(oFOrder.Id)) {
                    oFOrder.LatestUploadUser__c = UserInfo.getUserId();
                    oFOrder.LatestUploadTime__c = System.now();
                } else if (oFOrderIdMap.get(oFOrder.Id) == false){
                    oFOrder.LatestUploadUser__c = null;
                    oFOrder.LatestUploadTime__c = null;
                }
            }
 
            update oFOrderList;
 
        }                                            
    }
 
}