1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
//lt add 20231110  DB202307367354  【招标项目】漏单计算逻辑修改 add
//lt  20231213 update 漏单逻辑:创建日-(项目:招标日-60天)>0  ==>  漏单数为1   DB202311665664  【重要紧急课题】询价中的“项目:招标日”和漏单数修改
global without sharing class TenderUtil{
 
    public TenderUtil() {
    }
 
    //计算漏单逻辑: 询价关联的多条招标项目中(询价关联招标项目)
    //询价的创建日 > 最早公告记录日-60  ==>  漏单数为1
    //,List<Tender_Opportunity_Link__c> linkList
    public static void UpdLeakageNum(Set<Id> oppSet){
        //漏单数需要更新为1的询价Map
        Map<String,Opportunity> UpdOppMap = new Map<String,Opportunity>();
 
        //更新 询价 招标日
        Map<String,Opportunity> UpdOpp1Map = new Map<String,Opportunity>();
 
        //公告记录日变化导致 询价关联的的link里没有漏单  1-0 的list
        List<Opportunity> UpdOppnullList = new List<Opportunity>();
 
        //需要更新的询价下所有的link
        List<Tender_Opportunity_Link__c> sLinkList = [
            Select id,name,IsLeakage_New__c,Opportunity__c,Tender_information__c, 
                   Tender_information__r.publicDate__c,Opportunity__r.Created_Day__c,
                   Opportunity__r.LeakageNumber__c,
                   Opportunity__r.DirectLossFLG__c  
                   ,Opportunity__r.TenderBeginDate_New__c,Tender_information__r.TenderDate__c  //lt DB202311665664
            From Tender_Opportunity_Link__c
            Where Opportunity__c in :oppSet
        ];
 
        for(Tender_Opportunity_Link__c slink: sLinkList){
            Opportunity opp = new Opportunity();
 
            //lt DB202311665664 start
            System.debug('20231109-漏单-共通招标日'+slink.Tender_information__r.TenderDate__c);
            if(slink.Tender_information__r.TenderDate__c != null){
                opp.Id = slink.Opportunity__c;
                if(!UpdOpp1Map.containsKey(slink.Opportunity__c)){
                    opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
                    if(slink.Opportunity__r.Created_Day__c > opp.TenderBeginDate_New__c.addDays(-60)){
                        opp.LeakageNumber__c = 1;
                    }else{
                        opp.LeakageNumber__c = null;
                    }
                    UpdOpp1Map.put(slink.Opportunity__c,opp);
                    // oppSet.remove(slink.Opportunity__c);
                }else{
                    opp = UpdOpp1Map.get(slink.Opportunity__c);
                    if(String.isNotBlank(String.valueOf(opp.TenderBeginDate_New__c))){
                        if(opp.TenderBeginDate_New__c > slink.Tender_information__r.TenderDate__c){
                            opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
                            if(slink.Opportunity__r.Created_Day__c > opp.TenderBeginDate_New__c.addDays(-60)){
                                opp.LeakageNumber__c = 1;
                            }else{
                                opp.LeakageNumber__c = null;
                            }
                        }
                    }else{
                        opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
                        if(slink.Opportunity__r.Created_Day__c > opp.TenderBeginDate_New__c.addDays(-60)){
                            opp.LeakageNumber__c = 1;
                        }else{
                            opp.LeakageNumber__c = null;
                        }
                    }
                    UpdOpp1Map.put(slink.Opportunity__c,opp);
                }
                // System.debug('20231109-漏单-共通opp招标日'+slink.Opportunity__r.TenderBeginDate_New__c);
                // if(String.isNotBlank(String.valueOf(slink.Opportunity__r.TenderBeginDate_New__c))){
                //     if(slink.Opportunity__r.TenderBeginDate_New__c > slink.Tender_information__r.TenderDate__c){
                //         opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
                //     }
                // }else{
                //     opp.TenderBeginDate_New__c = slink.Tender_information__r.TenderDate__c;
                // }
                // System.debug('20231109-漏单-共通询价'+opp);
                // if(!UpdOpp1Map.containsKey(slink.Opportunity__c)){
                //     UpdOpp1Map.put(slink.Opportunity__c,opp);
                // }
            }
            //lt DB202311665664 end
 
            //后台用-招标项目直接失单标记
            //招标项目 直接点 失单 标记漏单为1 时,不对漏单进行操作
            // if(!slink.Opportunity__r.DirectLossFLG__c){  //2023-11-22 需求,取消看直接失单
                //link里只要有符合 漏单 逻辑 (opp创建日 > tender公告记录日-60)  --  询价漏单数为1
                // if(slink.Tender_information__r.publicDate__c != null && slink.Opportunity__r.Created_Day__c > slink.Tender_information__r.publicDate__c.addDays(-60)){
                //DB202311665664 20231213  update 取 创建日-(项目:招标日-60天)>0
                // if(slink.Opportunity__r.TenderBeginDate_New__c != null && slink.Opportunity__r.Created_Day__c > slink.Opportunity__r.TenderBeginDate_New__c.addDays(-60)){
                //     opp.Id = slink.Opportunity__c;
                //     opp.LeakageNumber__c = 1;
 
                //     //可能存在 一个询价下多个link漏单 ,更一次询价
                //     if(!UpdOppMap.containsKey(slink.Opportunity__c)){
                //         UpdOppMap.put(slink.Opportunity__c,opp);
                //         oppSet.remove(slink.Opportunity__c);
                //     }
                // }
            // }
 
            
            
        }
 
        // if(oppSet.Size() > 0){
        //     List<Opportunity> oppnullList = [
        //     Select id,name 
        //     From Opportunity
        //     Where id in :oppSet 
        //     // And DirectLossFLG__c = false
        //     ];
 
        //     if(oppnullList.Size() > 0){
        //         for(Opportunity oppnull: oppnullList){
        //             Opportunity opp1 = new Opportunity();
        //             opp1.Id = oppnull.Id;
        //             opp1.LeakageNumber__c = null;
        //             UpdOppnullList.add(opp1);
        //         }
        //     }
        // }
        
        System.debug('20231109-漏单-upd共通询价1'+UpdOppMap.values());
        System.debug('20231109-漏单-upd共通询价2'+UpdOpp1Map.values());
        if(UpdOpp1Map.values().Size() > 0){
            update UpdOpp1Map.values();
        }
 
        // if(UpdOppMap.values().Size() > 0){
        //     update UpdOppMap.values();
        // }
        
        // if(UpdOppnullList.size() > 0 ){
        //     update UpdOppnullList;
        // }
        
    }
 
    
    
}