From e9e1806b0f4b5bae1fc36204ccc5d6fdad52d66f Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期一, 05 六月 2023 11:22:08 +0800
Subject: [PATCH] Merge branch 'master' into LightningUpgradeProject

---
 force-app/main/default/classes/LostCancelReportHandler.cls |  122 ++++++++++++++++++++++++++++++++++------
 1 files changed, 102 insertions(+), 20 deletions(-)

diff --git a/force-app/main/default/classes/LostCancelReportHandler.cls b/force-app/main/default/classes/LostCancelReportHandler.cls
index a864cd5..5044614 100644
--- a/force-app/main/default/classes/LostCancelReportHandler.cls
+++ b/force-app/main/default/classes/LostCancelReportHandler.cls
@@ -30,7 +30,7 @@
 
     //2022-6-22 yjk 璇环璺熻繘浠诲姟 start
     protected override void afterInsert() {
-        updateTask();    
+        updateTask();  
     }
 
     // 2022-7-29 ssm XLIU-CGSC8R 銆愬鎵樸�慬鏀瑰杽銆戣浠烽噷鍒犻櫎鎵瑰噯鐨勫け鍗曟姤鍛婄姸鎬�1鑷姩鍙�
@@ -41,14 +41,15 @@
 
     private void updateTask(){
         List<Id> oppIdList = new List<Id>();
-        Set<Id> oppIdSet = new Set<Id>();
+        Set<Id> oppIdSet = new Set<Id>(); 
         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,9 +260,13 @@
             }
             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 瀹屾垚';
+                tsk.taskStatus__c = '03 瀹屾垚';
 	        }
 	        update taskList;
         }// 20220720 ljh update
@@ -231,15 +291,19 @@
             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銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
-            opp.RivalHostsNumber__c = 0;
+            opp.RivalHostsNumber__c = opp.RivalHostsNumber__c != null ? opp.RivalHostsNumber__c : 0;
             //20220930  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 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) {
-
                     //20220930  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
                     if(lcr.ProductClass__c == '涓绘満'){
                         opp.RivalHostsNumber__c += lcr.Quantity__c;
@@ -326,12 +390,13 @@
                     opp.of_lost_system_processor__c=lcr.PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c;
                 }
             }
-            //20230215 lt DB202302247719 start
+            //20230215 lt DB202302247719 start 
             if(arrMap.get(lcro).TotalAmountLost__c != null){
                 if(opp.LostPrices__c == null){
                     opp.LostPrices__c = 0;
                 }
                 opp.LostPrices__c+=arrMap.get(lcro).TotalAmountLost__c;
+                // System.debug('lt123---opp.LostPrices__c---澶卞崟閲戦2锛� '+opp.LostPrices__c);
             }
             //20230215 lt DB202302247719 end
 
@@ -345,7 +410,6 @@
             oppList.add(opp);
         }
         update oppList;
-
     }
     // tcm 20211126 鏇存柊璇环淇℃伅 end
 
@@ -404,13 +468,31 @@
         }
         System.debug('oppIds: ' + oppIds);
         if (oppIds.size() > 0) {
-            List<Opportunity> opps = [select Id, StageName, Final_Contract_Proceeded_Date__c, Lost_Opportunity_Date__c from Opportunity where Id in :oppIds and StageName in ('鏁楁垿', '鍓婇櫎')];
-            System.debug('opps: ' + opps);
+            //DB202303237846 lt 20230316 add   , Lost_Cancel_Report__c,Lost_Cancel_Report__r.Report_Status__c,Lost_Cancel_Report__r.LostType__c
+            List<Opportunity> opps = [select Id, StageName, Final_Contract_Proceeded_Date__c, Lost_Opportunity_Date__c, Lost_Cancel_Report__c,Lost_Cancel_Report__r.Report_Status__c,Lost_Cancel_Report__r.LostType__c from Opportunity where Id in :oppIds and StageName in ('鏁楁垿', '鍓婇櫎')];
+            System.debug('opps: ' + opps); 
+            //DB202303237846 lt 20230316 start 
+            Set<String> oppSet = new Set<String>();
+            List<Lost_Cancel_Report__c> oppreps = [select Id, Report_Status__c, LostType__c, Opportunity__c from Lost_Cancel_Report__c where Opportunity__c in :opps and Report_Status__c='鎵瑰噯' and LostType__c = '澶卞崟'];
+            if(oppreps.Size() > 0){
+                for(Lost_Cancel_Report__c lcp : oppreps){
+                    oppSet.add(lcp.Opportunity__c);
+                }
+            }
             if (opps.size() > 0) {
                 for (Opportunity opp : opps) {
-                    opp.StageName = '寮曞悎';
-                    opp.Final_Contract_Proceeded_Date__c = null;
-                    opp.Lost_Opportunity_Date__c = null;
+                    if(oppSet.size() > 0 && oppSet.contains(opp.Id)){
+                        continue;
+                   }else{
+                        opp.StageName = '寮曞悎';
+                        opp.Final_Contract_Proceeded_Date__c = null;
+                        opp.Lost_Opportunity_Date__c = null;
+                   }
+                   
+                    // if(opp.Lost_Cancel_Report__c == null || (opp.Lost_Cancel_Report__c != null && (opp.Lost_Cancel_Report__r.Report_Status__c != '鎵瑰噯' || opp.Lost_Cancel_Report__r.LostType__c != '澶卞崟'))){
+                        
+                    // }
+            //DB202303237846 lt 20230316 end
                 }
                 update opps;
             }

--
Gitblit v1.9.1