buli
2022-04-14 ca54382924f5a27063eabbc5b2a81b3d44496b58
force-app/main/default/triggers/AttachmentTrigger.trigger
@@ -1,379 +1,26 @@
trigger AttachmentTrigger on Attachment (before insert,after insert,before delete,after delete) {
    List<String> rentalIds = new List<String>();
    List<String> attIds = new List<String>();
    List<String> rentaldelIds = new List<String>();
    List<String> attdelIds = new List<String>();
    List<String> rentalApplyIds = new List<String>();
    List<String> accIds = new List<String>();
    // LHJ CHAN-BCLD4P 20190618 Start
    List<String> specIds = new List<String>();
    List<String> specDelIds = new List<String>();
    // LHJ CHAN-BCLD4P 20190618 End
    // MZY SWAG-BXXBKA  2021-02-19 start
    List<String> opdIds = new List<String>();
    Map<String,String> opdMap = new Map<String,String>();
    // MZY SWAG-BXXBKA  2021-02-19 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>();
    //CHAN-BCNCRB ---XHL----Start-----
    List<String> opportunity_FileIds = new List<String>();
    List<String> opportunityFileOrderIds = new List<String>();
    List<String> oFOrderIds = new List<String>();
    Map<String,Boolean> oFOrderIdMap = new Map<String,Boolean>();
trigger AttachmentTrigger on Attachment (before insert, after insert, before update, before delete, after delete) {
    if (Trigger.isBefore && Trigger.isInsert) {
        for (Attachment att : Trigger.new) {
            if(String.valueOf(att.ParentId).startsWith(System.Label.Oppor_sepKey)){
                opportunity_FileIds.add(att.ParentId);
            }
            if(String.valueOf(att.ParentId).startsWith('a3Z')){
                opportunityFileOrderIds.add(att.ParentId);
            }
        }
        AttachmentTriggerHandler.fileCheck(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.fileCheck5(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.UploadTradeCustomerManagerFile(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
    //CHAN-BCNCRB ---XHL----End-----
    if (Trigger.isAfter && Trigger.isInsert) {
        for (Attachment att : Trigger.new) {
            //if (att.Name.toUpperCase() == '合同书.PDF' && String.valueOf(att.ParentId).startsWith('a0t')) {
            // 添付した契約書のファイル名は指定できない
            if (String.valueOf(att.ParentId).startsWith('a2K')) {
                rentalIds.add(att.ParentId);
                attIds.add(att.Id);
            }
            if (String.valueOf(att.ParentId).startsWith('a0t')) {
                rentalApplyIds.add(att.ParentId);
            }
            if (String.valueOf(att.ParentId).startsWith('001')) {
                accIds.add(att.ParentId);
            }
            if(String.valueOf(att.ParentId).startsWith(System.Label.Oppor_sepKey)){
                OpporFileIds.add(att.ParentId);
            }
            // LHJ CHAN-BCLD4P 20190618 Start
            if(String.valueOf(att.ParentId).startsWith(System.Label.OppSpecialApply)){
                specIds.add(att.ParentId);
            }
            // LHJ CHAN-BCLD4P 20190618 End
            // MZY SWAG-BXXBKA  2021-02-19 start
            if(String.valueOf(att.ParentId).startsWith('a3E')){
                opdIds.add(att.ParentId);
                opdMap.put(att.ParentId,att.Name);
             }
            // MZY SWAG-BXXBKA  2021-02-19 end
            if(String.valueOf(att.ParentId).startsWith('a3Z')){
                oFOrderIds.add(att.ParentId);
                oFOrderIdMap.put(att.ParentId,true);
            }
        }
        AttachmentTriggerHandler.uploadContract(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.AfterPassUpload(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.fileCheck4(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.AfterUploadToUserFaultInfo(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
    if (Trigger.isBefore && Trigger.isUpdate) {
        AttachmentTriggerHandler.fileCheck3(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.updateTradeCustomerManagerFile(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
    if (Trigger.isBefore && Trigger.isDelete) {
        for (Attachment att : Trigger.old) {
            //if (att.Name.toUpperCase() == '合同书.PDF' && String.valueOf(att.ParentId).startsWith('a0t')) {
            // 添付した契約書のファイル名は指定できない
            if (String.valueOf(att.ParentId).startsWith('a2K')) {
                rentaldelIds.add(att.ParentId);
                attdelIds.add(att.Id);
            }
            if(String.valueOf(att.ParentId).startsWith(System.Label.Oppor_sepKey)){
                OpporFileIds.add(att.ParentId);
            }
            // LHJ CHAN-BCLD4P 20190618 Start
            if(String.valueOf(att.ParentId).startsWith(System.Label.OppSpecialApply)){
                specDelIds.add(att.ParentId);
            }
            // LHJ CHAN-BCLD4P 20190618 End
            if(String.valueOf(att.ParentId).startsWith('a3Z')){
                oFOrderIds.add(att.ParentId);
                oFOrderIdMap.put(att.ParentId,false);
            }
        }
        AttachmentTriggerHandler.fileCheck2(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.fileCheck6(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.DeleteTradeCustomerManagerFile(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
    if (Trigger.isAfter && Trigger.isDelete) {
        for (Attachment att : Trigger.old) {
            if (String.valueOf(att.ParentId).startsWith('001')) {
                accIds.add(att.ParentId);
            }
            // LHJ CHAN-BCLD4P 20190618 Start
            if(String.valueOf(att.ParentId).startsWith(System.Label.OppSpecialApply)){
                specIds.add(att.ParentId);
            }
            // LHJ CHAN-BCLD4P 20190618 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 (rentalIds.size() > 0) {
        List<Consumable_order__c> rentalList = new List<Consumable_order__c>();
        for (Consumable_order__c ra : [select Id from Consumable_order__c where Id in :rentalIds]) {
            ra.Consumable_pdf_insert_day__c = Date.today();
            ra.Order_Attachment__c = attIds[0];
            //ra.Order_status__c = '录入完成';
            //ra.Contract_pdf_updated__c = true;
            rentalList.add(ra);
        }
        ControllerUtil.updRentalApplyList(rentalList);
    }
     if (rentalApplyIds.size() > 0) {
        List<Rental_Apply__c> rentalApplyList = new List<Rental_Apply__c>();
        for (Rental_Apply__c ra : [select Id from Rental_Apply__c where Id in :rentalApplyIds]) {
            ra.Contract_pdf_update_day__c = Date.today();
            ra.Contract_pdf_updated__c = true;
            rentalApplyList.add(ra);
        }
        ControllerUtil.updRentalApplyList(rentalApplyList);
    }
    if (accIds.size() > 0) {
        Map<String, String> attMap = new Map<String, String>();
        List<Attachment> attList = [select Id, ParentId from Attachment where ParentId = :accIds order by ParentId];
        for (Attachment att : attList) {
            attMap.put(att.ParentId, att.ParentId);
        }
        List<Account> updAccList = new List<Account>();
        for (String accid : accIds) {
            Account acc = new Account(Id = accid);
            acc.Is_upload_file__c = attMap.containsKey(accid);
            updAccList.add(acc);
        }
        if (updAccList.size() > 0) update updAccList;
    }
    // LHJ CHAN-BCLD4P 20190618 Start
    if (specIds.size() > 0) {
        Map<String, String> attMap = new Map<String, String>();
        List<Attachment> attList = [select Id, ParentId from Attachment where ParentId = :specIds order by ParentId];
        for (Attachment att : attList) {
            attMap.put(att.ParentId, att.ParentId);
        }
        List<OpportunitySpecialApply__c> updSpecList = new List<OpportunitySpecialApply__c>();
        for (String specId : specIds) {
            OpportunitySpecialApply__c spec = new OpportunitySpecialApply__c(Id = specId);
            spec.Is_upload_file__c = attMap.containsKey(specId);
            updSpecList.add(spec);
        }
        if (updSpecList.size() > 0) update updSpecList;
    }
    // LHJ CHAN-BCLD4P 20190618 End
    // MZY SWAG-BXXBKA  2021-02-19 start
    System.debug('SWAG-BXXBKA start');
    if (opdIds.size()>0) {
        List<OPDPlan__c> updateOPDs = new List<OPDPlan__c>();
        OPDPlan__c tempOPD = new OPDPlan__c();
        for (String i :opdIds ) {
            tempOPD.id = i;
            tempOPD.AttachmentCertificate__c = opdMap.get(i);
            updateOPDs.add(tempOPD);
        }
        System.debug('临时OPD :'+tempOPD);
        if (updateOPDs.size()>0){
            update updateOPDs;
        }
    }
    System.debug('SWAG-BXXBKA end');
    // MZY SWAG-BXXBKA  2021-02-19 end
    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');
                }else{
                    OpporFileUndeleteMap.put(ofc.id,ofc.id);
                    System.debug(ofc+'23333444444');
                }
            }
            update OpporList;
        }
    }
    System.debug(Trigger.isDelete+'Trigger.isDelete');
    System.debug(Trigger.isBefore+'Trigger.isBefore');
    if(Trigger.isDelete && Trigger.isBefore){
        for(Attachment att : Trigger.old){
            if(OpporFileUndeleteMap.containsKey(att.ParentID)){
                att.addError('备货已审批,不可删除附件');
                return;
            }else{
            }
        }
    }
    if(Trigger.isDelete && Trigger.isAfter){
        for(Attachment att : Trigger.old){
            if(OpporFileUndeleteMap.containsKey(att.ParentID)){
                att.addError('备货已审批,不可删除附件');
                return;
            }else{
                DeleteReIds.add(att.ParentId);
            }
        }
    }
    if(Trigger.isInsert){
        for(Attachment att : Trigger.new){
            if(OpporFileUndeleteMap.containsKey(att.ParentID)){
                att.addError('备货已审批,不可删除附件');
                return;
            }else{
                DeleteReIds.add(att.ParentId);
            }
        }
    }
    List<Attachment> atcList = [select id,ParentId,createddate,createdbyid from Attachment where ParentId in:DeleteReIds];
    System.debug(DeleteReIds+'222222222222');
    if(atcList.size()>0){
        for(String ids : DeleteReIds){
            for(Attachment atc : atcList){
                if(OppordeleteReTimeMap.containsKey(ids)){
                    if(atc.createddate > OppordeleteReTimeMap.get(ids)){
                        OppordeleteReTimeMap.put(ids,atc.createddate);
                        OppordeleteReUserMap.put(ids,atc.createdbyid);
                    }else{
                        continue;
                    }
                }else{
                    OppordeleteReTimeMap.put(ids,atc.createddate);
                    OppordeleteReUserMap.put(ids,atc.createdbyid);
                }
            }
        }
        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;
        }
    }
    //CHAN-BCNCRB ---XHL----Start-----
    if (opportunity_FileIds.size() > 0) {
        List<Opportunity_File__c> opporList = [select id,Last_upload_time__c,
                                                            Is_Locked__c,
                                                            Last_upload_user__c,
                                                            Stock_apply_time__c,
                                                            Oppor_File_Stage__c
                                                        from Opportunity_File__c
                                                        where id in:opportunity_FileIds And Oppor_File_Stage__c = 'G'];
        List<String>  ofIds = new  List<String>();
        if (opporList.size() > 0) {
            for (Opportunity_File__c oppf : opporList) {
                ofIds.add(oppf.Id);
            }
            if (ofIds.size() > 0 ) {
                 List<Attachment> atcList = [select id,ParentId,createddate,createdbyid from Attachment where ParentId in:ofIds];
                if (atcList.size() > 0) {
                    delete atcList;
                }
            }
        }
    }
    //CHAN-BCNCRB ---XHL----End-----
    if (opportunityFileOrderIds.size() > 0) {
        List<OpportunityFileOrder__c> ofoList = [select id,
                                                            OpporFileStage__c
                                                        from OpportunityFileOrder__c
                                                        where Id in:opportunityFileOrderIds And OpporFileStage__c = 'G'];
        List<String>  ofoIds = new  List<String>();
        if (ofoList.size() > 0) {
            for (OpportunityFileOrder__c ofo : ofoList) {
                ofoIds.add(ofo.Id);
            }
            if (ofoIds.size() > 0 ) {
                 List<Attachment> atcList = [select id,ParentId,createddate,createdbyid from Attachment where ParentId in:ofoIds];
                if (atcList.size() > 0) {
                    delete atcList;
                }
            }
        }
    }
    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;
        }
        AttachmentTriggerHandler.deleteContract(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
        AttachmentTriggerHandler.deleteconfirm(Trigger.new, Trigger.newMap, Trigger.old, Trigger.oldMap);
    }
}