From 1727a4f4d02e429475608e60f142a63bc24127bc Mon Sep 17 00:00:00 2001
From: 19626 <1962676589@qq.com>
Date: 星期一, 23 十月 2023 10:07:34 +0800
Subject: [PATCH] 近期修改

---
 force-app/main/default/classes/TenderOpportunityLinkHandler.cls |  347 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 245 insertions(+), 102 deletions(-)

diff --git a/force-app/main/default/classes/TenderOpportunityLinkHandler.cls b/force-app/main/default/classes/TenderOpportunityLinkHandler.cls
index 197d4a5..3eb4da3 100644
--- a/force-app/main/default/classes/TenderOpportunityLinkHandler.cls
+++ b/force-app/main/default/classes/TenderOpportunityLinkHandler.cls
@@ -10,12 +10,13 @@
     this.newList = (List<Tender_Opportunity_Link__c>) Trigger.new;
     this.oldList = (List<Tender_Opportunity_Link__c>) Trigger.old;
 }
-
+ 
 protected override void afterInsert() {
     // 鍒ゆ柇鏄惁璺宠繃
+    updateTerminateTender(this.newList);  //lt 20230419 椤圭洰缁堟娴佺▼寮�鍙� add
     if (!StaticParameter.EscapeTOLinkTrigger) {
         updateTender(this.newList);
-        updateOppotunityByInsert(this.newList);
+        updateOppotunityByInsert(this.newList);      
     }
 }
 
@@ -39,6 +40,189 @@
             if (link.Tender_Opportunity_Uniq__c == null || link.Tender_Opportunity_Uniq__c == '') {
                 link.Tender_Opportunity_Uniq__c = link.Tender_information__c + '' + link.Opportunity__c;
             }
