Denny chen
2022-05-10 2f3267bcc0e42e09b6f191cad6a0374f4a59b317
InquiryVerifyBatch update
1个文件已修改
109 ■■■■■ 已修改文件
force-app/main/default/classes/InquiryVerifyBatch.cls 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/InquiryVerifyBatch.cls
@@ -1,41 +1,67 @@
global class InquiryVerifyBatch  implements Schedulable,Database.Batchable<SObject>,Database.Stateful {
    public String query;
    public Date start_date;
    public Integer year;
    public Integer month;
    global InquiryVerifyBatch() {
        // if(Test.isRunningTest()){
            this.query = 'select id,quoteSavedDate__c,Opportunity.Id,Opportunity.Department_Class__c from quote where Quote_No_last2__c = \'01\' and CreatedDate = today';
        // }else{
            // this.query = 'select id,quoteSavedDate__c,Opportunity.Id,Opportunity.Department_Class__c from quote where Quote_No__c like \'%01\' and CreatedDate = today';
        // }
        this.query = query;
    }
    global InquiryVerifyBatch(Integer year, Integer month) {
        if (year == null) {
            year = 2021;
            this.year = 2021;
        }
        if (month == null) {
            month = 4;
            this.month = 4;
        }
        start_date = Date.newInstance(year, month, 1);
        this.query = 'select id,quoteSavedDate__c,Opportunity.Id,Opportunity.Department_Class__c from quote where Quote_No_last2__c = \'01\' and CreatedDate >= :start_date';
        this.query = query;
    }
    public void execute(SchedulableContext sc) {
        Database.executeBatch(this);
    }
    // global void execute(SchedulableContext sc){Database.executebatch(this);}
    global Database.QueryLocator start(Database.BatchableContext bc) {
        // 获取报价单数据
        if (start_date!=null) {
           query = 'select id,quoteSavedDate__c,Opportunity.Id,Opportunity.Department_Class__c from quote where Quote_No_last2__c = \'01\' and CreatedDate >= :start_date';
        }else{
           query = 'select id,quoteSavedDate__c,Opportunity.Id,Opportunity.Department_Class__c from quote where Quote_No_last2__c = \'01\' and CreatedDate = today';
        }
        System.debug(LoggingLevel.INFO, '*** query: ' + query);
        return Database.getQueryLocator(query);
    }
 
    global void execute(Database.BatchableContext BC, list<quote> quotes) {
            
       List<Opportunity> os = new List<Opportunity>();
       List<String> qids = new List<String>();
       List<String> oppDepartmentList = new List<String>();
       List<String> ca4 = new List<String>();
       for (quote quo : quotes) {
            qids.add(quo.id);
            oppDepartmentList.add(quo.Opportunity.Department_Class__c);
        }
        Map<String,List<String>> mapc4 = new Map<String,List<String>>();
       for(List<QuoteLineItem> qlt:[Select Id,Product2.Category4__c,QuoteId
                            from QuoteLineItem
                            where QuoteId  In :qids and Product2.Important_product__c = true]){
        for ( QuoteLineItem qlt1:qlt ) {
            ca4.add(qlt1.Product2.Category4__c);
        }
        if (!mapc4.containskey(qlt[0].QuoteId)) {
            mapc4.put(qlt[0].QuoteId,ca4);
        }
       }
       List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [select id, product__c, Bollow_Date__c,Category4__c, Rental_Apply__r.Hospital__c,Rental_Apply__r.Strategic_dept__c
                                                                from Rental_Apply_Equipment_Set_Detail__c
                                                                where Rental_Apply__r.Demo_purpose2__c = '试用(无询价)'
                                                                AND Rental_Apply__r.Strategic_dept__c IN : oppDepartmentList
                                                                and Category4__c IN :ca4
                                                                order by Bollow_Date__c];
       // 遍历报价单
        for (quote  quo: quotes) {
            Opportunity o = New Opportunity();
@@ -47,48 +73,37 @@
            }else{
                createdDateStr = Date.today();
            }
            // 获取报价产品数据,获取第四分类
             List<QuoteLineItem> qlts = [Select Id,Product2.Category4__c from QuoteLineItem where QuoteId  = :quo.Id and Product2.Important_product__c = true];
             List<String> c4  = new List<String>();
             List<String> qdept  = new List<String>();
             // 第四分类放入list
            for (QuoteLineItem qlt : qlts) {
                c4.add(qlt.Product2.Category4__c);
            }
            
              // 一年前的日期
            Date createdDateYear = createdDateStr.addYears(-1);
            // 获取备品配套一览明细
            List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [select id, product__c, Bollow_Date__c,Category4__c, Rental_Apply__r.Hospital__c
                                                                from Rental_Apply_Equipment_Set_Detail__c
                                                                where Rental_Apply__r.Strategic_dept__c = : quo.Opportunity.Department_Class__c
                                                                and Category4__c IN :c4
                                                                and Rental_Apply__r.Demo_purpose2__c = '试用(无询价)'
                                                                and Bollow_Date__c >= :createdDateYear order by Bollow_Date__c limit 200 ];
              for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdList) {
                o.WhetherTrySpareParts_3m__c = false;
                o.WhetherTrySpareParts_6m__c = false;
                o.WhetherTrySpareParts_1y__c = false;
                Date bollDate = raesd.Bollow_Date__c;
                if (bollDate != null && bollDate.addMonths(3) > createdDateStr) {
                    o.WhetherTrySpareParts_3m__c = true;
                }
                if (bollDate != null && bollDate.addMonths(6) > createdDateStr && bollDate.addMonths(3) < createdDateStr) {
                    o.WhetherTrySpareParts_6m__c = true;
                }
                if (bollDate != null && bollDate.addYears(1) > createdDateStr && bollDate.addMonths(6) < createdDateStr) {
                    o.WhetherTrySpareParts_1y__c = true;
                }
              }
           for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdList) {
                if (raesd.Rental_Apply__r.Strategic_dept__c == quo.Opportunity.Department_Class__c && mapc4.containskey(quo.id) && mapc4.get(quo.id).contains(raesd.Category4__c) && raesd.Bollow_Date__c >= createdDateYear) {
                    o.WhetherTrySpareParts_3m__c = false;
                    o.WhetherTrySpareParts_6m__c = false;
                    o.WhetherTrySpareParts_1y__c = false;
                    Date bollDate = raesd.Bollow_Date__c;
                    if (bollDate != null && bollDate.addMonths(3) > createdDateStr) {
                        o.WhetherTrySpareParts_3m__c = true;
                    }
                    if (bollDate != null && bollDate.addMonths(6) > createdDateStr && bollDate.addMonths(3) < createdDateStr) {
                        o.WhetherTrySpareParts_6m__c = true;
                    }
                    if (bollDate != null && bollDate.addYears(1) > createdDateStr && bollDate.addMonths(6) < createdDateStr) {
                        o.WhetherTrySpareParts_1y__c = true;
                    }
                }
            }
            os.add(o);
        }
        if (os.size()>0) {
            Oly_TriggerHandler.bypass('AWSServiceTool2');
            Oly_TriggerHandler.bypass('PIHelper');
            update os;
            system.debug('执行成功');
        }else{
        }else{
             system.debug('执行失败');
        }
    }