李彤
2023-05-15 19ae52ae3e06c44c646ae6b45dc2b0d7f2cead88
force-app/main/default/classes/LostCancelReportHandler.cls
@@ -45,10 +45,11 @@
        Set<Id> sdoppidSet = new Set<Id>();
        List<Id> updateOppId = new List<Id>(); 
        List<Opportunity> updateOpp = new List<Opportunity>();
        Map<String,String> cancelMap = new Map<String,String>();//lt 20230425 招标终止 add
        
        for(Lost_cancel_report__c lcr : newList){
            oppIdList.add(lcr.Opportunity__c);
            cancelMap.put(lcr.Opportunity__c, lcr.RecordType.Name);//lt 20230425 招标终止 add
        }
        // 20221202 ljh DB202211594688  start
        // List<task__c> taskList = [select id,taskStatus__c,OpportunityId__c from task__c where RecordType.Name ='中标结果确认' and taskStatus__c = '02 接受' and OpportunityId__c in :oppIdList];
@@ -57,8 +58,22 @@
        //     //updateOppId.add(tsk.OpportunityId__c); //20220823 you 没有任务时,
        // }
        // LoseListTask 失单报告任务   winBiddingTask  中标结果确认
        List<task__c> taskList = [select id,taskStatus__c,OpportunityId__c,RecordType.Name from task__c where (RecordType.Name ='中标结果确认' or RecordType.Name ='失单报告任务')  and OpportunityId__c in :oppIdList];
        for(task__c tsk : taskList){
        List<task__c> taskList = [select id,taskStatus__c,OpportunityId__c,RecordType.Name
                                  from task__c
                                  where (RecordType.Name ='中标结果确认' or RecordType.Name ='失单报告任务')
                                  and OpportunityId__c in :oppIdList];
        // 20230508 ljh DB202305008316 start
        /*for(task__c tsk : taskList){
            //lt 20230425 招标终止 start
            System.debug('---lt123---cancelMap:'+cancelMap);
            System.debug('---lt123---cancelMap.get(tsk.OpportunityId__c):'+cancelMap.get(tsk.OpportunityId__c));
            if(cancelMap.containsKey(tsk.OpportunityId__c)){
                if(cancelMap.get(tsk.OpportunityId__c) == 'PCL_Cancel_report'){
                    tsk.taskStatus__c = '04 取消';
                    tsk.cancelReasonSelect__c = '项目终止';
                }
            }else
            //lt 20230425 招标终止 end
            if(tsk.RecordType.Name == '中标结果确认' && tsk.taskStatus__c == '02 接受'){
                tsk.taskStatus__c = '03 完成';
            }
@@ -67,7 +82,28 @@
                sdoppidSet.add(tsk.OpportunityId__c);
            }
            oppIdSet.add(tsk.OpportunityId__c);
        }*/
        List<task__c> Uptask = new List<task__c>();
        for(task__c tsk : taskList){
            task__c temp = new task__c();
            temp.Id = tsk.Id;
            if(cancelMap.containsKey(tsk.OpportunityId__c)){
                if(cancelMap.get(tsk.OpportunityId__c) == 'PCL_Cancel_report'){
                    temp.taskStatus__c = '04 取消';
                    temp.cancelReasonSelect__c = '项目终止';
        }
            }else
            if(tsk.RecordType.Name == '中标结果确认' && tsk.taskStatus__c == '02 接受'){
                temp.taskStatus__c = '03 完成';
            }
            if(tsk.RecordType.Name == '失单报告任务'){
                sdoppidSet.add(tsk.OpportunityId__c);
            }
            oppIdSet.add(tsk.OpportunityId__c);
            Uptask.add(temp);
        }
        // 20230508 ljh DB202305008316 end
        // for(Id oppId : oppIdList){//20220823 you
        for(Id oppId : oppIdSet){
        // 20221202 ljh DB202211594688  end
@@ -89,9 +125,12 @@
            updateOpp.add(opptemp);
        }
        
      update updateOpp;
        update taskList;
        // 20230508 ljh DB202305008316 start
        // update taskList;
        update Uptask;
        // 20230508 ljh DB202305008316 end
    }
    //2022-6-22 yjk 询价跟进任务 end
