游畅
2023-04-07 a886e1576fd1f45db37ed84b3c8b61aea4cdd4b1
force-app/main/default/classes/UpdateTenderInformationBatch.cls
@@ -54,15 +54,19 @@
    global Database.QueryLocator start(Database.BatchableContext bc) {
        String query = 'SELECT Id,IsBid__c,NotBidApprovalStatus__c,IsReactionOpp__c,Hospital__c,Hospital1__c,Hospital2__c,Hospital3__c,Hospital4__c, ';
               query += 'Hospital__r.DepartmentChanges__c,Hospital1__r.DepartmentChanges__c,Hospital2__r.DepartmentChanges__c,Hospital3__r.DepartmentChanges__c,Hospital4__r.DepartmentChanges__c ';
               query += 'Hospital__r.Assume_Change__c,Hospital1__r.Assume_Change__c,Hospital2__r.Assume_Change__c,Hospital3__r.Assume_Change__c,Hospital4__r.Assume_Change__c ';
               query += 'FROM Tender_information__c ';
            if(IsOnlyTrue){               
               query += 'WHERE  ((IsReactionOpp__c = true ) '; 
               //2021-07-29 mzy  update 当医院发生变化/招投标项目OCSM省发生变化时,空更新一下招投标 start
               query += 'OR (BiddingOCSMAdministration__c = true) OR (Hospital__r.DepartmentChanges__c = true) ';
               query += 'OR (Hospital1__r.DepartmentChanges__c = true) OR (Hospital2__r.DepartmentChanges__c = true) ';
               query += 'OR (Hospital3__r.DepartmentChanges__c = true) OR (Hospital4__r.DepartmentChanges__c = true) )';
               // 2022-04-08 ssm SWAG-CC58ME 增加所有人无效的判断 start
               query += 'OR (Owner.IsActive = false) ';
               // 2022-04-08 ssm SWAG-CC58ME end
               query += 'OR (BiddingOCSMAdministration__c = true) OR (Hospital__r.Assume_Change__c = true) ';
               query += 'OR (Hospital1__r.Assume_Change__c = true) OR (Hospital2__r.Assume_Change__c = true) ';
               query += 'OR (Hospital3__r.Assume_Change__c = true) OR (Hospital4__r.Assume_Change__c = true) )';
               //2021-07-29  mzy update 当医院发生变化/招投标项目OCSM省发生变化时,空更新一下招投标 end
               // DepartmentChanges__c 全部换成 Assume_Change__c
            }   
            if(String.isNotBlank(this.tempTenderId)){
                if(IsOnlyTrue){
@@ -111,6 +115,7 @@
            //2021-07-29  mzy  update  当医院发生变化/招投标项目OCSM省发生变化时,空更新一下招投标   end
        }
        //2021-07-29  mzy  update  空更新失败的话不清空医院的标识  start
        // System.debug('EmptyUpdateTenderList: ' + EmptyUpdateTenderList);
        if(EmptyUpdateTenderList.size()>0){
            //空更新招投标
            // fxk 2021/9/28 Star
@@ -127,19 +132,19 @@
                    String faildTenderId = String.valueOf(EmptyUpdateTenderList.get(i).id).substring(0,15);
                    Tender_information__c  faildtender = EmptyUpdateTenderMap.get(faildTenderId);
                    if(faildtender.Hospital__c != null && faildtender.Hospital__r.DepartmentChanges__c == true){
                    if(faildtender.Hospital__c != null && faildtender.Hospital__r.Assume_Change__c == true){
                        faildHospIdSet.add(faildtender.Hospital__c);
                    }
                    if(faildtender.Hospital1__c != null && faildtender.Hospital1__r.DepartmentChanges__c == true){
                    if(faildtender.Hospital1__c != null && faildtender.Hospital1__r.Assume_Change__c == true){
                        faildHospIdSet.add(faildtender.Hospital1__c);
                    }
                    if(faildtender.Hospital2__c != null&& faildtender.Hospital2__r.DepartmentChanges__c == true){
                    if(faildtender.Hospital2__c != null&& faildtender.Hospital2__r.Assume_Change__c == true){
                        faildHospIdSet.add(faildtender.Hospital2__c);
                    }
                    if(faildtender.Hospital3__c != null&& faildtender.Hospital3__r.DepartmentChanges__c == true){
                    if(faildtender.Hospital3__c != null&& faildtender.Hospital3__r.Assume_Change__c == true){
                        faildHospIdSet.add(faildtender.Hospital3__c);
                    }
                    if(faildtender.Hospital4__c != null&& faildtender.Hospital4__r.DepartmentChanges__c == true){
                    if(faildtender.Hospital4__c != null&& faildtender.Hospital4__r.Assume_Change__c == true){
                       faildHospIdSet.add(faildtender.Hospital4__c);
                    }
                }
@@ -153,23 +158,23 @@
                Tender_information__c  tender = EmptyUpdateTenderMap.get(tenderId);
                //如果失败的Set里没有这个医院,则清空这个医院的标识
                if(tender.Hospital__c != null && tender.Hospital__r.DepartmentChanges__c == true
                if(tender.Hospital__c != null && tender.Hospital__r.Assume_Change__c == true
                    && (!faildHospIdSet.contains(tender.Hospital__c)) ){  
                    HospitalId.add(tender.Hospital__c);
                }
                if(tender.Hospital1__c != null && tender.Hospital1__r.DepartmentChanges__c == true
                if(tender.Hospital1__c != null && tender.Hospital1__r.Assume_Change__c == true
                    && (!faildHospIdSet.contains(tender.Hospital1__c)) ){  
                    HospitalId.add(tender.Hospital1__c);
                }
                if(tender.Hospital2__c != null && tender.Hospital2__r.DepartmentChanges__c == true
                if(tender.Hospital2__c != null && tender.Hospital2__r.Assume_Change__c == true
                    && (!faildHospIdSet.contains(tender.Hospital2__c)) ){
                    HospitalId.add(tender.Hospital2__c); 
                }
                if(tender.Hospital3__c != null && tender.Hospital3__r.DepartmentChanges__c == true
                if(tender.Hospital3__c != null && tender.Hospital3__r.Assume_Change__c == true
                    && (!faildHospIdSet.contains(tender.Hospital3__c)) ){
                    HospitalId.add(tender.Hospital3__c);  
                }
                if(tender.Hospital4__c != null && tender.Hospital4__r.DepartmentChanges__c == true
                if(tender.Hospital4__c != null && tender.Hospital4__r.Assume_Change__c == true
                    && (!faildHospIdSet.contains(tender.Hospital4__c)) ){
                    HospitalId.add(tender.Hospital4__c);
                }
@@ -180,7 +185,7 @@
            while(HospitalIds.hasNext()){
                Account acc = new Account();
                acc.id = HospitalIds.next();
                acc.DepartmentChanges__c = false;
                acc.Assume_Change__c = false;
                needUpdateHPList.add(acc);  
            }
@@ -347,7 +352,11 @@
                }
            }
            //询价流程改善 fy start
            System.debug('batch2开始');
            Id execBTId = Database.executeBatch(new UpdateTenderInformationBatch2(TenderIdList),100);
            System.debug('batch2结束');
            //询价流程改善 fy end
        }catch(NullPointerException ex){         
            system.debug('aa1:'+ex.getMessage());
@@ -389,7 +398,11 @@
        List<Tender_information__c> updateTenderNumList = [SELECT Id, Hospital__c, Hospital1__c, 
        Hospital2__c, Hospital3__c, Hospital4__c, OwnerId, IsRelateProject__c, IsBid__c, department__c, 
        subDepartment1__c, subDepartment2__c, subDepartment3__c, subDepartment4__c, NotBidApprovalStatus__c, 
        OpportunityNum__c, OpportunityStatus__c FROM Tender_information__c WHERE Id IN :tenders];
        OpportunityNum__c, OpportunityStatus__c
        //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start
        ,OlyNumberHosts__c, RivalHostsNumber__c, TotalNumberHosts__c
        //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end
        FROM Tender_information__c WHERE Id IN :tenders];
        // 招标-询价关联修改 20210817 end
        return updateTenderNumList;
@@ -435,24 +448,83 @@
                Integer WinNum = 0;
                //失单 num
                Integer SHDNum = 0;
                //XLIU-CG98L5【委托】【评估】新需求-招标项目/询价对应流标、废标改善 fy start
                //取消 num
                Integer QuxNum = 0;
                //XLIU-CG98L5【委托】【评估】新需求-招标项目/询价对应流标、废标改善 fy end
                //中标 2022-6-29 yjk
                Integer bidNum = 0;
                //对手中标 2022-6-29 yjk
                Integer loseNum = 0;
                //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start
                tempTender.OlyNumberHosts__c = 0;
                tempTender.RivalHostsNumber__c = 0;
                tempTender.TotalNumberHosts__c = 0;
                Decimal OlyNum = 0;
                Decimal RivalNum = 0;
                Decimal TotalNum = 0;
                //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end
                //获取当前key的List
                for(Opportunity tempOp :BiddingDownOppList){
                    //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start
                    System.debug('lt123---------------------------------------');
                    if(tempOp.OlyNumberHosts__c == null){
                        tempOp.OlyNumberHosts__c = 0;
                    }
                    if(tempOp.RivalHostsNumber__c == null){
                        tempOp.RivalHostsNumber__c = 0;
                    }
                    OlyNum += tempOp.OlyNumberHosts__c;
                    RivalNum += tempOp.RivalHostsNumber__c;
                    TotalNum += tempOp.InquireNumberHosts__c;
                    //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end
                // 李慧娟备注 : 这里请替换成<SAP上传(WIN)>标识判断
                    //<!--询价状态-->
                    if(tempOp.SAP_Send_OK__c){
                    if(tempOp.SAP_Send_OK__c || '完毕'.equals(tempOp.StageName__c)){ // 2022-6-2 yjk SWAG-CEP9G8
                      //win 
                      WinNum += 1; 
                    }else if(tempOp.StageName__c.equals('失单')){
                      //失单
                      SHDNum += 1;
                    }
                    //XLIU-CG98L5【委托】【评估】新需求-招标项目/询价对应流标、废标改善 fy start
                    // else if(tempOp.StageName__c.equals('失单') || tempOp.StageName__c.equals('取消')){ //2022-5-23 yjk SWAG-CEP9G8
                    //   //失单
                    //   SHDNum += 1;
                    // }
                    else if(tempOp.StageName__c.equals('失单')){ //2022-5-23 yjk SWAG-CEP9G8
                            //失单
                        SHDNum += 1;
                    }
                    else if(tempOp.StageName__c.equals('取消')){ //2022-5-23 yjk SWAG-CEP9G8
                            //失单
                            QuxNum += 1;
                    }
                    //XLIU-CG98L5【委托】【评估】新需求-招标项目/询价对应流标、废标改善 fy end
                    //获取询价的医院(相关性时用)
                    if(!OppHospitalList.contains(tempOp.Hospital__c)&&tempOp.Hospital__c!=null){
                        OppHospitalList.add(tempOp.Hospital__c);
                    }
                    //2022-6-29 yjk 中标确认赋值 start
                    if('OLY中标'.equals(tempOp.ConfirmationofAward__c)){
                        bidNum++;
                    }else if('竞争对手中标'.equals(tempOp.ConfirmationofAward__c)){
                        loseNum++;
                    }
                    //2022-6-29 yjk 中标确认赋值 end
                }
                //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start
                tempTender.OlyNumberHosts__c = OlyNum;
                tempTender.RivalHostsNumber__c = RivalNum;
                tempTender.TotalNumberHosts__c = TotalNum;
                //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end
                //<!--询价状态-->
                if(WinNum == BiddingDownOppList.size()){
@@ -464,7 +536,14 @@
                }else if(WinNum>0&&SHDNum>0&&(WinNum + SHDNum) == BiddingDownOppList.size() ){
                    //部分Win,部分失单时, 状态为  部分成交
                    tempTender.OpportunityStatus__c = '部分成交';
                }else if(tempTender.OpportunityNum__c > 0){
                }
                //XLIU-CG98L5【委托】【评估】新需求-招标项目/询价对应流标、废标改善 fy start
                else if(QuxNum == BiddingDownOppList.size()){
                        //全部为取消.状态为 取消
                    tempTender.OpportunityStatus__c = '取消';
                }
                //XLIU-CG98L5【委托】【评估】新需求-招标项目/询价对应流标、废标改善 fy end
                else if(tempTender.OpportunityNum__c > 0){
                    //如果询价数量大于0的话就是 跟进中
                    tempTender.OpportunityStatus__c = '跟进中';
                }else{
@@ -472,6 +551,21 @@
                    tempTender.OpportunityStatus__c = '';
                }
                //<!---- 询价状态  end --->
                //2022-6-29 yjk 中标确认赋值 start
                if(bidNum > 0 && loseNum == 0){
                    tempTender.ConfirmationofAward__c = 'OLY中标';
                }else if(loseNum > 0 && bidNum == 0){
                    tempTender.ConfirmationofAward__c = '竞争对手中标';
                }else if(bidNum > 0 && loseNum > 0){
                    tempTender.ConfirmationofAward__c = '部分OLY中标';
                }else{
                    //DB202304056706  you 20230406 清空
                    tempTender.ConfirmationofAward__c = '';
                }
                //2022-6-29 yjk 中标确认赋值 end
                //<!------ 相关性 信息   start ----> 
                //定义Map存放当前招投标项目的五个医院
@@ -564,6 +658,8 @@
            }else {
                //清空
                tempTender.OpportunityStatus__c = '';
                //DB202304056706  you 20230406 清空
                tempTender.ConfirmationofAward__c = '';
            }
            updateTenderList.add(tempTender);
        }
@@ -592,7 +688,11 @@
            oppIds.add(link.Opportunity__c);
        }
        List<Opportunity> allRelativeOppList = [SELECT Id ,AccountId,Hospital__c,Department_Class__c,SAP_Send_OK__c,CreatedDate, Whether_Bidding__c,
        Old_BiddingProject_Bid__c, OwnerId, StageName__c, Bidding_Project_Name_Bid__c FROM Opportunity WHERE Id in :oppIds ORDER By createdDate ASC];
        Old_BiddingProject_Bid__c, OwnerId, StageName__c, Bidding_Project_Name_Bid__c, ConfirmationofAward__c
        //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start
        ,OlyNumberHosts__c, RivalHostsNumber__c, InquireNumberHosts__c
        //20221010  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end
        FROM Opportunity WHERE Id in :oppIds ORDER By createdDate ASC];
        // List<Opportunity> allRelativeOppList = [SELECT Id ,AccountId,Hospital__c,Department_Class__c,SAP_Send_OK__c,CreatedDate, Whether_Bidding__c,
        // Old_BiddingProject_Bid__c,Bidding_Project_Name_Bid__c ,StageName__c ,Bidding_Project_Name_Bid__r.Hospital__c,Bidding_Project_Name_Bid__r.Hospital1__c,
        // Bidding_Project_Name_Bid__r.Hospital2__c,Bidding_Project_Name_Bid__r.Hospital3__c,Bidding_Project_Name_Bid__r.Hospital4__c,
@@ -771,5 +871,444 @@
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
             i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
             i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
    }
}