111
沙世明
2022-11-22 928399eceec50e3d37ea08669a12789a9410a9d2
force-app/main/default/classes/RentalApplyTriggerHandler.cls
@@ -11,6 +11,7 @@
    private List<Rental_Apply__c> oldList;
    private static Date td = Date.today();
    private static Map<Id, Rental_Apply__c> oldRaMap = new Map<Id, Rental_Apply__c>();
    public static Boolean isFirst = true;
    //update      wangweipeng                             2021/11/25                   start
    private static Map<String, String> approver_of_Service_DepartmentMap = new Map<String, String>();
@@ -77,6 +78,15 @@
        // 取消申请单的审批
        removedProcessRequest();
        System.debug('---------------newList--------------' + newList);
        // add by lc 2022/11/15 DB202211029119 start
        if (isFirst) {
            // 主从申请单,只延主单的情况,走单独的处理逻辑,并且只执行一次
            synchRentalApplyDataMaster();
        }
        // add by lc 2022/11/15 DB202211029119 end
        synchRentalApplyData2();
        // 延期审批后需要更新一览
        setAppExtensionRaes();
@@ -84,10 +94,50 @@
        setShare();
        // 办事处分单的装机确认
        setAgencyHPReceived();
        //批量审批时,需要把主单和从单的延期字段信息同步
        synchRentalApplyData();
    }
    // add by lc 2022/11/15 DB202211029119 start
    // 主从申请单,只延主单的情况,走单独的处理逻辑
    private void synchRentalApplyDataMaster() {
        List<Rental_Apply_Equipment_Set__c> raesList = new List<Rental_Apply_Equipment_Set__c>();
        // 批准只能一条一条的批准
        for (Rental_Apply__c nObj : newList) {
            Rental_Apply__c oObj = oldMap.get(nObj.Id);
            if (oObj.ExtensionApprovalTime_Initial__c != nObj.ExtensionApprovalTime_Initial__c
                && nObj.ExtensionApprovalTime_Initial__c != null && oObj.ExtensionApprovalTime_Initial__c == null
                && String.isNotBlank(nObj.Extension_Type__c) && nObj.Extension_Type__c == '批量延期'
                && (nObj.demo_purpose2__c == '试用(无询价)' || nObj.demo_purpose2__c == '试用(有询价)')
                && String.isBlank(oObj.Extension_Much_ID__c)
                && String.isBlank(oObj.Root_Rental_Apply__c)) {
                isFirst = false;
                List<Rental_Apply__c> checkRentalApply = new List<Rental_Apply__c>();
                checkRentalApply.add(oObj);
                try {
                    System.debug('========================checkRentalApply=========================' + checkRentalApply);
                    for (Rental_Apply_Equipment_Set__c raes : getCan_Extend_RequestList(checkRentalApply)) {
                        System.debug('raes.Id=========================' + raes.Id);
                        //判断是此申请单是否存在 ok并且回寄时间不为空的一览,
                        if ((raes.Received_Confirm__c == 'OK' || raes.Received_Confirm__c == '默认签收-OK') && raes.Asset_return_time__c != null) {
                        }else{
                            raes.RcUnexpectExpiryDelay__c = raes.Rental_Apply__r.RcUnexpectExpiryDelay__c;
                            raesList.add(raes);
                        }
                    }
                }
                catch (Exception e) {
                    nObj.addError(e.getMessage() + ',请操作驳回。');
                }
            }
        }
        if (0 < raesList.size()) {
            update raesList;
        }
    }
    // add by lc 2022/11/15 DB202211029119 end
    private void setAgencyHPReceived() {
        Set<Id> raIdSet = new Set<Id>();
@@ -334,8 +384,11 @@
                    //如果为批量延期,那么这个集合里面会存放 原单+原单下所有的从单
                    //如果为从单,并且目的2为询价,那么会存放 当前从单的原单+从单原单下所有的从单(包括当前从单)
                    List<Rental_Apply__c> checkRentalApply = new List<Rental_Apply__c>();
                    // 只有产品试用会存在批量延期
                    if(String.isNotBlank(nObj.Extension_Type__c) && nObj.Extension_Type__c == '批量延期'){
                        System.debug('========================1=========================');
                        if(String.isNotBlank(nObj.Extension_Much_ID__c)){
                            System.debug('========================2=========================');
                            String parentId = nObj.Id;
                            parentId = parentId.substring(0,15);
                            String likeParentId = parentId+'%';
@@ -365,6 +418,7 @@
                                            order by CreatedDate asc];
                        }
                    }else{
                        System.debug('========================3=========================');
                        //如果延期的是从单,那么需要特殊处理
                        if(String.isNotBlank(nObj.Root_Rental_Apply__c) && (nObj.demo_purpose2__c == '试用(无询价)' || nObj.demo_purpose2__c == '试用(有询价)')){
                            String likeParentId = nObj.Root_Rental_Apply__c+'%';
@@ -397,6 +451,8 @@
                        }
                        checkRentalApply.add(oObj);
                    }
                    System.debug('========================checkRentalApply=========================' + checkRentalApply);
                    for (Rental_Apply_Equipment_Set__c raes : getCan_Extend_RequestList(checkRentalApply)) {
                        //延期批准时间(最初)或延期批准时间(最终) 值都有变动,那么证明此次延期已经批准了,那么需要给申请单的一览赋值
                        if (oObj.ExtensionApprovalTime_Initial__c != nObj.ExtensionApprovalTime_Initial__c
@@ -1371,6 +1427,8 @@
                            }
                        }
                    }
                    System.debug('raes==============' + raes);
                    System.debug('raes1==============' + checkCan_Extend_Request(raes, false));
                    if (checkCan_Extend_Request(raes, false)) {
                        raesList.add(raes);
                    }