@@ -191,11 +230,28 @@
        //20220708 询价任务开发,结束失单任务状态,筛选需要的修改的失单任务 start
        Set<String> oppIdSet = new Set<String>();
        Set<String> passOppIdSet = new Set<String>();
        for (Lost_cancel_report__c n: newList) {
            if ((n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && n.Report_Status__c == '申请中') {
                oppIdSet.add(n.Opportunity__c);
            }
            if ((n.Report_Status__c != oldMap.get(n.Id).Report_Status__c) && n.Report_Status__c == '批准') {
                passOppIdSet.add(n.Opportunity__c);
        }
        }
        // 20230411 多失单报告合并,取出待合并的询价 start
        Map<String, Opportunity> mapOpps = new Map<String, Opportunity>();
        List<Opportunity> lstOpps = [select Id, RivalHostsNumber__c, CompetitorProduct1__c,
                                        CompetitorProduct2__c, CompetitorProduct3__c, Lost_reason_main__c,
                                        Lost_Reason_Sub__c, Agencies__c, PCLLostBrands__c, of_lost_system_processor__c,
                                        LostPrices__c
                                    from Opportunity
                                    where Id in :passOppIdSet];
        for(Opportunity opp : lstOpps) {
            mapOpps.put(opp.Id, opp);
        }
        System.debug('mapOpps: ' + mapOpps);
        // 20230411 多失单报告合并,取出待合并的询价 end
        // 20220720 ljh add 记录取消/失单报告提交时点的战略产品判断 start
        if(oppIdSet.size() > 0 ){
            List<OpportunityLineItem> OppLIlist = [select Id,Key_product_147P_Text__c,Key_product_147P__c from OpportunityLineItem  where OpportunityId in :oppIdSet];
@@ -204,7 +260,11 @@
            }
            update OppLIlist;
        // 20220720 ljh add 记录取消/失单报告提交时点的战略产品判断 end
           List<task__c> taskList = [select id,taskStatus__c from task__c where RecordType.Name ='失单报告任务' and taskStatus__c = '02 接受' and OpportunityId__c in :oppIdSet];
           List<task__c> taskList = [select id,taskStatus__c
                                      from task__c
                                      where RecordType.Name ='失单报告任务'
                                      and taskStatus__c = '02 接受'
                                      and OpportunityId__c in :oppIdSet];
           for(task__c tsk : taskList){
               tsk.taskStatus__c = '03 完成';
           }
@@ -231,11 +291,16 @@
            List<String> ppList=new List<String>();     //失单品牌
            // List<String> yyList=new List<String>();     //失单原因
            //初始化
            Opportunity opp=new Opportunity();
            // 20230411 多失单报告合并,取出待合并的询价 start
            Opportunity opp = mapOpps != null && mapOpps.containsKey(arrMap.get(lcro).Opportunity__c) ? mapOpps.get(arrMap.get(lcro).Opportunity__c) : new Opportunity();
            //20220930  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start
            opp.RivalHostsNumber__c = 0;
            opp.RivalHostsNumber__c = opp.RivalHostsNumber__c != null ? opp.RivalHostsNumber__c : 0;
            //20220930  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end
            opp.Id=arrMap.get(lcro).Opportunity__c; opp.PCLLostBrands__c=''; opp.Agencies__c='';    //Id ,品牌,经销商
            opp.Id = String.isNotBlank(opp.Id) ? opp.Id : arrMap.get(lcro).Opportunity__c;
            opp.PCLLostBrands__c = String.isNotBlank(opp.PCLLostBrands__c) ? opp.PCLLostBrands__c : '';
            opp.Agencies__c = String.isNotBlank(opp.Agencies__c) ? opp.Agencies__c : '';
            System.debug('opp: ' + opp);
            // 20230411 多失单报告合并,取出待合并的询价 end
            // for产品
            for (PCLLostProduct__c lcr : lcrList) {
                if (opp.Id==lcr.Opportunity__c) {