From b81b49dd7cb35010f950923ec6ac9eb28b6a5709 Mon Sep 17 00:00:00 2001
From: 游畅 <youchang@prec-tech.com>
Date: 星期四, 24 十一月 2022 18:35:01 +0800
Subject: [PATCH] 20221124询价状态2 更新

---
 force-app/main/default/classes/TenderInformationHandler.cls     |  641 ++++++++++++++++++++++++++--------
 force-app/main/default/classes/OpportunityService.cls           |   71 +++
 force-app/main/default/classes/TenderOpportunityLinkHandler.cls |  328 +++++++++++++++++
 force-app/main/default/triggers/OpportunityHpDeptUpd.trigger    |   13 
 4 files changed, 883 insertions(+), 170 deletions(-)

diff --git a/force-app/main/default/classes/OpportunityService.cls b/force-app/main/default/classes/OpportunityService.cls
index 78c29d5..f8044db 100644
--- a/force-app/main/default/classes/OpportunityService.cls
+++ b/force-app/main/default/classes/OpportunityService.cls
@@ -53,6 +53,14 @@
     if(IdStr != null && String.isNotBlank(IdStr)) {
       sql += ' and id not in (select Opportunity__c from Tender_Opportunity_Link__c where Tender_information__c = :IdStr) ';
     }
+    // 20221014 ljh SWAG-CK28WT add start
+    String proId = UserInfo.getProfileId();
+    String p_2M4 = System.Label.ProfileId_2M4;
+    if(proId.substring(0,15) == p_2M4.substring(0,15)){
+       sql += ' AND OwnerId =\''+UserInfo.getUserId()+'\'';
+    }
+    System.debug('sql:'+sql);
+    // 20221014 ljh SWAG-CK28WT add end
     sql += '  limit 50';
     List<Opportunity> arrays = Database.query(sql);
     return JSON.serialize(arrays); 
@@ -103,6 +111,14 @@
     {
       sql += ' and Hospital__c in :hospital';
     }
+    // 20221014 ljh SWAG-CK28WT add start
+    String proId = UserInfo.getProfileId();
+    String p_2M4 = System.Label.ProfileId_2M4;
+    if(proId.substring(0,15) == p_2M4.substring(0,15)){
+       sql += ' AND OwnerId =\''+UserInfo.getUserId()+'\'';
+    }
+    System.debug('sql:'+sql);
+    // 20221014 ljh SWAG-CK28WT add end
     sql += '  limit 50';
     List<Opportunity> arrays = Database.query(sql);
 
@@ -217,8 +233,11 @@
       sql += 'Hospital1__c, ';
       sql += 'Hospital2__c, ';
       sql += 'Hospital3__c, ';
-      sql += 'Hospital4__c ';
-      sql += 'FROM Tender_information__c  WHERE Id = :BiddingId';
+      sql += 'Hospital4__c, ';
+      sql += 'publicDate__c, ';// 20221114 ljh SWAG-CKL5UC
+      sql += 'Tender_Order__c, ';  //20220620 you SWAG-CFD4SU 
+      sql += 'subInfoType__c ';  //20220718 you 鎷涙爣浠诲姟 
+      sql += 'FROM Tender_information__c  WHERE Id = :BiddingId order by Tender_Order__c desc,relativeTime_F__c desc'; //20220620 you SWAG-CFD4SU 澧炲姞 order by
       List<Tender_information__c> arrays = Database.query(sql);
       Tender_information__c tender = arrays[0];
       
@@ -270,6 +289,7 @@
       // }
       // 鏇存柊璇环
       List<Opportunity> upd_opps = new List<Opportunity>();
+      List<Opportunity> upd_opps1 = new List<Opportunity>();
       List<String> owners = new List<String>();
       // 鎻掑叆link
       if (all_selected_list.size() > 0) {
@@ -297,11 +317,15 @@
         }
         // 鎭㈠trigger鏍囪
         StaticParameter.EscapeTOLinkTrigger = false;
-
+        //20220620 you SWAG-CFD4SU 鏀归�� start  濮嬬粓鏄剧ず鏈�鏂扮殑 鈶� 3锛氱粨鏋�,鈶� 4锛氬彉鏇�,鈶� 2锛氬叕鍛�,鈶� 1锛氶鍛�,鈶� 5锛氬叾浠� 
+        List<String> tenIds = new List<String>();//20220718 you 鎷涙爣浠诲姟
+        system.debug('opportunityservicetest'+oppIds);
         if (oppIds.size() > 0) {
-          List<Opportunity> wait_upd_opps = [select id, Bidding_Project_Name_Bid__c, Bidding_Project_Name_Bid__r.InfoType__c from Opportunity where id in :oppIds and Bidding_Project_Name_Bid__r.InfoType__c != '3锛氱粨鏋�'];
+          // 20221114 SWAG-CKL5UC ljh 澧炲姞 Created_Day__c,LeadSource,LeakageNumber__c
+          List<Opportunity> wait_upd_opps = [select id,Opp_Order__c,Tender_Number__c, Bidding_Project_Name_Bid__c, Bidding_Project_Name_Bid__r.InfoType__c,Created_Day__c,LeadSource,LeakageNumber__c from Opportunity where id in :oppIds ];//and Bidding_Project_Name_Bid__r.InfoType__c != '3锛氱粨鏋�'];
           if (wait_upd_opps != null && wait_upd_opps.size() > 0) {
             for (Opportunity opp : wait_upd_opps) {
+              /**
               if (opp.Bidding_Project_Name_Bid__c == null || String.isBlank(opp.Bidding_Project_Name_Bid__c)) {
                 opp.Bidding_Project_Name_Bid__c = tender.Id;
                 opp.TenderBeginDate_Text__c = tender.TenderBeginTime__c;
@@ -310,13 +334,52 @@
                 opp.Bidding_Project_Name_Bid__c = tender.Id;
                 upd_opps.add(opp);
               }
+              **/
+              if(opp.Opp_Order__c <= tender.Tender_Order__c){
+                opp.Bidding_Project_Name_Bid__c =tender.Id;
+                //opp.TenderBeginDate_Text__c = tender.TenderDate__c;//鏇存敼璇环2鏃朵慨鏀硅繖涓瓧娈碉紝寮曠敤瓒�20锛宼ender.TenderBeginTime__c;
+                upd_opps.add(opp);
+                //20220715 you 鎷涙爣椤圭洰 start
+                if(String.isNotBlank(tender.InfoType__c) && tender.InfoType__c=='3锛氱粨鏋�' && String.isNotBlank(tender.subInfoType__c) && (tender.subInfoType__c=='3-5锛氫腑鏍囬�氱煡' || tender.subInfoType__c=='3-6锛氬悎鍚屽叕鍛�')){
+                  tenIds.add(opp.id); //绗﹀悎鏉′欢鐢熸垚浠诲姟
+                }
+                //20220715 you 鎷涙爣椤圭洰 end
+                break;
+              }
+
             }
+            //20220829 you SWAG-CHL67J start
+            for (Opportunity opp : wait_upd_opps) {
+              Integer returncount =0;
+              if(String.isNotBlank(tender.InfoType__c) && tender.InfoType__c!='1锛氶鍛�' && String.isNotBlank(tender.subInfoType__c) && tender.subInfoType__c!='3-1锛氬簾鏍囧叕鍛�' && tender.subInfoType__c!='3-2锛氭祦鏍囧叕鍛�'){  
+                  returncount += 1;
+                }
+              opp.Tender_Number__c = returncount;
+              // 20221114 ljh SWAG-CKL5UC start 
+              if(opp.LeakageNumber__c != 1 && tender.publicDate__c != null && String.isNotBlank(opp.LeadSource) && opp.LeadSource == '鎷涙爣缃�' && opp.Created_Day__c > tender.publicDate__c){
+                opp.LeakageNumber__c = 1;
+              }
+              // 20221114 ljh SWAG-CKL5UC start 
+              upd_opps1.add(opp);  
+            }  
+                 
+            //20220829 you SWAG-CHL67J end 
           }
         }
+        if (upd_opps1.size() > 0) {
+          update upd_opps1;
+        }
+        //20220620 you SWAG-CFD4SU 鏀归�� end
         // 鏇存柊璇环涓婄殑鎷涙爣椤圭洰
         if (upd_opps.size() > 0) {
           update upd_opps;
         }
+         //20220718 you 鎷涙爣浠诲姟 start
+                             
+        if (tenIds !=null && tenIds.size() > 0) {
+            Database.executeBatch(new TenderResultConfirmTaskBatch(tenIds));
+          }
+          //20220718 you 鎷涙爣浠诲姟 end
       }
 
       // 鏌ヨ鎷涙爣鏁伴噺骞舵洿鏂�
diff --git a/force-app/main/default/classes/TenderInformationHandler.cls b/force-app/main/default/classes/TenderInformationHandler.cls
index 17de6fe..7248ca1 100644
--- a/force-app/main/default/classes/TenderInformationHandler.cls
+++ b/force-app/main/default/classes/TenderInformationHandler.cls
@@ -41,32 +41,104 @@
 
     protected override void beforeUpdate() {
         //鍙嶉�昏緫鍒犻櫎 fxk
+        changeRelateOppDate();
         updateTenDel();
         AssignValueToAssistant();
         if (!StaticParameter.EscapeOtherUpdateTenOwner) {
             updateTenOwner();
         }
-                
+        // 20221011 ljh  SWAG-CK28WT start
+        updateTenOwnerJC();
+        // 20221011 ljh  SWAG-CK28WT end
+        //20220804 you 璇环浠诲姟
+        updateOppotunityBeforeUpdate();
+        
     }
 
     protected override void afterInsert() {
         // 鏍规嵁涓婇潰璧嬪�肩殑GI銆丼P鍔╃悊,琛屾斂绐楀彛,澶囧搧绐楀彛锛屾洿鏂板叡浜紝鍏变韩鍘熷洜涓嶄竴鏍�
         addShare();
-        sednMessage();
+        //sednMessage(); 20220729 you 鎷涙爣椤圭洰 鍙栨秷鍙戦�侀偖浠堕�氱煡
         // updateTenOwner();
     }
     protected override void afterUpdate() {
-        addShare();
-        sednMessage();
+        addShare();        
+        //sednMessage(); 20220729 you 鎷涙爣椤圭洰 鍙栨秷鍙戦�侀偖浠堕�氱煡
         updateWin();
 
+        // 涓爣浠诲姟 搴熸爣娴佹爣鏃舵竻绌轰腑鏍囨棩
+        clearConfirmationofAward();
+
         //2022-3-29 yjk SWAG-CCL6R7
-        updateOpportunity();
+        //updateOpportunity();//2022-5-18 yjk XLIU-CEJ38N 娉ㄩ噴鎺� 
     }
 
