李彤
2023-05-15 19ae52ae3e06c44c646ae6b45dc2b0d7f2cead88
force-app/main/default/classes/TenderInformationHandler.cls
@@ -40,6 +40,7 @@
    }
    protected override void beforeUpdate() {
        SetIsReactionOpp(); //lt DB202304062844 20230515 项目终止流程开发 add
        //反逻辑删除 fxk
        changeRelateOppDate();
        updateTenDel();
@@ -67,7 +68,8 @@
        updateWin();
        // 中标任务 废标流标时清空中标日
        clearConfirmationofAward();
        //20221208 you DB202211594688
        //clearConfirmationofAward();
        //2022-3-29 yjk SWAG-CCL6R7
        //updateOpportunity();//2022-5-18 yjk XLIU-CEJ38N 注释掉 
@@ -80,14 +82,16 @@
        List<String> oppIds = new List<String>();//询价
        // 获得要更新的询价
        for (Tender_information__c record: newList) {
           if ( ( ('3-5:中标通知'.equals((oldMap.get(record.Id).subInfoType__c)) || '3-6:合同公告'.equals((oldMap.get(record.Id).subInfoType__c)) ) && ('3-1:废标公告'.equals(record.subInfoType__c)  || '3-2:流标公告'.equals(record.subInfoType__c) )) || (!'3:结果'.equals(record.InfoType__c) && '3:结果'.equals((oldMap.get(record.Id).InfoType__c)))) {
            //lt 20230425 招标终止 add  || ('批准'.equals(record.TerminateApprovalStatus__c) && !'批准'.equals((oldMap.get(record.Id).TerminateApprovalStatus__c)))
           if ( ( ('3-5:中标通知'.equals((oldMap.get(record.Id).subInfoType__c)) || '3-6:合同公告'.equals((oldMap.get(record.Id).subInfoType__c)) ) && ('3-1:废标公告'.equals(record.subInfoType__c)  || '3-2:流标公告'.equals(record.subInfoType__c) )) || (!'3:结果'.equals(record.InfoType__c) && '3:结果'.equals((oldMap.get(record.Id).InfoType__c))) || ('批准'.equals(record.TerminateApprovalStatus__c) && !'批准'.equals((oldMap.get(record.Id).TerminateApprovalStatus__c)))) {
                Tenids.add(record.id);
            }
        }
        Map<String,String> InfoTypeMap = new Map<String,String>(); //判断是否是因为中标修改得
        Map<String,String> TerminationStateMap = new Map<String,String>(); //lt 20230425 招标终止 add
        if(null!=Tenids && Tenids.size()>0){
            List<Tender_Opportunity_Link__c> TenOppLinkList = [select id, Tender_information__c,Tender_information__r.InfoType__c, Opportunity__c from Tender_Opportunity_Link__c where Tender_information__c in :Tenids];
            //lt 20230425 招标终止 add Tender_information__r.TerminateApprovalStatus__c,
            List<Tender_Opportunity_Link__c> TenOppLinkList = [select id, Tender_information__c,Tender_information__r.InfoType__c, Tender_information__r.TerminateApprovalStatus__c, Opportunity__c from Tender_Opportunity_Link__c where Tender_information__c in :Tenids];
            if(null!=TenOppLinkList && TenOppLinkList.size()>0){
                for(Tender_Opportunity_Link__c topl :TenOppLinkList){
                    String oppid =String.valueOf(topl.Opportunity__c);
@@ -96,43 +100,105 @@
                    if (!oppIds.contains(topl.Opportunity__c)) {
                        oppIds.add(topl.Opportunity__c);
                    }
                    if(!'3:结果'.equals(topl.Tender_information__r.InfoType__c)){
                    //lt DB202304062844 20230515 项目终止流程开发 update if(!'3:结果'.equals(topl.Tender_information__r.InfoType__c)) --- if(!'3:结果'.equals(NewMap.get(topl.Tender_information__c).InfoType__c))
                    if(!'3:结果'.equals(NewMap.get(topl.Tender_information__c).InfoType__c)){
                       InfoTypeMap.put(topl.Opportunity__c,topl.Tender_information__c); 
                    }   
                    //lt 20230425 招标终止 start
                    System.debug('---lt123---topl.Tender_information__r.TerminateApprovalStatus__c:'+topl.Tender_information__r.TerminateApprovalStatus__c);
                    if('批准'.equals(newMap.get(topl.Tender_information__c).TerminateApprovalStatus__c)){
                        TerminationStateMap.put(topl.Opportunity__c,topl.Tender_information__c);
                     }
                    //lt 20230425 招标终止 end
                }
            }
        }
        if (null!=oppTens && oppTens.size()>0) {
          List<Opportunity> opportunities = [select id, Bidding_Project_Name_Bid__c, Opp_Order__c from Opportunity where id in :oppIds];
           List<task__c> taskList = [select id,taskStatus__c,Tender_information_Task__c,OpportunityId__c from task__c where (RecordType.Name ='失单报告任务' and OpportunityId__c in:oppIds) or (RecordType.Name ='中标结果确认' and Opp_Tender__c in :oppTens)];
            //20221208 you DB202211594688 有确认任务的询价不清
            List<Opportunity> opportunities = [select id, Bidding_Project_Name_Bid__c, Opp_Order__c,ConfirmationofAward__c from Opportunity where id in :oppIds];
            //lt 20230425 招标终止 add Tender_information_Task__r.TerminateApprovalStatus__c   20230510 add and taskStatus__c <> '04 取消'
            //lt DB202304062844 20230515 项目终止流程开发 update  taskStatus__c <> '03 完成' and taskStatus__c <> '04 取消'  ---  taskStatus__c = '02 接受'
            List<task__c> taskList = [select id,taskStatus__c,RecordType.Name,Tender_information_Task__c,
                                            OpportunityId__c,Tender_information_Task__r.TerminateApprovalStatus__c
                                    from task__c
                                    where ((RecordType.Name ='失单报告任务' and OpportunityId__c in:oppIds)
                                    or (RecordType.Name ='中标结果确认' and Opp_Tender__c in :oppTens))
                                    and taskStatus__c = '02 接受'];
            for(task__c tsk : taskList){
                tsk.taskStatus__c = '04 取消';
                tsk.cancelDate__c = date.today();
                if(null!=InfoTypeMap && InfoTypeMap.containsKey(tsk.OpportunityId__c)){
                   tsk.cancelReasonSelect__c = '修改项目阶段';
                System.debug('---lt123---TerminationStateMap:'+TerminationStateMap);
                System.debug('---lt123---tsk.Tender_information_Task__r.TerminateApprovalStatus__c:'+tsk.Tender_information_Task__r.TerminateApprovalStatus__c);
                //lt DB202304062844 20230515 项目终止流程开发 update !='03 完成' --- == '02 接受'
                if(tsk.RecordType.Name =='失单报告任务' && oppIds.contains(tsk.OpportunityId__c) && tsk.taskStatus__c == '02 接受'){
                  //不做操作
                }else{
                   tsk.cancelReasonSelect__c = '流标/废标';
                }
            }
             update taskList;
            if(taskList.size() > 0){
                for (task__c tlink : taskList) {
                    for (Opportunity opp : opportunities) {
                        if (opp.Id == tlink.OpportunityId__c) {
                           //20220718 you 询价任务 start
                            opp.ConfirmationofAward__c = null;
                            opp.Task_createTime__c = null;
                            opp.ConfirmationofAward_createTime__c =null;
                            opp.LostTask_comfirmTime__c =null;
                            opp.Is_ConfirmationofAward__c =null;
                            opp.LostTask_createTime__c =null;
                            opp.Closing_Bid_Date__c = null;
                            //20220718 you 询价任务 end
                       }
                    tsk.taskStatus__c = '04 取消';
                    tsk.cancelDate__c = date.today();
                    if(null!=InfoTypeMap && InfoTypeMap.containsKey(tsk.OpportunityId__c)){
                       tsk.cancelReasonSelect__c = '修改项目阶段';
                    }
                    //lt 20230425 招标终止 start
                    else if(null!=TerminationStateMap && TerminationStateMap.containsKey(tsk.OpportunityId__c)){
                        tsk.cancelReasonSelect__c = '项目终止';
                    }
                    //lt 20230425 招标终止 end
                    else{
                       tsk.cancelReasonSelect__c = '流标/废标';
                    }
                }
            }
            update taskList;
            //lt DB202304062844 20230515 项目终止流程开发  start
            // if(taskList.size() > 0){
            if(opportunities.size() > 0){
                for (Opportunity opp : opportunities) {
                    Boolean upd_flg = null!=TerminationStateMap && TerminationStateMap.containsKey(opp.Id) && opp.ConfirmationofAward__c == '竞争对手中标' ? false : true;
                    if (!upd_flg) {
                        continue;
                    }
                    for (task__c tlink : taskList) {
                        if (opp.Id == tlink.OpportunityId__c) {
                            //lt DB202304062844 20230515 项目终止流程开发 update !='03 完成' --- == '02 接受'
                            if(tlink.RecordType.Name =='失单报告任务' && tlink.taskStatus__c == '02 接受'){
                                upd_flg = false;
                                break;
                              //不做操作
                            // }else{
                            //    //20220718 you 询价任务 start
                            //     opp.ConfirmationofAward__c = null;
                            //     opp.Task_createTime__c = null;
                            //     opp.ConfirmationofAward_createTime__c =null;
                            //     opp.LostTask_comfirmTime__c =null;
                            //     opp.Is_ConfirmationofAward__c =null;
                            //     opp.LostTask_createTime__c =null;
                            //     //lt DB202304062844 20230515 项目终止流程开发 start
                            //     if(tlink.Tender_information_Task__r.TerminateApprovalStatus__c == '批准' && opp.ConfirmationofAward__c == 'OLY中标'){
                            //         opp.Closing_Bid_Date__c = null;
                            //     }
                            //     //lt DB202304062844 20230515 项目终止流程开发  end
                            //     //opp.Closing_Bid_Date__c = null;
                            //     //20220718 you 询价任务 end
                            }
                        }
                    }
                    if (upd_flg) {
                        //lt DB202304062844 20230515 项目终止流程开发 start
                        if(null!=TerminationStateMap && TerminationStateMap.containsKey(opp.Id) && opp.ConfirmationofAward__c == 'OLY中标'){
                            opp.Closing_Bid_Date__c = null;
                        }
                        //lt DB202304062844 20230515 项目终止流程开发 end
                        opp.ConfirmationofAward__c = null;
                        opp.Task_createTime__c = null;
                        opp.ConfirmationofAward_createTime__c =null;
                        opp.LostTask_comfirmTime__c =null;
                        opp.Is_ConfirmationofAward__c =null;
                        opp.LostTask_createTime__c =null;
                    }
                }
            } 
            //lt DB202304062844 20230515 项目终止流程开发 end
            StaticParameter.EscapeOppandStaTrigger = true; //lt DB202304062844 20230515 项目终止流程开发 跳过询价trigger start
            update opportunities;   
            StaticParameter.EscapeOppandStaTrigger = false; //lt DB202304062844 20230515 项目终止流程开发 end
        }
    }    
    //20220718 you 询价任务 end
@@ -1289,6 +1355,8 @@
            }
        }
    }
    /**
    //20221208 you DB202211594688
    // 中标任务 废标流标时清空中标日
    public void clearConfirmationofAward() {
        List<String> tenders = new List<String>();
@@ -1324,4 +1392,17 @@
            }
        }
    }
    **/
    //lt DB202304062844 20230515 项目终止流程开发 start  subInfoType__c
    //如果项目阶段发生变化 或者阶段补充说明发生变化 或者终止审批发生变化且审批通过 把招标项目上的IsReactionOpp__c设置为true
    public void SetIsReactionOpp() {
        for(Tender_information__c newTen : newList){
            Tender_information__c oldTen = oldMap.get(newTen.Id);
            if(newTen.InfoType__c != oldTen.InfoType__c || newTen.subInfoType__c != oldTen.subInfoType__c || (newTen.TerminateApprovalStatus__c != oldTen.TerminateApprovalStatus__c && newTen.TerminateApprovalStatus__c == '批准')){
                newTen.IsReactionOpp__c = true;
            }
        }
    }
    //lt DB202304062844 20230515 项目终止流程开发 end
}