+        }
+    }
+}
+//DB202306372336  you start
+public void UpdateStrategic_department_Opp(List<Tender_Opportunity_Link__c> tenderList,List<Tender_information__c> UpdateTenders){
+    Map<String, Set<String>> updateTenMap = new Map<String, Set<String>>();//鎷涙爣椤圭洰id锛屾垬鐣ョ瀹ゅ垎绫�
+    //String partment_Opp='';
+        if(tenderList.size() > 0){
+            for (Tender_Opportunity_Link__c tender : tenderList){
+                 if(String.isNotBlank(tender.Opportunity__r.Department_Class__r.Department_Class_Label__c)){
+                    //String ten_Opp =tender.Opportunity__r.Department_Class__r.name.split(' ')[1];
+                    //if(tender.Opportunity__r.Department_Class__r.name.split(' ').size() ==3 ){
+                    //   ten_Opp =tender.Opportunity__r.Department_Class__r.name.split(' ')[2];
+                    //}
+                    String ten_Opp =tender.Opportunity__r.Department_Class__r.Department_Class_Label__c;
+                    Set<String> temp = new Set<String>();
+                    if(ten_Opp.indexOf('鍏朵粬') == -1){
+                        if(updateTenMap.containsKey(tender.Tender_information__c)){
+                            temp= updateTenMap.get(tender.Tender_information__c);
+                            temp.add(ten_Opp);
+                        } else{
+                            temp.add(ten_Opp);
+                        }
+                    }else{//鍏朵粬褰掓櫘澶�
+                        if(updateTenMap.containsKey(tender.Tender_information__c)){
+                            temp= updateTenMap.get(tender.Tender_information__c);
+                            temp.add('鏅绉�');
+                        } else{
+                            temp.add('鏅绉�');
+                        }
+                    }
+                    updateTenMap.put(tender.Tender_information__c,temp);  
+                    system.debug(tender.Opportunity__r.Department_Class__r.Department_Class_Label__c+'==temp=='+temp);
+                }
+                
+            }
+
+            if(null!=updateTenMap && updateTenMap.size()>0){
+                 for(String ksy :updateTenMap.keySet()){
+                    String partment_Opp=String.join(new List<String>(updateTenMap.get(ksy)), ';'); 
+                    system.debug('=====partment_Opp='+partment_Opp); 
+                    partment_Opp=partment_Opp.replaceAll(',', ';');
+                    if(null ==UpdateTenders || UpdateTenders.size()==0){
+                      Tender_information__c tin1 =new Tender_information__c();
+                      tin1.id=ksy;
+                      tin1.Strategic_department_Opp__c = partment_Opp;
+                      UpdateTenders.add(tin1);
+                    }else{
+                      for (Tender_information__c up : UpdateTenders){
+                        if(up.id== ksy){
+                           up.Strategic_department_Opp__c = partment_Opp; 
+                        }else{
+                          Tender_information__c tin2 =new Tender_information__c();
+                          tin2.id=ksy;
+                          tin2.Strategic_department_Opp__c = partment_Opp;
+                          UpdateTenders.add(tin2); 
+                        }
+
+                      }
+                    }
+
+                 }
+                }
+        }
+
+
+
+        //if(tenderList.size() > 0){
+        //    for (Tender_Opportunity_Link__c tender : tenderList){ 
+        //       if(String.isNotBlank(partment_Opp)){
+        //           partment_Opp.substring(0, partment_Opp.length()-1);
+        //           if(null ==UpdateTenders || UpdateTenders.size()==0){
+        //              Tender_information__c tin1 =new Tender_information__c();
+        //              tin1.id=tender.Tender_information__c;
+        //              tin1.Strategic_department_Opp__c = partment_Opp;
+        //              UpdateTenders.add(tin1);
+        //           }else{
+        //              for (Tender_information__c up : UpdateTenders){
+        //                if(up.id== tender.Tender_information__c){
+        //                   up.Strategic_department_Opp__c = partment_Opp; 
+        //                }else{
+        //                  Tender_information__c tin2 =new Tender_information__c();
+        //                  tin2.id=tender.Tender_information__c;
+        //                  tin2.Strategic_department_Opp__c = partment_Opp;
+        //                  UpdateTenders.add(tin2); 
+        //                }
+
+        //              }
+        //           }
+        //        }
+        //    }
+        //}
+}    
+ //DB202306372336  you end
+//lt 20230419 椤圭洰缁堟娴佺▼寮�鍙� 缁堟鐢宠鐘舵�佹竻闄� add
+//椤圭洰缁堟娴佺▼寮�鍙� -- 娓呴櫎鎷涙爣椤圭洰缁堟鐢宠鐨勪俊鎭紝椤圭洰閲嶅惎鏍囪瘑鎵撳嬀
+public void updateTerminateTender(List<Tender_Opportunity_Link__c> records){
+    if (records != null && records.size() > 0){
+        List<String> tenders = new List<String>();//DB202305552102 you 鍏宠仈鍙栨秷鐨勮浠� 椤圭洰涓嶉噸鍚�  鍙栦竴鏉ink
+        List<String> tenlinks = new List<String>();//DB202306372336  you start  鍙栧綋鍓嶆嫑鏍囦笅鎵�鏈塴ink
+
+        // 鑾峰緱瑕佹洿鏂扮殑鎷涙爣椤圭洰
+        for (Tender_Opportunity_Link__c record: records) {
+            String lhid=record.Tender_information__c+''+record.Opportunity__c;
+            if (!tenders.contains(lhid)) {
+                tenders.add(lhid);
+            }
+            //DB202306372336  you start
+            if(!tenlinks.contains(record.Tender_information__c)){
+                tenlinks.add(record.Tender_information__c);
+            }
+            //DB202306372336  you end
+            /**
+             if (!tenders.contains(record.Tender_information__c)) {
+                tenders.add(record.Tender_information__c);
+            }
+            **/
+        }
+
+        
+        /**
+        List<Tender_information__c> UpdateTenders = new List<Tender_information__c>();
+        if (tenders.size() > 0){
+            List<Tender_information__c> tenderList = [SELECT id, status__c, TerminateReason__c, IsTerminate__c,
+                                                             TerminateApprovalStatus__c, TerminateApprovalTime__c,
+                                                             ProjectRestartFLG__c,subInfoType__c
+                                                      FROM Tender_information__c 
+                                                      WHERE id in :tenders];
+
+            if(tenderList.size() > 0){
+                for (Tender_information__c tender : tenderList){
+                    //if(tender.status__c == '09.缁堟' && tender.TerminateReason__c != '缁忛攢鍟嗗師鍥�' && tender.subInfoType__c != '3-1锛氬簾鏍囧叕鍛�' && tender.subInfoType__c != '3-2锛氭祦鏍囧叕鍛�')
+                    if(tender.status__c == '09.缁堟'){
+                        tender.ProjectRestartFLG__c = true;
+                        tender.IsTerminate__c = null;
+                        tender.TerminateApprovalTime__c = null;
+                        tender.TerminateApprovalStatus__c = null;
+    
+                        UpdateTenders.add(tender);
+                    }
+                }
+            }
+        }
+        **/
+        //DB202305552102 you start
+        List<Tender_information__c> UpdateTenders = new List<Tender_information__c>();
+        List<Tender_Opportunity_Link__c> tolList = new List<Tender_Opportunity_Link__c>();
+        if (tenders.size() > 0) {
+           tolList =  [select id, Opportunity__r.stagename,Opportunity__r.Department_Class__r.Department_Class_Label__c, Tender_information__c,Tender_information__r.status__c,Tender_information__r.ProjectRestartFLG__c,Tender_information__r.IsTerminate__c,Tender_information__r.TerminateApprovalTime__c,Tender_information__r.TerminateApprovalStatus__c from Tender_Opportunity_Link__c where Tender_Opportunity_Uniq__c in :tenders];
+        }  
+        if(tolList.size() > 0){
+                for (Tender_Opportunity_Link__c tender : tolList){
+                    system.debug(tenders+'======='+tender.Tender_information__r.status__c+'=====缁堟===='+tender.Opportunity__r.stagename);
+                    if(tender.Tender_information__r.status__c == '09.缁堟' && tender.Opportunity__r.stagename !='鍓婇櫎'){
+                        Tender_information__c tin =new Tender_information__c();
+                        tin.id=tender.Tender_information__c;
+                        tin.ProjectRestartFLG__c = true;
+                        tin.IsTerminate__c = null;
+                        tin.TerminateApprovalTime__c = null;
+                        tin.TerminateApprovalStatus__c = null;
+                        UpdateTenders.add(tin);
+
+                    }
+                    
+                }
+        }    
+        //DB202305552102 you end
+        //DB202306372336  you start
+        List<Tender_Opportunity_Link__c> tenderList = new List<Tender_Opportunity_Link__c>();
+        if (tenlinks.size() > 0){
+            tenderList = [SELECT id, Opportunity__r.Department_Class__r.Department_Class_Label__c,Tender_information__c
+                                                      FROM Tender_Opportunity_Link__c 
+                                                      WHERE Tender_information__c in :tenlinks];
+        }
+        if(tenderList.size() > 0){
+          UpdateStrategic_department_Opp(tenderList,UpdateTenders);
+        }
+        system.debug('==闇�瑕佹洿鏂扮殑==='+UpdateTenders);        
+        //DB202306372336  you end
+        if(UpdateTenders.size() > 0){
+            StaticParameter.EscapeTenderInformationUpdate =false;
+            update UpdateTenders;
+            StaticParameter.EscapeTenderInformationUpdate =true;
         }
     }
 }