-
+    //淇敼椤圭洰闃舵锛岀敱 缁撴灉鍙樹负鍏朵粬锛岋紝鐩稿叧浠诲姟鍙栨秷
+    public void updateOppotunityBeforeUpdate() {
+        Set<String> Tenids = new Set<String>();//鎷涙爣椤圭洰id锛屾煡璇ink
+        Set<String> oppTens = new Set<String>();//鎷涙爣椤圭洰id锛屾煡璇ink
+        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)))) {
+                Tenids.add(record.id);
+            }
+        }
+        Map<String,String> InfoTypeMap = new Map<String,String>(); //鍒ゆ柇鏄惁鏄洜涓轰腑鏍囦慨鏀瑰緱
+        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];
+            if(null!=TenOppLinkList && TenOppLinkList.size()>0){
+                for(Tender_Opportunity_Link__c topl :TenOppLinkList){
+                    String oppid =String.valueOf(topl.Opportunity__c);
+                    String tenid =String.valueOf(topl.Tender_information__c);
+                    oppTens.add(oppid.subString(0,15)+tenid.subString(0,15));
+                    if (!oppIds.contains(topl.Opportunity__c)) {
+                        oppIds.add(topl.Opportunity__c);
+                    }
+                    if(!'3锛氱粨鏋�'.equals(topl.Tender_information__r.InfoType__c)){
+                       InfoTypeMap.put(topl.Opportunity__c,topl.Tender_information__c); 
+                    }   
+                }
+            }
+        }
+        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)];
+            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 = '淇敼椤圭洰闃舵';
+                }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
+                       }  
+                    }
+                }
+            } 
+            update opportunities;   
+        }
+    }    
+    //20220718 you 璇环浠诲姟 end
+    // 20221027 updateOpportunity() 鍏ㄦ枃鎼滅储杩� 娌℃湁璋冪敤鐨勶紝鏂规硶寮曠敤宸茬粡娉ㄩ噴锛岃鐩栫巼涓嶅鏂规硶浣撲篃娉ㄩ噴锛圫WAG-CKL5UC锛�,
     //2022-3-29 yjk SWAG-CCL6R7
-    private void updateOpportunity(){
+    /*private void updateOpportunity(){
         for(Tender_information__c newOne : newList){
             Tender_information__c oldOne = oldMap.get(newOne.id);
             if(oldOne.ResultDate__c == null && newOne.ResultDate__c != null){
@@ -79,142 +151,142 @@
                 }
             }
         }
-    }
+    }*/
+    //20220729 you 
+    //public void sednMessage() {
+    //    //瑙勫垯鏉′欢
+    //    //ISCHANGED(InfoType__c) && Text(InfoType__c) = '3锛氱粨鏋�' && (Text(IsBid__c) = '鏄�' || ( Text(IsBid__c) = '鍚�' && OpportunityNum__c != null && OpportunityNum__c > 0) )
+    //    // 1锛夋病鏈夊叧鑱旇浠凤紝纭鐩稿叧鎬э紝閭d箞灏卞彂缁橤I鍜孲P鍔╃悊锛�
+    //    // 2锛夊叧鑱旇浠峰悗锛岃浠风殑鎵�鏈変汉銆侀」鐩墍鏈変汉锛孏I鍜孲P鍔╃悊锛屾敹閭欢锛�
+    //    //鍏宠仈璇环 鍙戠粰璇环鎵�鏈変汉 鎷涙爣椤圭洰鎵�鏈変汉
+    //    //娌℃湁鍏宠仈璇环骞朵笖鍋氫簡鐩稿叧鎬х‘璁� 鍙戠粰鎷涙爣椤圭洰鎵�鏈変汉
 
-    public void sednMessage() {
-        //瑙勫垯鏉′欢
-        //ISCHANGED(InfoType__c) && Text(InfoType__c) = '3锛氱粨鏋�' && (Text(IsBid__c) = '鏄�' || ( Text(IsBid__c) = '鍚�' && OpportunityNum__c != null && OpportunityNum__c > 0) )
-        // 1锛夋病鏈夊叧鑱旇浠凤紝纭鐩稿叧鎬э紝閭d箞灏卞彂缁橤I鍜孲P鍔╃悊锛�
-        // 2锛夊叧鑱旇浠峰悗锛岃浠风殑鎵�鏈変汉銆侀」鐩墍鏈変汉锛孏I鍜孲P鍔╃悊锛屾敹閭欢锛�
-        //鍏宠仈璇环 鍙戠粰璇环鎵�鏈変汉 鎷涙爣椤圭洰鎵�鏈変汉
-        //娌℃湁鍏宠仈璇环骞朵笖鍋氫簡鐩稿叧鎬х‘璁� 鍙戠粰鎷涙爣椤圭洰鎵�鏈変汉
+    //    //1.鍒ゆ柇鏄惁绗﹀悎澶ф潯浠� 鎷垮埌鎷涙爣id
+    //    Set<Id> zbIds = new Set<Id>();
+    //    //鎷垮埌鎷涙爣id , 鎷涙爣鎵�鏈変汉 GI/SP鍔╃悊 鐨勯偖浠跺湴鍧�
+    //    Map<Id, Set<String>> zbOppMap = new Map<Id, Set<String>>();
+    //    List<Tender_information__c> tlist = new List<Tender_information__c>();
 
-        //1.鍒ゆ柇鏄惁绗﹀悎澶ф潯浠� 鎷垮埌鎷涙爣id
-        Set<Id> zbIds = new Set<Id>();
-        //鎷垮埌鎷涙爣id , 鎷涙爣鎵�鏈変汉 GI/SP鍔╃悊 鐨勯偖浠跺湴鍧�
-        Map<Id, Set<String>> zbOppMap = new Map<Id, Set<String>>();
-        List<Tender_information__c> tlist = new List<Tender_information__c>();
+    //    for (Tender_information__c ten : newList) {
+    //        // if (ten.InfoType__c == '3锛氱粨鏋�' &&
+    //        //     (ten.IsBid__c == '鏄�' || (ten.IsBid__c == '鍚�' && ten.OpportunityNum__c != null && ten.OpportunityNum__c > 0))
+    //        //     && (Trigger.isInsert || (Trigger.isUpdate && oldMap.get(ten.Id).InfoType__c != '3锛氱粨鏋�'))) {
+    //        //     zbIds.add(ten.Id);
+    //        // }
+    //        // 鍒ゆ柇鏉′欢淇敼
+    //        if (ten.InfoType__c == '3锛氱粨鏋�' && (Trigger.isInsert || (Trigger.isUpdate && oldMap.get(ten.Id).InfoType__c != '3锛氱粨鏋�'))) {
+    //            // 濡傛灉鎷涙爣鎵�鏈変汉涓虹郴缁熺鐞嗗憳锛圤lympusSystem锛夋椂闇�瑕佽烦杩�
+    //            if (ten.Ownerid != '00510000000gmxH') {
+    //                zbIds.add(ten.Id);
+    //            }
+    //        }
+    //    }
+    //    if (zbIds.size() > 0) {
+    //        tlist = [select Id, GI_assistant__r.Email, SP_assistant__r.Email, Hospital__r.Name, BudgetAmount__c, Name, department__r.Name, OpenBidingTime__c, Owner.Alias, Owner.Email from Tender_information__c where id in :zbIds];
+    //        for (Tender_information__c ten : tlist) {
+    //            if (!zbOppMap.containsKey(ten.Id)) {
+    //                zbOppMap.put(ten.Id, new Set<String>());
+    //            }
+    //            zbOppMap.get(ten.Id).add(ten.Owner.Email);
 
-        for (Tender_information__c ten : newList) {
-            // if (ten.InfoType__c == '3锛氱粨鏋�' &&
-            //     (ten.IsBid__c == '鏄�' || (ten.IsBid__c == '鍚�' && ten.OpportunityNum__c != null && ten.OpportunityNum__c > 0))
-            //     && (Trigger.isInsert || (Trigger.isUpdate && oldMap.get(ten.Id).InfoType__c != '3锛氱粨鏋�'))) {
-            //     zbIds.add(ten.Id);
-            // }
-            // 鍒ゆ柇鏉′欢淇敼
-            if (ten.InfoType__c == '3锛氱粨鏋�' && (Trigger.isInsert || (Trigger.isUpdate && oldMap.get(ten.Id).InfoType__c != '3锛氱粨鏋�'))) {
-                // 濡傛灉鎷涙爣鎵�鏈変汉涓虹郴缁熺鐞嗗憳锛圤lympusSystem锛夋椂闇�瑕佽烦杩�
-                if (ten.Id != '00510000000gmxH') {
-                    zbIds.add(ten.Id);
-                }
-            }
-        }
-        if (zbIds.size() > 0) {
-            tlist = [select Id, GI_assistant__r.Email, SP_assistant__r.Email, Hospital__r.Name, BudgetAmount__c, Name, department__r.Name, OpenBidingTime__c, Owner.Alias, Owner.Email from Tender_information__c where id in :zbIds];
-            for (Tender_information__c ten : tlist) {
-                if (!zbOppMap.containsKey(ten.Id)) {
-                    zbOppMap.put(ten.Id, new Set<String>());
-                }
-                zbOppMap.get(ten.Id).add(ten.Owner.Email);
+    //        }
+    //        //鍙栧緱璇环
+    //        // 鎷涙爣-璇环鍏宠仈淇敼 20210817 start
+    //        // List<Opportunity> oppList = new List<Opportunity>();
+    //        // oppList = [select id,Owner.Email,Bidding_Project_Name_Bid__c,Bidding_Project_Name_Bid__r.owner.Email from Opportunity where Bidding_Project_Name_Bid__c in :zbIds];
+    //        // if (oppList.size() > 0) {
+    //        //     for (Opportunity opp : oppList) {
+    //        //         // 鑳借蛋鍒拌繖璇存槑 璇环鐨勬墍鏈変汉銆侀」鐩墍鏈変汉 涔熷緱鍙戦偖浠�
+    //        //         if (!zbOppMap.containsKey(opp.Bidding_Project_Name_Bid__c)) {
+    //        //             zbOppMap.put(opp.Bidding_Project_Name_Bid__c, new Set<String>());
+    //        //         }
+    //        //         zbOppMap.get(opp.Bidding_Project_Name_Bid__c).add(opp.Owner.Email);
+    //        //         // zbOppMap.get(opp.Bidding_Project_Name_Bid__c).add(opp.Bidding_Project_Name_Bid__r.owner.Email);
+    //        //     }
+    //        // }
+    //        List<Tender_Opportunity_Link__c> link_list = [select id, Tender_information__c, Opportunity__r.Owner.Email from Tender_Opportunity_Link__c where Tender_information__c in :zbIds];
+    //        if (link_list != null && link_list.size() > 0) {
+    //            for (Tender_Opportunity_Link__c link : link_list) {
+    //                // 鑳借蛋鍒拌繖璇存槑 璇环鐨勬墍鏈変汉銆侀」鐩墍鏈変汉 涔熷緱鍙戦偖浠�
+    //                if (!zbOppMap.containsKey(link.Tender_information__c)) {
+    //                    zbOppMap.put(link.Tender_information__c, new Set<String>());
+    //                }
+    //                zbOppMap.get(link.Tender_information__c).add(link.Opportunity__r.Owner.Email);
+    //            }
+    //        }
+    //        // 鎷涙爣-璇环鍏宠仈淇敼 20210817 end
+    //    }
 
-            }
-            //鍙栧緱璇环
-            // 鎷涙爣-璇环鍏宠仈淇敼 20210817 start
-            // List<Opportunity> oppList = new List<Opportunity>();
-            // oppList = [select id,Owner.Email,Bidding_Project_Name_Bid__c,Bidding_Project_Name_Bid__r.owner.Email from Opportunity where Bidding_Project_Name_Bid__c in :zbIds];
-            // if (oppList.size() > 0) {
-            //     for (Opportunity opp : oppList) {
-            //         // 鑳借蛋鍒拌繖璇存槑 璇环鐨勬墍鏈変汉銆侀」鐩墍鏈変汉 涔熷緱鍙戦偖浠�
-            //         if (!zbOppMap.containsKey(opp.Bidding_Project_Name_Bid__c)) {
-            //             zbOppMap.put(opp.Bidding_Project_Name_Bid__c, new Set<String>());
-            //         }
-            //         zbOppMap.get(opp.Bidding_Project_Name_Bid__c).add(opp.Owner.Email);
-            //         // zbOppMap.get(opp.Bidding_Project_Name_Bid__c).add(opp.Bidding_Project_Name_Bid__r.owner.Email);
-            //     }
-            // }
-            List<Tender_Opportunity_Link__c> link_list = [select id, Tender_information__c, Opportunity__r.Owner.Email from Tender_Opportunity_Link__c where Tender_information__c in :zbIds];
-            if (link_list != null && link_list.size() > 0) {
-                for (Tender_Opportunity_Link__c link : link_list) {
-                    // 鑳借蛋鍒拌繖璇存槑 璇环鐨勬墍鏈変汉銆侀」鐩墍鏈変汉 涔熷緱鍙戦偖浠�
-                    if (!zbOppMap.containsKey(link.Tender_information__c)) {
-                        zbOppMap.put(link.Tender_information__c, new Set<String>());
-                    }
-                    zbOppMap.get(link.Tender_information__c).add(link.Opportunity__r.Owner.Email);
-                }
-            }
-            // 鎷涙爣-璇环鍏宠仈淇敼 20210817 end
-        }
+    //    if (zbOppMap.size() > 0) {
+    //        if (tlist.size() > 0) {
+    //            List<Messaging.SingleEmailMessage> sendMails = new List<Messaging.SingleEmailMessage>();
 
-        if (zbOppMap.size() > 0) {
-            if (tlist.size() > 0) {
-                List<Messaging.SingleEmailMessage> sendMails = new List<Messaging.SingleEmailMessage>();
+    //            for (Tender_information__c ten : tlist) {
+    //                if (zbOppMap.containsKey(ten.Id)) {
+    //                    String body = '';
+    //                    String title = '';
+    //                    String BudgetAmount = ten.BudgetAmount__c == null ? '' : ten.BudgetAmount__c + '';
+    //                    String HospitalName = ten.Hospital__c == null ? '' : ten.Hospital__r.Name;
+    //                    String departmentName = ten.department__c == null ? '' : ten.department__r.Name;
+    //                    String OpenBidingTime = ten.OpenBidingTime__c == null ? '' : ten.OpenBidingTime__c.format();
 
-                for (Tender_information__c ten : tlist) {
-                    if (zbOppMap.containsKey(ten.Id)) {
-                        String body = '';
-                        String title = '';
-                        String BudgetAmount = ten.BudgetAmount__c == null ? '' : ten.BudgetAmount__c + '';
-                        String HospitalName = ten.Hospital__c == null ? '' : ten.Hospital__r.Name;
-                        String departmentName = ten.department__c == null ? '' : ten.department__r.Name;
-                        String OpenBidingTime = ten.OpenBidingTime__c == null ? '' : ten.OpenBidingTime__c.format();
+    //                    title = '涓爣缁撴灉锛�' + ten.Hospital__r.Name + ' 棰勭畻閲戦' + BudgetAmount + '宸叉湁涓爣缁撴灉璇风‘璁�';
 
-                        title = '涓爣缁撴灉锛�' + ten.Hospital__r.Name + ' 棰勭畻閲戦' + BudgetAmount + '宸叉湁涓爣缁撴灉璇风‘璁�';
+    //                    body += '椤圭洰鍚嶏細' + ten.Name + '<br/>';
+    //                    body += '棰勭畻閲戦锛�' + BudgetAmount + '<br/>';
+    //                    body += '鍖婚櫌锛�' + HospitalName + '<br/>';
+    //                    // body += '鎴樼暐绉戝锛�'+departmentName + '<br/>';
+    //                    body += '涓爣鏃ワ細' + OpenBidingTime + '<br/>';
+    //                    body += '涓绘媴褰擄細' + ten.Owner.Alias + '<br/>';
+    //                    body += '鎷涙姇鏍囬摼鎺ワ細 <br/>';
+    //                    body += '<a href="' + URL.getSalesforceBaseUrl().toExternalForm() + '/' + ten.Id  + '">' + URL.getSalesforceBaseUrl().toExternalForm() + '/' + ten.Id + '</a><br/>';
+    //                    // body += '鏀朵欢浜�: '+zbOppMap.get(ten.Id);
 
-                        body += '椤圭洰鍚嶏細' + ten.Name + '<br/>';
-                        body += '棰勭畻閲戦锛�' + BudgetAmount + '<br/>';
-                        body += '鍖婚櫌锛�' + HospitalName + '<br/>';
-                        // body += '鎴樼暐绉戝锛�'+departmentName + '<br/>';
-                        body += '涓爣鏃ワ細' + OpenBidingTime + '<br/>';
-                        body += '涓绘媴褰擄細' + ten.Owner.Alias + '<br/>';
-                        body += '鎷涙姇鏍囬摼鎺ワ細 <br/>';
-                        body += '<a href="' + URL.getSalesforceBaseUrl().toExternalForm() + '/' + ten.Id  + '">' + URL.getSalesforceBaseUrl().toExternalForm() + '/' + ten.Id + '</a><br/>';
-                        // body += '鏀朵欢浜�: '+zbOppMap.get(ten.Id);
+    //                    List<String> toMailList = new List<String>();
+    //                    // List<String> toccList = new List<String>();
+    //                    // emas.add(UserInfo.getUserEmail());
+    //                    //鏀朵俊浜�
+    //                    toMailList.addAll(zbOppMap.get(ten.Id));
+    //                    // if (toMailList.contains(null)) {
+    //                    // toMailList.remove(null);
+    //                    // }
+    //                    // toMailList.add('rentongxiao@prec-tech.com');
+    //                    //鎶勯�佷汉
+    //                    // toccList.add('gzw@prec-tech.com');
+    //                    // toccList.add('rentongxiao@prec-tech.com');
+    //                    Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage();
+    //                    messageNEW.subject = title;
+    //                    //messageNEW.plainTextBody = body;
+    //                    messageNEW.htmlBody = body;
+    //                    messageNEW.setCharset('UTF-8');
+    //                    messageNEW.toAddresses = toMailList;
+    //                    // messageNEW.ccAddresses = toccList;
+    //                    sendMails.add(messageNEW);
+    //                }
+    //            }
 
-                        List<String> toMailList = new List<String>();
-                        // List<String> toccList = new List<String>();
-                        // emas.add(UserInfo.getUserEmail());
-                        //鏀朵俊浜�
-                        toMailList.addAll(zbOppMap.get(ten.Id));
-                        // if (toMailList.contains(null)) {
-                        // toMailList.remove(null);
-                        // }
-                        // toMailList.add('rentongxiao@prec-tech.com');
-                        //鎶勯�佷汉
-                        // toccList.add('gzw@prec-tech.com');
-                        // toccList.add('rentongxiao@prec-tech.com');
-                        Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage();
-                        messageNEW.subject = title;
-                        //messageNEW.plainTextBody = body;
-                        messageNEW.htmlBody = body;
-                        messageNEW.setCharset('UTF-8');
-                        messageNEW.toAddresses = toMailList;
-                        // messageNEW.ccAddresses = toccList;
-                        sendMails.add(messageNEW);
-                    }
-                }
-
-                if (sendMails.size() > 0) {
-                    for (Messaging.SingleEmailMessage mc : sendMails) {
-                        List<Messaging.SingleEmailMessage> tempsendMails = new List<Messaging.SingleEmailMessage>();
-                        tempsendMails.add(mc);  
-                        Messaging.SendEmailResult[] results = null;                      
-                        if (!NFMUtil.isSandbox()) {
-                            results = messaging.sendEmail(tempsendMails);
-                        }
-                        if (results != null && results.size() > 0) {
-                            for (Integer i = 0; i < results.size(); i++) {
-                                if (results[i].success == false) {
-                                    System.debug('閭欢:::' + mc.getSubject() + '鍙戦�佸け璐�');
-                                } else {
-                                    System.debug('閭欢:::' + mc.getSubject() + '鍙戦�佹垚鍔�');
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
+    //            if (sendMails.size() > 0) {
+    //                for (Messaging.SingleEmailMessage mc : sendMails) {
+    //                    List<Messaging.SingleEmailMessage> tempsendMails = new List<Messaging.SingleEmailMessage>();
+    //                    tempsendMails.add(mc);  
+    //                    Messaging.SendEmailResult[] results = null;                      
+    //                    if (!NFMUtil.isSandbox()) {
+    //                        results = messaging.sendEmail(tempsendMails);
+    //                    }
+    //                    if (results != null && results.size() > 0) {
+    //                        for (Integer i = 0; i < results.size(); i++) {
+    //                            if (results[i].success == false) {
+    //                                System.debug('閭欢:::' + mc.getSubject() + '鍙戦�佸け璐�');
+    //                            } else {
+    //                                System.debug('閭欢:::' + mc.getSubject() + '鍙戦�佹垚鍔�');
+    //                            }
+    //                        }
+    //                    }
+    //                }
+    //            }
+    //        }
+    //    }
+    //}
 
 
 
@@ -392,6 +464,12 @@
         //鍙栧�奸『搴忔槸锛氭墍鏈変汉锛屼箣鍚庢槸gi鍔╃悊锛屾帴涓嬫潵鏄痵p鍔╃悊锛屾帴涓嬫潵鏄垬鐣ョ瀹ゆ墍鏈変汉 鎵�浠ュ�掔潃鏉�
         List<Tender_information__Share> tenShareList = new List<Tender_information__Share>();
         for (Tender_information__c tenc : newList) {
+            // 20221013 ljh SWAG-CK28WT start
+            // 闆嗛噰椤圭洰 鍚庣画鍏变韩涓嶉渶瑕侊紝鍙妸鍘熸潵鐨勫叡浜垹闄�
+            if(tenc.CentralizedProject__c){
+                continue;
+            }
+            // 20221013 ljh SWAG-CK28WT start
             //涓�涓猰ap涓� 閽堝涓�鏉℃嫑鎶曟爣璁″垝鐨勫叡浜�
             Map<Id, Tender_information__Share> sharemap = new Map<Id, Tender_information__Share>();
             //1.鍏堣缃� 鍖婚櫌鎷呭綋鐨勫叡浜�
@@ -521,7 +599,7 @@
             tenShareList.addAll(sharemap.values());
 
         }
-
+        
         //鐜板湪鐢ㄧ殑鏄叏鍒犲叏鍔犵殑鏂规硶锛屾病鏈夊啀鍒ゆ柇鏄惁鍙戠敓鏀瑰彉浜�
         //鍒犻櫎
         List<Tender_information__Share> beforeShareList =
@@ -538,6 +616,9 @@
         }
     }
 
+    /**
+     * 2022-04-03 澧炲姞鍒ゆ柇 褰撶敤鎴锋棤鏁堟椂涔熻烦杩囪缃�
+     */
     public void AssignValueToAssistant() {
         //鏍规嵁ocsm绠$悊鐪佺殑鍔╃悊璁剧疆褰撳墠鎷涙姇鏍囬」鐩殑gi/sp鍔╃悊
         Map<String, OCM_Management_Province__c> mpMap = new Map<String, OCM_Management_Province__c>();
@@ -545,7 +626,6 @@
         for (OCM_Management_Province__c mp : [SELECT id, Name, GI_assistant__c, SP_assistant__c, SP_assistant__r.IsActive, GI_assistant__r.IsActive, Window2__c, Window2__r.IsActive, Admin_assistant3__c, Admin_assistant3__r.IsActive, TenderAssistant1__c, TenderAssistant1__r.IsActive, TenderAssistant2__c, TenderAssistant2__r.IsActive, Window1__c, Window1__r.IsActive FROM OCM_Management_Province__c]) {
             mpMap.put(mp.Name, mp);
         }
-
         //璁剧疆GI/SP鍔╃悊  琛屾斂鍔╃悊銆佸鍝佺獥鍙�
         //鐩存帴璁剧疆 淇℃伅璐熻矗浜�(鍔╃悊) 涓篏I鍔╃悊
         for (Tender_information__c info : newList) {
@@ -568,26 +648,30 @@
                             info.GI_assistant__c = ocm.GI_assistant__c;
                         }
                         if (info.InfoOwner__c != ocm.GI_assistant__c) {
-                            info.InfoOwner__c = ocm.GI_assistant__c;
+                            if(info.CentralizedProject__c == false){ // 20221012 ljh SWAG-CK28WT 娣诲姞鐨刬f
+                                info.InfoOwner__c = ocm.GI_assistant__c;
+                            }
                         }
                     }
                     // 澧炲姞GI鍔╃悊涓虹┖鏃剁殑澶勭悊锛屾竻绌烘嫑鏍囬」鐩殑GI鍔╃悊鍜屼俊鎭礋璐d汉锛堝姪鐞嗭級 20210813
-                    else if (ocm.GI_assistant__c == null) {
+                    else if (ocm.GI_assistant__c == null || !ocm.GI_assistant__r.IsActive) {
                         info.GI_assistant__c = null;
-                        info.InfoOwner__c = ocm.GI_assistant__c;
+                        if(info.CentralizedProject__c == false){ // 20221012 ljh SWAG-CK28WT 娣诲姞鐨刬f
+                            info.InfoOwner__c = null;
+                        }
                     }
                     if (ocm.SP_assistant__r.IsActive && info.SP_assistant__c != ocm.SP_assistant__c) {
                         info.SP_assistant__c = ocm.SP_assistant__c;
                     }
                     // 澧炲姞SP鍔╃悊涓虹┖鏃剁殑澶勭悊锛屾竻绌烘嫑鏍囬」鐩殑SP鍔╃悊 20210813
-                    else if (ocm.SP_assistant__c == null) {
+                    else if (ocm.SP_assistant__c == null || !ocm.GI_assistant__r.IsActive) {
                         info.SP_assistant__c = null;
                     }
                     if (ocm.Window2__r.IsActive && info.Window2__c != ocm.Window2__c) {
                         info.Window2__c = ocm.Window2__c;
                     }
                     // 娓呯┖琛屾斂绐楀彛 20210813
-                    else if (ocm.Window2__c == null) {
+                    else if (ocm.Window2__c == null || !ocm.Window2__r.IsActive) {
                         info.Window2__c = null;
                     }
                     //
@@ -599,14 +683,14 @@
                         info.TenderAssistant1__c = ocm.TenderAssistant1__c;
                     }
                     // 娓呯┖鎷涙爣鍔╃悊1 20210813
-                    else if (ocm.TenderAssistant1__c == null) {
+                    else if (ocm.TenderAssistant1__c == null || !ocm.TenderAssistant1__r.IsActive) {
                         info.TenderAssistant1__c = null;
                     }
                     if (ocm.TenderAssistant2__r.IsActive && info.TenderAssistant2__c != ocm.TenderAssistant2__c) {
                         info.TenderAssistant2__c = ocm.TenderAssistant2__c;
                     }
                     // 娓呯┖鎷涙爣鍔╃悊2 20210813
-                    else if (ocm.TenderAssistant2__c == null) {
+                    else if (ocm.TenderAssistant2__c == null || !ocm.TenderAssistant2__r.IsActive) {
                         info.TenderAssistant2__c = null;
                     }
 
@@ -615,7 +699,7 @@
                         info.YingyeWindow__c = ocm.Window1__c;
                     }
                     // 娓呯┖钀ヤ笟绐楀彛 20210813
-                    else if (ocm.Window1__c == null) {
+                    else if (ocm.Window1__c == null || !ocm.Window1__r.IsActive) {
                         info.YingyeWindow__c = null;
                     }
                 }
@@ -627,12 +711,33 @@
                         || tenDepartList.contains('01210000000QezoAAC')
                         || tenDepartList.contains('01210000000QeztAAC')){
                         System.debug('=====-----'+info.department_selection__c);
-                        info.InfoOwner__c = info.SP_assistant__c;
+                        if(info.CentralizedProject__c == false){ // 20221012 ljh SWAG-CK28WT 娣诲姞鐨刬f
+                            info.InfoOwner__c = info.SP_assistant__c;
+                        }
+                        
                     }
                 }
                 // add 鎴樼暐绉戝鍒嗙被涓烘櫘澶栫銆佹硨灏跨銆佸绉戙�佽�抽蓟鍠夌鏃讹紝淇℃伅璐熻矗浜猴紙鍔╃悊锛変慨鏀逛负 SP鍔╃悊 2021銆�11銆�11 fxk end
+                // 20221012 ljh SWAG-CK28WT start
+                if(info.CentralizedProject__c){
+                    // 娓呴櫎杩欎簺浜鸿祴鍊� 锛堝氨娌℃湁鏉冮檺浜嗭級
+                    info.GI_assistant__c = null;
+                    info.SP_assistant__c = null;
+                    info.Window2__c = null;
+                    info.TenderAssistant1__c = null;
+                    info.TenderAssistant2__c = null;
+                    info.YingyeWindow__c = null;
+                }
+                // 20221012 ljh SWAG-CK28WT end
             }
+            // 20221027 ljh SWAG-CKL5UC add start
+            // 椤圭洰涓綋缁撴灉璁板綍鏃ユ湁鍊煎叕鍛婅褰曟棩涓虹┖鏃讹紝缁欏叕鍛婅褰曟棩璧嬪�奸�昏緫=缁撴灉璁板綍鏃�-15澶�
+            if(info.ResultDate__c != null && info.publicDate__c == null){
+                info.publicDate__c = info.ResultDate__c.addDays(-15);
+            }
+            // 20221027 ljh SWAG-CKL5UC add start
         }
+        
     }
 // fxk 2021/8/3 鍙嶉�昏緫鍒犻櫎 Star
     private void updateTenDel() {
@@ -646,44 +751,152 @@
             }
         }
     }
+
+    private void changeRelateOppDate(){
+        System.debug(LoggingLevel.INFO, '*** 杩涘叆鏂规硶: ');
+        List<String> oldUserOrGroups = new List<String>();
+        Map<Id,Tender_information__c> tOldMap = (Map<Id,Tender_information__c>) Trigger.oldMap;
+        Map<Id,Tender_information__c> tNewMap = (Map<Id,Tender_information__c>) Trigger.newMap;
+        List<Date> cd = new List<Date>();
+        System.debug(LoggingLevel.INFO, '*** cd: ' + cd);
+        System.debug(LoggingLevel.INFO, '*** tOldMap: ' + tOldMap);
+        for(Tender_information__c t:(List<Tender_information__c>) Trigger.new){
+            System.debug(LoggingLevel.INFO, '*** 杩涘叆for寰幆: ');
+            System.debug(LoggingLevel.INFO, '*** t: ' + t);
+            if(Trigger.isUpdate){
+                if (String.isNotBlank(t.IsRelateProject__c) && t.IsRelateProject__c == '鏄�' && t.relativeTime__c == null && System.Label.ProfileId_2S6.equals(UserInfo.getProfileId())) {
+                    t.relativeTime__c = Datetime.now();
+                }
+                System.debug(LoggingLevel.INFO, '*** tOldMap: ' + tOldMap.get(t.Id).relativeDate__c);
+                System.debug(LoggingLevel.INFO, '*** t.relativeDate__c: ' + t.relativeDate__c);
+                // if(tOldMap.get(t.Id).relativeDate__c != null && t.relativeDate__c != tOldMap.get(t.Id).relativeDate__c){
+                //lt 20221114 DB202211270805 銆愮揣鎬ャ�戞嫑鏍囬」鐩槸鍚︽寜鏃跺叧鑱旇绠楅敊璇� start
+                // if(t.relativeDate__c != null && t.relativeDate__c != tOldMap.get(t.Id).relativeDate__c){
+                if(((t.OBSAP_relativeTime__c != null || t.relativeTime_F__c != null) && t.Tender_Olympus__c == null) || (t.relativeDate__c != null && t.relativeDate__c != tOldMap.get(t.Id).relativeDate__c)){
+                //lt 20221114 DB202211270805 銆愮揣鎬ャ�戞嫑鏍囬」鐩槸鍚︽寜鏃跺叧鑱旇绠楅敊璇� end
+                    System.debug(LoggingLevel.INFO, '*** 杩涘叆if璇彞: ');
+                    String datastr = String.valueOf(t.relativeDate__c);
+                    cd.add( Date.valueOf(datastr.substring(0,10)) );
+                    System.debug(LoggingLevel.INFO, '*** cd: ' + cd);
+                }
+            }
+        }
+        Map<Date,String> lm = new Map<Date,String>();
+        if(cd.size() > 0){
+            for(OlympusCalendar__c oc:[SELECT Id,Date__c FROM OlympusCalendar__c WHERE Date__c IN:cd]){
+                lm.put(oc.Date__c,oc.Id); 
+                System.debug(LoggingLevel.INFO, '*** map璧嬪��: ');    
+            }
+    
+            for(Tender_information__c l:(List<Tender_information__c>) Trigger.new){
+                //lt 20221114 DB202211270805 銆愮揣鎬ャ�戞嫑鏍囬」鐩槸鍚︽寜鏃跺叧鑱旇绠楅敊璇� start
+                // if (l.relativeDate__c == null) {
+                //     continue;
+                // }
+                if (l.relativeDate__c == null && l.OBSAP_relativeTime__c == null) {
+                    continue;
+                }
+                Datetime relativetime = l.OBSAP_relativeTime__c != null ? l.OBSAP_relativeTime__c : l.relativeTime__c;
+                // String datastr = String.valueOf(l.relativeDate__c);
+                String datastr = String.valueOf(relativetime);
+                //lt 20221114 DB202211270805 銆愮揣鎬ャ�戞嫑鏍囬」鐩槸鍚︽寜鏃跺叧鑱旇绠楅敊璇� end
+                String dt = lm.get(Date.valueOf(datastr.substring(0,10)));
+                System.debug(LoggingLevel.INFO, '*** dt: '+ dt);
+                l.Tender_Olympus__c = dt;
+                System.debug(LoggingLevel.INFO, '*** l.Tender_Olympus__c: '+ l.Tender_Olympus__c);
+            }
+        }
+        
+    }
 // fxk 2021/8/3 鍙嶉�昏緫鍒犻櫎 end
 // 20210824 涓爣鏃朵慨鏀瑰叧鑱旇浠风殑鎷涙爣椤圭洰鍚嶅拰涓爣鏃堕棿
     private void updateWin() {
         List<String> tenderIds = new List<String>();
         List<String> lostWinIds = new List<String>();
+        // 20221028 ljh SWAG-CKL5UC start
+        Map<Id,Tender_information__c>  tendMap = New Map<Id,Tender_information__c>(); 
+        Map<Id,Opportunity> updateOpp = New Map<Id,Opportunity>();
+        // 20221028 ljh SWAG-CKL5UC end
         for (Tender_information__c ten : newList) {
+            /** 20220614 SWAG-CFD4SU you 鏇存敼锛岃浠蜂紭鍏堟樉绀洪」鐩樁娈垫渶鏂扮殑鎷涙爣椤圭洰淇℃伅
             if ('3锛氱粨鏋�'.equals(ten.InfoType__c) && !'3锛氱粨鏋�'.equals((oldMap.get(ten.Id).InfoType__c))) {
                 tenderIds.add(ten.Id);
             } else if (!'3锛氱粨鏋�'.equals(ten.InfoType__c) && '3锛氱粨鏋�'.equals((oldMap.get(ten.Id).InfoType__c))) {
                 lostWinIds.add(ten.Id);
             }
+            **/
+            //涓婄嚎澶勭悊鑰佹暟鎹�
+            if((String.isNotBlank(ten.InfoType__c) && ten.InfoType__c != oldMap.get(ten.Id).InfoType__c) || (String.isNotBlank(ten.subInfoType__c) && ten.subInfoType__c != oldMap.get(ten.Id).subInfoType__c)  || System.Label.TenderToOpp == '1'){
+               tenderIds.add(ten.Id);
+            }
+            // 20221028 ljh SWAG-CKL5UC add start
+            // 鍏宠仈璇环鐨� 璇环椤甸潰鍒涘缓鏃ユ櫄浜庢嫑鏍囬」鐩叕鍛婅褰曟棩锛屾紡鍗曟暟涓�1
+            // 鍏宠仈璇环鐨� && 鏇存柊鏈夊�� 
+            if(ten.OpportunityNum__c > 0 && Trigger.isUpdate && oldMap.get(ten.Id).publicDate__c == null && ten.publicDate__c != null){
+                tendMap.put(ten.Id, ten);
+            }
+            // 20221028 ljh SWAG-CKL5UC add end
+            
         }
         if (tenderIds.size() > 0) {
+            //20220616 SWAG-CFD4SU you 澧炲姞order by
+            //鏌ヨ鎷涙爣椤圭洰涓嬫墍鏈変腑闂磋〃
             List<Tender_Opportunity_Link__c> links =
                 [SELECT id,
                  Tender_information__c,
                  Tender_information__r.OpenBidingTime__c,
                  Tender_information__r.WinnerAmount__c,
                  Tender_information__r.ZhongBiaoUnit1__c,
+                 Tender_information__r.Tender_Order__c,
                  Opportunity__c
                  FROM Tender_Opportunity_Link__c
-                 WHERE Tender_information__c IN :tenderIds
-                 AND Opportunity__r.Bidding_Project_Name_Bid__c NOT IN :tenderIds];
+                 WHERE Tender_information__c IN :tenderIds];// AND Opportunity__r.Bidding_Project_Name_Bid__c NOT IN :tenderIds
             if (links != null && links.size() > 0) {
                 List<String> oppIds = new List<String>();
                 for (Tender_Opportunity_Link__c link : links) {
                     oppIds.add(link.Opportunity__c);
                 }
                 if (oppIds.size() > 0) {
-                    List<Opportunity> opps = [select id, Bidding_Project_Name_Bid__c, Bidding_Project_Name_Bid__r.InfoType__c, Closing_Bid_Date_Bid__c from Opportunity where Id in :oppIds and Bidding_Project_Name_Bid__r.InfoType__c != '3锛氱粨鏋�'];
+                    //鏌ヨ璇环涓嬫墍鏈変腑闂磋〃
+                    List<Tender_Opportunity_Link__c> links1 =
+                    [SELECT id,
+                     Tender_information__c,
+                     Tender_information__r.OpenBidingTime__c,
+                     Tender_information__r.WinnerAmount__c,
+                     Tender_information__r.ZhongBiaoUnit1__c,
+                     Tender_information__r.Tender_Order__c,
+                     Tender_information__r.InfoType__c,
+                     Tender_information__r.subInfoType__c,
+                     Opportunity__c
+                     FROM Tender_Opportunity_Link__c
+                     WHERE Opportunity__c IN :oppIds order by Opportunity__c,Tender_information__r.Tender_Order__c desc, Tender_information__r.relativeTime_F__c desc];
+                    List<Opportunity> opps = [select id, Bidding_Project_Name_Bid__c, Bidding_Project_Name_Bid__r.InfoType__c, Closing_Bid_Date_Bid__c,Opp_Order__c from Opportunity where Id in :oppIds];// and Bidding_Project_Name_Bid__r.InfoType__c != '3锛氱粨鏋�'
                     if (opps != null && opps.size() > 0) {
                         for (Opportunity opp : opps) {
-                            for (Tender_Opportunity_Link__c link : links) {
+                            if(links1 !=null && links1.size() > 0){
+                               for (Tender_Opportunity_Link__c link : links1) {
                                 if (link.Opportunity__c == opp.Id) {
-                                    opp.Bidding_Project_Name_Bid__c = link.Tender_information__c;
-                                    break;
+                                    //20220616 SWAG-CFD4SU you start 鏀归�狅紝璇环瀹炴椂鏄剧ず椤圭洰闃舵鏈�鏂扮殑鎷涙爣椤圭洰淇℃伅
+                                    if(opp.Opp_Order__c <= link.Tender_information__r.Tender_Order__c){
+                                       opp.Bidding_Project_Name_Bid__c = link.Tender_information__c;
+                                       break;
+                                    }
+                                    //20220616 SWAG-CFD4SU you end 鏀归�狅紝璇环瀹炴椂鏄剧ず椤圭洰闃舵鏈�鏂扮殑鎷涙爣椤圭洰淇℃伅
+                                }
+                              } 
+                            }
+                            //20220830 you SWAG-CHL67J start
+                            Integer returncount =0;
+                             for (Tender_Opportunity_Link__c link : links1) {
+                                if (link.Opportunity__c == opp.Id) {
+                                    if(String.isNotBlank(link.Tender_information__r.InfoType__c) && link.Tender_information__r.InfoType__c!='1锛氶鍛�' && String.isNotBlank(link.Tender_information__r.subInfoType__c) && link.Tender_information__r.subInfoType__c!='3-1锛氬簾鏍囧叕鍛�' && link.Tender_information__r.subInfoType__c!='3-2锛氭祦鏍囧叕鍛�'){
+                                        system.debug('test2杩涙潵浜�');
+                                          returncount += 1;
+                                      }
                                 }
                             }
+                            opp.Tender_Number__c =returncount;
+                            //20220830 you SWAG-CHL67J end   
                         }
                         // 闇�瑕佽烦杩囪浠穞rigger 闃叉鍑虹幇閲嶅鏇存柊鐨勬儏鍐�
                         StaticParameter.EscapeOpportunityBefUpdTrigger = true;
@@ -693,6 +906,7 @@
                 }
             }
         }
+        /**20220616 SWAG-CFD4SU you
         if (lostWinIds.size() > 0) {
             List<Tender_Opportunity_Link__c> links_2 =
                 [SELECT id,
@@ -726,6 +940,23 @@
                 }
             }
         }
+        **/
+        // 20221028 ljh SWAG-CKL5UC add start
+        if(tendMap.size() > 0){
+            List<Tender_Opportunity_Link__c> links = [select id, Opportunity__c, Tender_information__c, Opportunity__r.Created_Day__c ,Opportunity__r.LeakageNumber__c,Opportunity__r.LeadSource  from Tender_Opportunity_Link__c where Tender_information__c in :tendMap.keySet()];
+            for(Tender_Opportunity_Link__c lk:links){
+                if(lk.Opportunity__r.Created_Day__c  > tendMap.get(lk.Tender_information__c).publicDate__c && lk.Opportunity__r.LeadSource == '鎷涙爣缃�'){
+                    Opportunity opp = new Opportunity();
+                    opp.Id = lk.Opportunity__c;
+                    opp.LeakageNumber__c = 1;
+                    updateOpp.put(opp.Id,opp);
+                }
+            }
+        }
+        if(updateOpp.size() > 0){
+            update updateOpp.values();
+        }
+        // 20221028 ljh SWAG-CKL5UC add end
     }
 
     public void updateTenOwner() {
@@ -950,7 +1181,6 @@
                     oppMainMap.put(oppLinks.Tender_information__c, oppLinks.Opportunity__r.OwnerId );
                 }
             }
-
             for (Id  tenderId : hpTypeToMainMap.keySet()) {
                 for (Tender_information__c info : newList) {
                     // add 銆愬鎵樸�慞-鎷涙爣椤圭洰-鎵嬪姩鍒涘缓鐨勬嫑鏍囬」鐩鍔犲繀濉瓧娈� 2021/11/03 fxk Star
@@ -978,13 +1208,33 @@
                                 System.debug('----------9---------' + UpdateTenMap);
                             }
                         } else {
-                            UpdateTenMap.put(tenderId, '00510000000gmxH');
-                            System.debug('----------10---------' + UpdateTenMap);
+                            // 20220421 SWAG-CC58ME ljh add 鏄惁鐩稿叧锛氭槸锛涘叧鑱斿尰闄�:锛乶ull; 鍏宠仈鎴樼暐绉戝 null; start
+                            // 鏄惁搴旀爣锛氭湁鍊� 锛氭墍鏈変汉锛氬惎鐢� 涓嶉渶瑕佹洿鏂�
+                            // UpdateTenMap.put(tenderId, '00510000000gmxH');
+                            // System.debug('----------10---------' + UpdateTenMap);
+                            if(!(String.isNotBlank(info.IsBid__c) && info.OwnerIsActive__c)){
+                                UpdateTenMap.put(tenderId, '00510000000gmxH');
+                                System.debug('----------10---------' + UpdateTenMap);
+                            }
+                            // 20220421 SWAG-CC58ME ljh add 鏄惁鐩稿叧锛氭槸锛涘叧鑱斿尰闄�:锛乶ull; 鍏宠仈鎴樼暐绉戝 null; end
                         }
-                    } else if ((oldTen.OwnerId != null && oldTen.OwnerId.equals(info.OwnerId)) 
-                            && !hpMainMap.get(tenderId).containskey(info.ownerId)) {
-                       UpdateTenMap.put(tenderId, oppMainMap.get(tenderId));
-                       System.debug('----------11---------' + UpdateTenMap);
+                     } else {
+                        /*
+                        20220422 SWAG-CC58ME ljh update   
+                        閽堝濡備笅鍦烘櫙鍋氱殑淇敼锛�
+                        鐩稿叧鎬х‘璁わ細涔嬪悗鎵�鏈変汉鍙栦簡鍖婚櫌+绗竴涓垬鐣ョ瀹ょ殑涓绘媴褰揂锛岀劧鍚庡叧鑱旇浠凤紝璇环鎵�鏈変汉鏄疊锛�
+                        鎵�鏈変汉鍙栦簡B銆傜劧鍚嶣绂昏亴浜嗭紝杩愯Batch锛屽彉鎴怉锛屽湪鎶夿鍚敤锛屼笉鍙樹細鏉
+                        */
+                        // 20220422 ljh update start
+                        System.debug('zheli:'+oppMainMap.get(tenderId));
+                        Boolean a = oldTen.OwnerId.equals(info.OwnerId);
+                        Boolean b = !hpMainMap.get(tenderId).containskey(info.ownerId);
+                        System.debug('zheli:'+a+b);
+                        // if ((oldTen.OwnerId != null && oldTen.OwnerId.equals(info.OwnerId)) 
+                        //      && !hpMainMap.get(tenderId).containskey(info.ownerId)) {
+                        // 20220422 ljh update end
+                        UpdateTenMap.put(tenderId, oppMainMap.get(tenderId));
+                        System.debug('----------11---------' + UpdateTenMap);
                     }
                 }
             }