@@ -188,13 +372,15 @@
                         tender.Hospital4__c = fiveHospitalMap.get('Hospital4__c');
                     }
                 }
-                if (Trigger.isAfter && Trigger.isDelete) {
+                StaticParameter.EscapeTenderInformationUpdate = false;
+                if (Trigger.isAfter && Trigger.isDelete) {   
                     StaticParameter.EscapeOtherUpdateTenOwner = false;
                     update tender_list;
-                    StaticParameter.EscapeOtherUpdateTenOwner = true;
+                    StaticParameter.EscapeOtherUpdateTenOwner = true;                    
                 } else {
                     update tender_list;
                 }
+                StaticParameter.EscapeTenderInformationUpdate = true;
             }
         }
     }
@@ -338,6 +524,58 @@
 //20220718 you 璇环浠诲姟 start
 //鍒犻櫎link鏃讹紝浠诲姟鍙栨秷锛屾竻绌鸿浠蜂腑鏍囦俊鎭�
 public void updateOppotunityBeforeDelete(List<Tender_Opportunity_Link__c> records) {
+    //DB202306372336  you start 
+    List<String> tenlinks = new List<String>();// 鍙栧綋鍓嶆嫑鏍囦笅鎵�鏈塴ink
+    List<String> tenlink = new List<String>();// 鍙栧綋鍓嶅垹闄ょ殑link
+    if (records != null && records.size() > 0) {
+       for (Tender_Opportunity_Link__c record: records) {
+           if(!tenlinks.contains(record.Tender_information__c)){
+                tenlinks.add(record.Tender_information__c);
+            }  
+            if(!tenlink.contains(record.id)){
+                tenlink.add(record.id);
+            } 
+       } 
+    }  
+    List<Tender_information__c> UpdateTenders = new List<Tender_information__c>();  
+    List<Tender_Opportunity_Link__c> tenderList = new List<Tender_Opportunity_Link__c>();
+    if (tenlinks.size() > 0){
+        tenderList = [SELECT id, Opportunity__r.Department_Class__r.Department_Class_Label__c,Tender_information__c
+                                                  FROM Tender_Opportunity_Link__c 
+                                                  WHERE Tender_information__c in :tenlinks and id not in :tenlink];
+     }
+    
+    if(tenderList.size() > 0){
+       UpdateStrategic_department_Opp(tenderList,UpdateTenders);
+     } else{
+        //鍒犻櫎鎷涙爣椤圭洰鏈�鍚庝竴鏉ink
+        List<Tender_Opportunity_Link__c> tenderList1 = [SELECT id, Opportunity__r.Department_Class__r.Department_Class_Label__c,Tender_information__c
+                                                  FROM Tender_Opportunity_Link__c 
+                                                  WHERE id in :tenlink];
+        system.debug(tenderList1.size()+'==褰撳墠鍒犻櫎寰條ink=='+tenlink);
+        if(null!=tenderList1 && tenderList1.size()>0){
+            for(Tender_Opportunity_Link__c ti :tenderList1){
+                  Tender_information__c tin1 =new Tender_information__c();
+                  tin1.id=ti.Tender_information__c;
+                  tin1.Strategic_department_Opp__c = '';
+                  system.debug('鍒犻櫎杩涙潵浜�');
+                  UpdateTenders.add(tin1); 
+            }
+         
+        }                                          
+        
+     }
+     system.debug('=====UpdateTenders====='+UpdateTenders);
+    if(UpdateTenders.size() > 0){
+       StaticParameter.EscapeTenderInformationUpdate =false;
+       update UpdateTenders;
+       StaticParameter.EscapeTenderInformationUpdate =true;
+    }   
+    
+//DB202306372336  you end 
+
+
+
     if (records != null && records.size() > 0) {
         Set<String> oppTens = new Set<String>();//璇环锛屾嫑鏍囬」鐩� 鎷兼帴
         List<String> oppIds = new List<String>();
@@ -395,6 +633,7 @@
 
 // 鏇存柊璇环淇℃伅
 public void updateOppotunityByDelete(List<Tender_Opportunity_Link__c> records) {
+    
     if (records != null && records.size() > 0) {
         List<String> oppIds = new List<String>();
         //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy start 
@@ -444,7 +683,7 @@
                         //20220718 you 璇环浠诲姟 end
                         **/
                         // 20221028 ljh SWAG-CKL5UC start
-                        opp.LeakageNumber__c = null;
+                        //opp.LeakageNumber__c = null;  //lt 20230625 DB202306421819 銆怋UG銆戞紡鍗曟暟鏈夎 update
                         // 20221028 ljh SWAG-CKL5UC end
                     } else {
                         for (Tender_Opportunity_Link__c link : links) {
@@ -505,102 +744,6 @@
 }
  @TestVisible
     public static void testI() {
-        integer i = 0;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
-        i++;
+        
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1