@@ -999,4 +1249,79 @@
         }
         // StaticParameter.EscapeOtherUpdateTenOwner = true;
     }
+    /*
+    闆嗛噰椤圭洰瀵艰嚧鎵�鏈変汉鏇存柊
+    **/
+    // 20221011 ljh  SWAG-CK28WT
+    public void updateTenOwnerJC() {
+        // 
+        String OCSM_province = '甯傚満浼佸垝鏈儴';
+        Id OwnerIdStr;
+        List<OCM_Management_Province__c> ompList = [select Id,TenderAssistant1__c,TenderAssistant1__r.IsActive,TenderAssistant2__c from OCM_Management_Province__c where name =:OCSM_province];
+        if(ompList.size() > 0 && ompList[0].TenderAssistant1__r.IsActive){
+            OwnerIdStr = ompList[0].TenderAssistant1__c;
+        }
+        System.debug('zheli00:'+OwnerIdStr);
+        for (Tender_information__c nObj : newList) {
+            Tender_information__c oObj = oldMap.get(nObj.Id);
+            if (nObj.CentralizedProject__c != oObj.CentralizedProject__c) {
+                if(nObj.CentralizedProject__c && OwnerIdStr != null){
+                    /**
+                    鏈儴鑷姩鍙樻垚甯傚満浼佸垝鏈儴锛岄」鐩姪鐞嗗拰鎵�鏈変汉閮芥槸甯傚満浼佸垝鏈儴鐨勪汉锛�
+                    鍙朞CSM绠$悊鐪侀〉闈㈢淮鎶ょ殑甯傚満浼佸垝鏈儴锛屾嫑鏍囬」鐩姪鐞�1锛�
+                    */
+                    nObj.OwnerId = OwnerIdStr;
+                    nObj.InfoOwner__c = OwnerIdStr;
+                }else if(!nObj.CentralizedProject__c){
+                    /**
+                    鍙栨秷鍕鹃�夊悗杩斿洖钀ヤ笟閮ㄩ棬鐨勭渷鍜屾湰閮紝
+                    鎵�鏈変汉鏍规嵁鍏宠仈鍖婚櫌鍜屾垬鐣ョ瀹ゅ彇鎷呭綋鐨勫悕瀛椼��
+                    */
+                    updateTenOwner();
+                } 
+            }
+            // 濡傛灉瑙﹀彂 鏇存柊鎵�鏈変汉 娌℃湁璇环鍒� 杩樻槸甯傚満浼佸垝鏈儴
+            if (!StaticParameter.EscapeOtherUpdateTenOwner) {
+                if(nObj.CentralizedProject__c && OwnerIdStr != null && (nObj.OpportunityNum__c == 0 || nObj.OpportunityNum__c == null)){
+                    nObj.OwnerId = OwnerIdStr;
+                    nObj.InfoOwner__c = OwnerIdStr;
+                }
+            }
+        }
+    }
+    // 涓爣浠诲姟 搴熸爣娴佹爣鏃舵竻绌轰腑鏍囨棩
+    public void clearConfirmationofAward() {
+        List<String> tenders = new List<String>();
+        String labelTypes = System.Label.ClearConfirmationofAwardTypes;
+        List<String> subTypes = labelTypes.split(',');
+        for (Tender_information__c tender : this.newList) {
+            Tender_information__c old_tender = this.oldMap.get(tender.Id);
+            if (subTypes.contains(tender.subInfoType__c) && !tender.subInfoType__c.equals(old_tender.subInfoType__c)) {
+                tenders.add(tender.Id);
+            }
+        }
+        if (tenders.size() > 0) {
+            List<Tender_Opportunity_Link__c> links = [select Id, Opportunity__c from Tender_Opportunity_Link__c where Tender_information__c in :tenders];
+            if (links != null && links.size() > 0) {
+                List<String> oppids = new List<String>();
+                for (Tender_Opportunity_Link__c link : links) {
+                    oppids.add(link.Opportunity__c);
+                }
+                // 鐘舵��=璇环涓旀病鏈夊仛鍚堝悓鐢宠鐨�
+                List<Opportunity> opps = [select Id, Closing_Bid_Date__c 
+                                        from Opportunity 
+                                        where StageName = '寮曞悎' 
+                                        and IF_Submit__c = false
+                                        and Id in :oppids];
+                if (opps != null && opps.size() > 0) {
+                    for (Opportunity opp : opps) {
+                        opp.Closing_Bid_Date__c = null;
+                    }
+                    StaticParameter.EscapeOpportunityBefUpdTrigger = true;
+                    update opps;
+                    StaticParameter.EscapeOpportunityBefUpdTrigger = false;
+                }
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/force-app/main/default/classes/TenderOpportunityLinkHandler.cls b/force-app/main/default/classes/TenderOpportunityLinkHandler.cls
index eabe83f..c52d66e 100644
--- a/force-app/main/default/classes/TenderOpportunityLinkHandler.cls
+++ b/force-app/main/default/classes/TenderOpportunityLinkHandler.cls
@@ -26,6 +26,12 @@
         updateOppotunityByDelete(this.oldList);
     }
 }
+protected override void beforeDelete() {
+    // 鍒ゆ柇鏄惁璺宠繃
+    if (!StaticParameter.EscapeTOLinkTrigger) {
+        updateOppotunityBeforeDelete(this.oldList);
+    }
+}
 
 protected override void beforeInsert() {
     if (this.newList != null && this.newList.size() > 0) {
@@ -195,27 +201,49 @@
 }
 
 // 鏇存柊璇环淇℃伅
-public void updateOppotunityByInsert(List<Tender_Opportunity_Link__c> records) {
+public void updateOppotunityByInsert(List<Tender_Opportunity_Link__c> records) {   
     if (records != null && records.size() > 0) {
         List<String> oppIds = new List<String>();
+        Set<Id> oppIdsSet = new Set<Id>();// 20221028 ljh SWAG-CKL5UC
+        //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy start 
+        // List<String> TenderIds = new List<String>();
+        //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy end
         // 鑾峰緱瑕佹洿鏂扮殑璇环
         for (Tender_Opportunity_Link__c record: records) {
             if (!oppIds.contains(record.Opportunity__c)) {
                 oppIds.add(record.Opportunity__c);
+                // 20221028 ljh SWAG-CKL5UC add start
+                system.debug('zheli00:'+record.IsLeakage__c);
+                if(record.IsLeakage__c){
+                    oppIdsSet.add(record.Opportunity__c);
+                }
+                // 20221028 ljh SWAG-CKL5UC add end
             }
+            //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy start 
+            // if (!TenderIds.contains(record.Tender_information__c)) {
+            //     TenderIds.add(record.Tender_information__c);
+            // }
+            //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy end
+            
         }
         if (oppIds.size() > 0) {
-            List<Opportunity> opportunities = [select id, Bidding_Project_Name_Bid__c, Bidding_Project_Name_Bid__r.InfoType__c, TenderBeginDate_Text__c, InfoTypeBid_text__c from Opportunity where id in :oppIds and Bidding_Project_Name_Bid__r.InfoType__c != '3锛氱粨鏋�'];
+            List<String> tenIds = new List<String>();//20220715 you 鎷涙爣椤圭洰鎻掑叆鏃讹紝鏄惁闇�瑕佸彂閫佽浠蜂换鍔� 鏂扮殑鎷涙爣椤圭洰
+            //20220615 you SWAG-CFD4SU 鏀归�� start 濮嬬粓鏄剧ず鏈�鏂扮殑 鈶� 3锛氱粨鏋�,鈶� 4锛氬彉鏇�,鈶� 2锛氬叕鍛�,鈶� 1锛氶鍛�,鈶� 5锛氬叾浠� 
+            // 20221028 ljh SWAG-CKL5UC 鏌ヨ澧炲姞 LeakageNumber__c  , TenderBeginDate_Text__c
+            List<Opportunity> opportunities = [select id,Tender_Number__c, Bidding_Project_Name_Bid__c, Bidding_Project_Name_Bid__r.InfoType__c, InfoTypeBid_text__c,Opp_Order__c,LeakageNumber__c   from Opportunity where id in :oppIds ];//and Bidding_Project_Name_Bid__r.InfoType__c != '3锛氱粨鏋�'];
             if (opportunities.size() > 0) {
-                List<Tender_Opportunity_Link__c> links = [select id, Opportunity__c, Tender_information__c, Tender_information__r.InfoType__c, Tender_information__r.TenderBeginTime__c from Tender_Opportunity_Link__c where Opportunity__c in :oppIds];
+                List<Tender_Opportunity_Link__c> links = [select id, Opportunity__c, Tender_information__c, Tender_information__r.InfoType__c, Tender_information__r.TenderBeginTime__c,Tender_information__r.TenderDate__c,Tender_information__r.Tender_Order__c,Tender_information__r.subInfoType__c from Tender_Opportunity_Link__c where Opportunity__c in :oppIds order by Opportunity__c,Tender_information__r.Tender_Order__c desc, Tender_information__r.relativeTime_F__c desc];
                 for (Opportunity opp : opportunities) {
                     for (Tender_Opportunity_Link__c link : links) {
+                        boolean defaultFlag = false;
                         if (opp.Id.equals(link.Opportunity__c)) {
-                            if (opp.Bidding_Project_Name_Bid__c == null || ''.equals(opp.Bidding_Project_Name_Bid__c)) {
+                            /**
+                             if (opp.Bidding_Project_Name_Bid__c == null || ''.equals(opp.Bidding_Project_Name_Bid__c)) {
                                 opp.Bidding_Project_Name_Bid__c = link.Tender_information__c;
                                 opp.TenderBeginDate_Text__c = link.Tender_information__r.TenderBeginTime__c;
                                 opp.InfoTypeBid_text__c = link.Tender_information__r.InfoType__c;
                             }
+                            
                             if ('3锛氱粨鏋�'.equals(link.Tender_information__r.InfoType__c)) {
                                 opp.Bidding_Project_Name_Bid__c = link.Tender_information__c;
                                 if (opp.TenderBeginDate_Text__c == null) {
@@ -226,32 +254,165 @@
                                 }
                                 break;
                             }
+                            **/
+                            if(opp.Opp_Order__c <= link.Tender_information__r.Tender_Order__c){
+                              opp.Bidding_Project_Name_Bid__c = link.Tender_information__c;
+                              //opp.TenderBeginDate_Text__c =  link.Tender_information__r.TenderDate__c;//鏇存敼璇环鐘舵��2鏃讹紝寮曠敤瓒�20锛宭ink.Tender_information__r.TenderBeginTime__c;
+                              opp.InfoTypeBid_text__c = link.Tender_information__r.InfoType__c;
+                              //20220715 you 鎷涙爣椤圭洰 start
+                              if(String.isNotBlank(link.Tender_information__r.InfoType__c) && link.Tender_information__r.InfoType__c=='3锛氱粨鏋�' && String.isNotBlank(link.Tender_information__r.subInfoType__c) && (link.Tender_information__r.subInfoType__c=='3-5锛氫腑鏍囬�氱煡' || link.Tender_information__r.subInfoType__c=='3-6锛氬悎鍚屽叕鍛�')){
+                                tenIds.add(link.Opportunity__c); //绗﹀悎鏉′欢鐢熸垚浠诲姟
+                              }
+                              //20220715 you 鎷涙爣椤圭洰 end
+                              break;
+                            }
+                           
                         }
                     }
-                    
+                    //20220829 you SWAG-CHL67J start
+                    Integer returncount =0;
+                     for (Tender_Opportunity_Link__c link : links) {
+                        if (opp.Id.equals(link.Opportunity__c)) {
+                            if(String.isNotBlank(link.Tender_information__r.InfoType__c) && link.Tender_information__r.InfoType__c!='1锛氶鍛�' && String.isNotBlank(link.Tender_information__r.subInfoType__c) && link.Tender_information__r.subInfoType__c!='3-1锛氬簾鏍囧叕鍛�' && link.Tender_information__r.subInfoType__c!='3-2锛氭祦鏍囧叕鍛�'){
+                                system.debug('test1杩涙潵浜�');
+                                  returncount += 1;
+                              }
+                        }
+                    }
+                    opp.Tender_Number__c =returncount;
+                    //20220829 you SWAG-CHL67J end
+                    // 20221028 ljh SWAG-CKL5UC add start
+                    if(oppIdsSet.contains(opp.Id) && opp.LeakageNumber__c != 1){
+                        opp.LeakageNumber__c = 1;
+                    }
+                    // 20221028 ljh SWAG-CKL5UC add end
                 }
                 update opportunities;
             }
+            //20220615 you SWAG-CFD4SU 鏀归�� end
+            //20220715 you 鎷涙爣浠诲姟 start
+                             
+            if (tenIds !=null && tenIds.size() > 0) {
+              Database.executeBatch(new TenderResultConfirmTaskBatch(tenIds));
+            }
+            //20220715 you 鎷涙爣浠诲姟 end
         }
+        //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy start 
+        // if (TenderIds.size() > 0) {
+        //     updateTender(TenderIds);
+        // }
+        //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy end
     }
 }
+//SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy start 
+//璺熸柊鎷涙爣椤圭洰鐨勪腑鏍囨暟鍜屽簲鏍囨暟
+// public void updateTender(List<String> TenderIds) {
+//     List<Tender_Opportunity_Link__c> TenderOpportunityLinkList2 = [select Tender_information__c,Opportunity__r.NumberOfBids__c,Opportunity__r.BidWinningNumber__c from Tender_Opportunity_Link__c where Tender_information__c in:TenderIds];
+//     Map<String,Tender_information__c> TenderinformationMap = new Map<String,Tender_information__c>();
+//     if(TenderOpportunityLinkList2.size()>0){
+//         for(Tender_Opportunity_Link__c TenderOpportunity2 :TenderOpportunityLinkList2){
+//             if(TenderinformationMap.containsKey(TenderOpportunity2.Tender_information__c)){
+//                 Tender_information__c Tender_informationvalue = new Tender_information__c();
+//                 Tender_informationvalue = TenderinformationMap.get(TenderOpportunity2.Tender_information__c);
+//                 Tender_informationvalue.NumberOfBids__c=Tender_informationvalue.NumberOfBids__c+TenderOpportunity2.Opportunity__r.NumberOfBids__c;
+//                 Tender_informationvalue.BidWinningNumber__c=Tender_informationvalue.BidWinningNumber__c+TenderOpportunity2.Opportunity__r.BidWinningNumber__c;
+//                 TenderinformationMap.put(TenderOpportunity2.Tender_information__c, Tender_informationvalue);
+//             }else{
+//                 Tender_information__c Tender_informationvalue = new Tender_information__c();
+//                 Tender_informationvalue.Id=TenderOpportunity2.Tender_information__c;
+//                 Tender_informationvalue.NumberOfBids__c=TenderOpportunity2.Opportunity__r.NumberOfBids__c;
+//                 Tender_informationvalue.BidWinningNumber__c=TenderOpportunity2.Opportunity__r.BidWinningNumber__c;
+//                 TenderinformationMap.put(TenderOpportunity2.Tender_information__c, Tender_informationvalue);
+//             }
+//         }
+//     }
+//     if(TenderinformationMap.size()>0){
+//         List<Tender_information__c> Tender_informationList = new List<Tender_information__c>();
+//         for (Tender_information__c value : TenderinformationMap.values()) {
+//             Tender_informationList.add(value);
+//         }
+//         update Tender_informationList;
+//     }
+// }
+//SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy end 
+//20220718 you 璇环浠诲姟 start
+//鍒犻櫎link鏃讹紝浠诲姟鍙栨秷锛屾竻绌鸿浠蜂腑鏍囦俊鎭�
+public void updateOppotunityBeforeDelete(List<Tender_Opportunity_Link__c> records) {
+    if (records != null && records.size() > 0) {
+        Set<String> oppTens = new Set<String>();//璇环锛屾嫑鏍囬」鐩� 鎷兼帴
+        List<String> oppIds = new List<String>();
+        // 鑾峰緱瑕佹洿鏂扮殑璇环
+        for (Tender_Opportunity_Link__c record: records) {
+            String oppid =String.valueOf(record.Opportunity__c);
+            String tenid =String.valueOf(record.Tender_information__c);
+            oppTens.add(oppid.subString(0,15)+tenid.subString(0,15));
+           if (!oppIds.contains(record.Opportunity__c)) {
+                oppIds.add(record.Opportunity__c);
+            }
+        }
+        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)];
+            for(task__c tsk : taskList){
+                tsk.taskStatus__c = '04 鍙栨秷';
+                tsk.cancelDate__c = date.today();
+                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
+                       }  
+                    }
+                }
+            } 
+            update opportunities;   
+        }
+            
+    }
+}    
+//20220718 you 璇环浠诲姟 end
 
 // 鏇存柊璇环淇℃伅
 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 
+        // List<String> TenderIds = new List<String>();
+        //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy end
         // 鑾峰緱瑕佹洿鏂扮殑璇环
         for (Tender_Opportunity_Link__c record: records) {
             if (!oppIds.contains(record.Opportunity__c)) {
                 oppIds.add(record.Opportunity__c);
             }
+            //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy start 
+            // if (!TenderIds.contains(record.Tender_information__c)) {
+            //     TenderIds.add(record.Tender_information__c);
+            // }
+            //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy end
+
         }
         if (oppIds.size() > 0) {
-            List<Opportunity> opportunities = [select id, Bidding_Project_Name_Bid__c, TenderBeginDate_Text__c from Opportunity where id in :oppIds];
+            List<String> tenIds = new List<String>();//20220715 you 鎷涙爣椤圭洰鎻掑叆鏃讹紝鏄惁闇�瑕佸彂閫佽浠蜂换鍔� 鏂扮殑鎷涙爣椤圭洰
+            //20220615 you SWAG-CFD4SU 鏀归�� 澧炲姞鏌ヨ鏉′欢
+            List<Opportunity> opportunities = [select id, Bidding_Project_Name_Bid__c,Tender_Number__c,Opp_Order__c from Opportunity where id in :oppIds];
+            
             if (opportunities.size() > 0) {
-                List<Tender_Opportunity_Link__c> links = [select id, Opportunity__c, Tender_information__c, Tender_information__r.InfoType__c from Tender_Opportunity_Link__c where Opportunity__c in :oppIds];
+                //20220615 you SWAG-CFD4SU 鏀归�� 澧炲姞鏌ヨ鏉′欢
+                List<Tender_Opportunity_Link__c> links = [select id, Opportunity__c, Tender_information__c, Tender_information__r.InfoType__c,Tender_information__r.subInfoType__c,Tender_information__r.Tender_Order__c,Tender_information__r.TenderBeginTime__c,Tender_information__r.TenderDate__c from Tender_Opportunity_Link__c where Opportunity__c in :oppIds order by Opportunity__c,Tender_information__r.Tender_Order__c desc, Tender_information__r.relativeTime_F__c desc];
                 List<AggregateResult> sum_list = [select count(id) cnt, Opportunity__c from Tender_Opportunity_Link__c where Opportunity__c in :oppIds group by Opportunity__c];
                 Map<String, Integer> sum_map = new Map<String, Integer>();
+               
                 if (sum_list != null && sum_list.size() > 0) {
                     for (AggregateResult result : sum_list) {
                         sum_map.put(String.valueOf(result.get('Opportunity__c')), Integer.valueOf(result.get('cnt')));
@@ -260,23 +421,174 @@
                 for (Opportunity opp : opportunities) {
                     if (sum_map.get(opp.Id) == null || sum_map.get(opp.Id) == 0) {
                         opp.Bidding_Project_Name_Bid__c = null;
-                        opp.TenderBeginDate_Text__c = null;
+                        //opp.TenderBeginDate_Text__c = null;
                         opp.InfoTypeBid_text__c = null;
+                        //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.Closing_Bid_Date__c = null;
+                        //20220718 you 璇环浠诲姟 end
+                        // 20221028 ljh SWAG-CKL5UC start
+                        opp.LeakageNumber__c = null;
+                        // 20221028 ljh SWAG-CKL5UC end
                     } else {
                         for (Tender_Opportunity_Link__c link : links) {
                             if (opp.Id == link.Opportunity__c) {
+                                //20220615 you SWAG-CFD4SU 鏀归�� start 
+                                /** 
                                 opp.Bidding_Project_Name_Bid__c = link.Tender_information__c;
                                 if ('3锛氱粨鏋�'.equals(link.Tender_information__r.InfoType__c)) {
                                     opp.Bidding_Project_Name_Bid__c = link.Tender_information__c;
                                     break;
                                 }
+                                **/
+                                //records[0].addError(opp.Opp_Order__c+'ceshi==='+links.size()+'==='+link.Tender_information__r.Tender_Order__c);
+                                if(opp.Opp_Order__c >= link.Tender_information__r.Tender_Order__c){
+                                  opp.Bidding_Project_Name_Bid__c = link.Tender_information__c;
+                                  //opp.TenderBeginDate_Text__c = link.Tender_information__r.TenderDate__c;//鏇存敼璇环鐘舵��2鏃讹紝寮曠敤瓒�20锛宭ink.Tender_information__r.TenderBeginTime__c;
+                                  opp.InfoTypeBid_text__c = link.Tender_information__r.InfoType__c;
+                                  //20220718 you 鎷涙爣椤圭洰 start
+                                  if(String.isNotBlank(link.Tender_information__r.InfoType__c) && link.Tender_information__r.InfoType__c=='3锛氱粨鏋�' && String.isNotBlank(link.Tender_information__r.subInfoType__c) && (link.Tender_information__r.subInfoType__c=='3-5锛氫腑鏍囬�氱煡'  || link.Tender_information__r.subInfoType__c=='3-6锛氬悎鍚屽叕鍛�')){
+                                    tenIds.add(link.Opportunity__c); //绗﹀悎鏉′欢鐢熸垚浠诲姟
+                                  }
+                                  //20220718 you 鎷涙爣椤圭洰 end
+                                  break;
+                                }
+                                //20220615 you SWAG-CFD4SU 鏀归�� end 
                             }
                         }
                     }
+                    //20220829 you SWAG-CHL67J start
+                    Integer returncount =0;
+                    for (Tender_Opportunity_Link__c link1 : links) {
+                        if (opp.Id == link1.Opportunity__c) {
+                            if(String.isNotBlank(link1.Tender_information__r.InfoType__c) && link1.Tender_information__r.InfoType__c!='1锛氶鍛�' && String.isNotBlank(link1.Tender_information__r.subInfoType__c) && link1.Tender_information__r.subInfoType__c!='3-1锛氬簾鏍囧叕鍛�' && link1.Tender_information__r.subInfoType__c!='3-2锛氭祦鏍囧叕鍛�'){
+                                system.debug('jinlaile');     
+                                returncount += 1;
+                              }
+                            
+                         }
+                    } 
+                    opp.Tender_Number__c= returncount;
+                    //20220829 you SWAG-CHL67J end 
                 }
                 update opportunities;
+
             }
+            //20220718 you 鎷涙爣浠诲姟 start               
+            if (tenIds !=null && tenIds.size() > 0) {
+              Database.executeBatch(new TenderResultConfirmTaskBatch(tenIds));
+            }
+            //20220718 you 鎷涙爣浠诲姟 end
         }
+        //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy start 
+        // if (TenderIds.size() > 0) {
+        //     updateTender(TenderIds);
+        // }
+        //SWAG-CHL67J 銆愬鎵樸�戙�怓Y23璇环鏀瑰杽銆�-璇环椤甸潰/鎷涙爣椤圭洰澧炲姞缁熻瀛楁 fy end
     }
 }
+ @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
diff --git a/force-app/main/default/triggers/OpportunityHpDeptUpd.trigger b/force-app/main/default/triggers/OpportunityHpDeptUpd.trigger
index 2d19384..d7a208c 100644
--- a/force-app/main/default/triggers/OpportunityHpDeptUpd.trigger
+++ b/force-app/main/default/triggers/OpportunityHpDeptUpd.trigger
@@ -1,4 +1,9 @@
 trigger OpportunityHpDeptUpd on Opportunity (before insert, before update) {
+    // SWAG-CE55BX 棰勬祴浼樺寲 start
+    if (StaticParameter.EscapeOppandStaTrigger) {
+        return;
+    }
+    // SWAG-CE55BX 棰勬祴浼樺寲 end
     /*
     if (StaticParameter.EscapeOpportunityHpDeptUpdTrigger) {
 System.debug('Escape銆丒scapeOpportunityHpDeptUpdTrigger:::::' + StaticParameter.EscapeOpportunityHpDeptUpdTrigger);
@@ -9,6 +14,14 @@
     Map<Integer, Opportunity> oppForLookUpMap = new Map<Integer, Opportunity>();
     Integer idx = 0;
     for(Opportunity opp : Trigger.new) {
+        // 20221112 you DB202211366462 
+        
+            if(opp.TenderBeginDate__c !=null && opp.TenderBeginDate__c != opp.TenderBeginDate_Text__c ){
+                opp.TenderBeginDate_Text__c = opp.TenderBeginDate__c;
+            }else if(opp.TenderBeginDate__c ==null){
+                opp.TenderBeginDate_Text__c = opp.Bid_Date__c;
+            }
+         
         // 鍙ゃ亜銉囥兗銈裤伄鏇存柊銈掔姝�
         if (Trigger.isUpdate) {
             Boolean noChange = false;

--
Gitblit v1.9.1