游畅
2023-04-07 c011794c5a917343db38fbf4074d4ec5ddab228e
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
public without sharing class OpportunityTrigger {
 
    public static Boolean isFirst = true;
 
    public static void lockOpportunityFile(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
 
        List<String> targetIds = new List<String>();
        for (Opportunity newOpp : newList) {
            Opportunity oldOpp = oldMap.get(newOpp.Id);
            if (newOpp.Stock_apply_status__c != oldOpp.Stock_apply_status__c &&
                    newOpp.Stock_apply_status__c == '批准' && oldOpp.Stock_apply_status__c == '申请中') {
                targetIds.add(newOpp.Id);
            }
        }
 
        if (targetIds.size() == 0) Return;
 
        List<Opportunity_File__c> ofileList = [select id, Is_Locked__c from Opportunity_File__c where Opportunity__c = :targetIds and Is_Locked__c = false];
        for (Opportunity_File__c ofile : ofileList) {
            ofile.Is_Locked__c = true;
        }
 
        update ofileList;
    }
 
    //CHAN-AZJ6JS 追溯系统来的询价,取消WIN时,经销商订单自动改到“驳回”
    public static void changeConsumableOrderStatus(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        
        List<String> orderIds = new List<String>();
 
        for (Opportunity newOpp : newList) {
            // si询价新逻辑 为配置建议决定时间赋值 by vivek start
            if(newOpp.Configuration_Suggestion__c == '无建议' && newOpp.Recommended_Confirmation_Time__c == null){
                newOpp.Recommended_Confirmation_Time__c = Date.today();
            }
            if(newOpp.Configuration_Suggestion__c == '有建议' && newOpp.Configuration_Suggestion_Feedback__c != null && newOpp.Recommended_Confirmation_Time__c == null){
                newOpp.Recommended_Confirmation_Time__c = Date.today();
            }
            // si询价新逻辑 为配置建议决定时间赋值 by vivek end
            Opportunity oldOpp = oldMap.get(newOpp.Id);
            if (newOpp.SAP_Send_OK__c != oldOpp.SAP_Send_OK__c && newOpp.SAP_Send_OK__c == false ) {
                if (String.isNotBlank(newOpp.Estimation_Id__c) && newOpp.Estimation_Id__c.StartsWith('a2K'))newOpp.StageName = '削除';
                if (String.isNotBlank(newOpp.Opportunity_No__c)) orderIds.add(newOpp.Opportunity_No__c);
                //lastbuy  2022/2/9 fy start
                List<LastbuyProduct__c> upLastbuyObjList = new List<LastbuyProduct__c>();
                List<LastbuyProduct__c> LastbuyObjList=[select id,LastbuyQuantity__c,InquiryCode__c,ProductName__c,effectiveFLG__c from LastbuyProduct__c where InquiryCode__c= : newOpp.Id];
                if(LastbuyObjList!=null){
                    for(LastbuyProduct__c lastbuypr :LastbuyObjList){
                        lastbuypr.ActualQuantity__c=0;
                        lastbuypr.effectiveFLG__c=true;
                        upLastbuyObjList.add(lastbuypr);
                    }
                }
                if(upLastbuyObjList!=null){
                    upsert upLastbuyObjList;           
                }
                //lastbuy  2022/2/9 fy end
            }
        }
 
        if (orderIds.size() == 0) Return;
        ControllerUtil.selectAndupdateOrderSatus(orderIds);
 
        
 
        /*List<Consumable_order__c> orderList = [select id, Order_status__c from Consumable_order__c where Name = :orderIds and Order_status__c = '批准' and RecordType.DeveloperName = 'Order'];
        for (Consumable_order__c order : orderList) {
            order.Order_status__c = '驳回';
        }
        update orderList;*/
    }
 
    // CHAN-AYTCE6  询价页面中的经销商1变更后更新报价中经销商1  2018/5/25 start
    public static void changeQuoteAgency1(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        Map<Id, Opportunity> oppIdMap = new Map<Id, Opportunity>();
        for (Opportunity newOpp : newList) {
            if (!String.isBlank(newOpp.Estimation_No__c) && newOpp.StageName__c != '取消' && newOpp.StageName__c != '失单') {
                Opportunity oldOpp = oldMap.get(newOpp.Id);
                if (
                    (
                        (String.isBlank(oldOpp.Agency1__c) && !String.isBlank(newOpp.Agency1__c))
                        || (!String.isBlank(oldOpp.Agency1__c) && String.isBlank(newOpp.Agency1__c))
                        || oldOpp.Agency1__c != newOpp.Agency1__c
                    )
                    &&
                    (
                        newOpp.Estimation_No__c == oldOpp.Estimation_No__c
                    )
                ) {
                    oppIdMap.put(newOpp.Id, newOpp);
                }
            }
        }
        if (oppIdMap.size() > 0) {
            List<Quote> quList = [Select Id, Agency1__c, Quote_No__c, OpportunityId
                                  from Quote where OpportunityId In: oppIdMap.keySet()];
            if (quList != null && quList.size() > 0) {
                List<Quote> quUpd = new List<Quote>();
                for (Quote q : quList) {
                    Opportunity opp = oppIdMap.get(q.OpportunityId);
                    if (q.Quote_No__c == opp.Estimation_No__c) {
                        q.Agency1__c = opp.Agency1__c;
                        quUpd.add(q);
                    }
                }
                if (quUpd.size() > 0) {
                    update quUpd;
                }
            }
        }
    }
    // CHAN-AYTCE6  询价页面中的经销商1变更后更新报价中经销商1  2018/5/25 end
    
    //  千里马 - 招投标状态更新Batch  mzy  2021-05-13  start
    //  更新招投标上反应询价标识
    public static void UpdateBiddingFlag(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        if (StaticParameter.EscapeOpportunityBefUpdTrigger) {
            return;
        }
        List<Tender_information__c> tenderList = new List<Tender_information__c>();
        Map<String,Tender_information__c> tenderMap = new Map<String,Tender_information__c>();
        // 招标-询价关联修改 需要从link表里确认有哪些信息需要修改
        List<String> oppIds = new List<String>();
        for (Opportunity op : newList) {
            oppIds.add(op.Id);
        }
        List<Tender_Opportunity_Link__c> links = [SELECT Id, Tender_information__c, Tender_information__r.IsReactionOpp__c, Opportunity__c FROM Tender_Opportunity_Link__c WHERE Opportunity__c IN :oppIds AND Tender_information__r.IsReactionOpp__c = false];
        // 由于变为link之后,招标项目字段不再每次绑定时都更新,针对招标-询价关联时修改反映询价标记的修改无法顾及所有
        // 在此处只对win和失单判断做更新
        for(Opportunity op : newList){
            // Tender_information__c temptender = new Tender_information__c();
            //Tender_information__c Oldtemptender = new Tender_information__c();
            Opportunity oldopp = oldMap == null? null : oldMap.get(op.id); 
            if(oldopp != null){
 
                //判断询价的招标项目  从有到无 -- 从无到有
                // if( op.Bidding_Project_Name_Bid__c != oldopp.Bidding_Project_Name_Bid__c){
                        
 
                //         if(String.isNotBlank(op.Bidding_Project_Name_Bid__c)){
                //             temptender.id = op.Bidding_Project_Name_Bid__c;                            
                //             temptender.IsReactionOpp__c = true;
                //             tenderMap.put(temptender.id ,temptender );
                            
                //         }
                //         if(String.isNotBlank(oldopp.Bidding_Project_Name_Bid__c)) {
                //             temptender = new Tender_information__c();
                //             temptender.id = oldopp.Bidding_Project_Name_Bid__c;
                //             temptender.IsReactionOpp__c = true;
                //             tenderMap.put(temptender.id ,temptender );
                //         } 
                        
                // }
 
                // 从不win到win 或 从win到不win 并且 招投标项目不为空
                // if( (op.SAP_Send_OK__c != oldopp.SAP_Send_OK__c )&&String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){
                //     temptender.id = op.Bidding_Project_Name_Bid__c;
                //     temptender.IsReactionOpp__c = true;
                //     tenderMap.put(temptender.id ,temptender );
                // }
 
                // 从失单到不失单 或  从不失单到失单 并且 招投标项目不为空
                // if( ( (op.StageName__c.equals('失单') && !oldopp.StageName__c.equals('失单'))
                //     ||(!op.StageName__c.equals('失单') && oldopp.StageName__c.equals('失单')) ) &&String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){
                //     temptender.id = op.Bidding_Project_Name_Bid__c;
                //     temptender.IsReactionOpp__c = true;
                //     tenderMap.put(temptender.id ,temptender ); 
                // }
                // 合并判断条件 
                //20220803 you 招标项目增加 取消,中标结果更新确认条件
                if((op.SAP_Send_OK__c != oldopp.SAP_Send_OK__c) || 
                    ((op.StageName__c.equals('失单') && !oldopp.StageName__c.equals('失单')) || 
                    (!op.StageName__c.equals('失单') && oldopp.StageName__c.equals('失单'))) ||
                    ((op.StageName__c.equals('取消') && !oldopp.StageName__c.equals('取消')) || 
                    (!op.StageName__c.equals('取消') && oldopp.StageName__c.equals('取消'))) ||
                    (String.isNotBlank(op.ConfirmationofAward__c) && op.ConfirmationofAward__c!=oldopp.ConfirmationofAward__c)) {
                    for (Tender_Opportunity_Link__c link : links) {
                        if (link.Opportunity__c == op.Id) {
                            Tender_information__c temptender = new Tender_information__c();
                            temptender.Id = link.Tender_information__c;
                            temptender.IsReactionOpp__c = true;
                            tenderMap.put(temptender.id ,temptender); 
                        }
                    }
                }
                //DB202304056706  you 20230406 清空 打标识,重新执行batch
                if(String.isBlank(op.ConfirmationofAward__c) && op.ConfirmationofAward__c!=oldopp.ConfirmationofAward__c){
                   for (Tender_Opportunity_Link__c link : links) {
                        if (link.Opportunity__c == op.Id) {
                            Tender_information__c temptender = new Tender_information__c();
                            temptender.Id = link.Tender_information__c;
                            temptender.IsReactionOpp__c = true;
                            tenderMap.put(temptender.id ,temptender); 
                        }
                    } 
                }
                //20221017  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 start
                // System.debug('lt123 oly主机'+op.OlyNumberHosts__c);
                // System.debug('lt123 老oly主机'+oldopp.OlyNumberHosts__c);
                // System.debug('lt123 对手主机'+op.RivalHostsNumber__c);
                // System.debug('lt123 老对手主机'+oldopp.RivalHostsNumber__c);
 
                if(op.OlyNumberHosts__c != oldopp.OlyNumberHosts__c || op.RivalHostsNumber__c != oldopp.RivalHostsNumber__c){
                    for (Tender_Opportunity_Link__c link : links){
                        if (link.Opportunity__c == op.Id){
                            Tender_information__c temptender = new Tender_information__c();
                            temptender.Id = link.Tender_information__c;
                            temptender.IsReactionOpp__c = true;
                            tenderMap.put(temptender.id ,temptender); 
                        }
                    }
                }
                //20221017  lt SWAG-CHL5XA【FY23询价改善】-统计主机台数 end
 
            // }else {
            //     //新建时判断询价的招标项目是不是从无到有
            //     if(String.isNotBlank(op.Bidding_Project_Name_Bid__c) ){
            //         temptender.id = op.Bidding_Project_Name_Bid__c;
            //         temptender.IsReactionOpp__c = true;
            //         tenderMap.put(temptender.id ,temptender );
            //     }
            }
        }
 
 
        System.debug('招标Map:'+tenderMap);
        if(tenderMap.size()>0){
            update tenderMap.values();
        }
 
    }
 
    // 千里马 - 招投标状态更新Batch  mzy  2021-05-13  start
    // 招标-询价关联 20210817 start
    public static void changeLastLinkedTender(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        List<Tender_Opportunity_Link__c> new_links = new List<Tender_Opportunity_Link__c>();
        for(Opportunity op : newList){
            // 先判断Bidding_Project_Name_Bid__c是不是空
            if (op.Bidding_Project_Name_Bid__c != null && String.isNotBlank(op.Bidding_Project_Name_Bid__c)) {
                // 不是空的情况下 
                // 新建link
                Tender_Opportunity_Link__c link = new Tender_Opportunity_Link__c();
                link.Tender_information__c = op.Bidding_Project_Name_Bid__c;
                link.Opportunity__c = op.id;
                link.Tender_Opportunity_Uniq__c = String.valueOf(op.Bidding_Project_Name_Bid__c) + String.valueOf(op.id); 
                new_links.add(link);
            }
        }
        if (new_links.size() > 0) {
            insert new_links;
        }
    }
    // 招标-询价关联 20210817 end
     // 阿斯赛多签收单 精琢技术 fy 2021-09-06 start
    //  public static void changeSignedByAsicedo(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
    //     List<Statu_Achievements_DN__c> Statu_Achievements_DN_c = new List<Statu_Achievements_DN__c>();
    //     List<eSignForm__c> eSignForm_c = new List<eSignForm__c>();
    //     for(Opportunity op : newList){
    //         if(op.Is_Corrosion__c==false&&oldMap.get(op.Id).Is_Corrosion__c==true){
    //             List<Statu_Achievements_DN__c> StatuAchievementsDNc =[select Id,Name,Is_Corrosion__c from Statu_Achievements_DN__c where Opportunity__c =:op.Id];
    //             for(Statu_Achievements_DN__c sadc:StatuAchievementsDNc){
    //                 if(sadc.Is_Corrosion__c==true){
    //                     sadc.Is_Corrosion__c=false;
    //                     Statu_Achievements_DN_c.add(sadc);
    //                     system.debug('Statu_Achievements_DN_c ==='+Statu_Achievements_DN_c);
    //                 }
    //                 List<eSignForm__c> eSignFormc =[select Id,Name,Hazardous_Chemicals__c from eSignForm__c where Statu_Achievements_DN__c =:sadc.Id];
    //                 for(eSignForm__c efc:eSignFormc){
    //                     if(efc.Hazardous_Chemicals__c==true){
    //                         efc.Hazardous_Chemicals__c=false;
    //                         eSignForm_c.add(efc);
    //                         system.debug('eSignForm_c ==='+eSignForm_c);
    //                     }
    //                 }
    //             }
    //         }
    //     }
    //     if(Statu_Achievements_DN_c.size()>0){
    //         update Statu_Achievements_DN_c;
    //     }
    //     if(eSignForm_c.size()>0){
    //         update eSignForm_c;
    //     }
    // }
    // 阿斯赛多签收单 精琢技术 fy 2021-09-06 end
 
    // SWAG-C7P4XB start
    // 更新前操作 判断WIN为TRUE的时候 清除掉"取消WIN原因"
    public static void removeCancelWinReason(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap) {
        for (Opportunity opp : newList) {
            Opportunity old_opp = oldMap.get(opp.Id);
            if (opp.SAP_Send_OK__c == true && old_opp != null && old_opp.SAP_Send_OK__c == false && opp.Reason_Cancel_WIN__c != null) {
                opp.Reason_Cancel_WIN__c = null;
            }
        }
    } 
    // SWAG-C7P4XB end
 
    //LastBuy 预留产品 lt 20220315 start
    //询价失单或取消时,预留产品的"是否有效"设置为否
    public static void ReservedProFlg(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap){
        List<Id> oppList = new List<Id>();
        List<LastbuyProduct__c> lbpflgList = new List<LastbuyProduct__c>();
 
        for (Opportunity lbOpp : newList){
            Opportunity OldLbOpp = oldMap.get(lbOpp.Id);
            if(OldLbOpp.StageName != lbOpp.StageName){
                if(lbOpp.StageName == '敗戦' || lbOpp.StageName == '削除'){
                    oppList.add(lbOpp.Id);
                }
            }
        }
 
        if(oppList.size() > 0){
            List<LastbuyProduct__c> lbpList = [select id, effectiveFLG__c,InquiryCode__c from LastbuyProduct__c where InquiryCode__c in :oppList];
            if(lbpList.size() > 0){
                for(LastbuyProduct__c lbp : lbpList){
                    if(lbp.effectiveFLG__c == true){ 
                        lbp.effectiveFLG__c = false;
                        lbpflgList.add(lbp);
                    }
                }
            }
        }
 
        if(lbpflgList.size() > 0){
            update lbpflgList;
        }
    }
    //LastBuy 预留产品 lt 20220315 end
//SWAG-CHL67J 【委托】【FY23询价改善】-询价页面/招标项目增加统计字段 fy start 
// public static void UpdateBidNumber(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap){
//     List<Id> OpportunityIdList = new List<Id>();
//     Boolean flag = true;
//     for (Opportunity opp : newList) {
//         OpportunityIdList.add(opp.Id);
//         Opportunity oldopp = oldMap == null? null : oldMap.get(opp.Id); 
//         if(oldopp==null){
//             if(opp.NumberOfBids__c!=null||opp.BidWinningNumber__c!=null){
//                 flag = true;
//             }
//         }else{
//             if(opp.NumberOfBids__c!=oldopp.NumberOfBids__c||opp.NumberOfBids__c!=oldopp.NumberOfBids__c){
//                 flag = true;
//             }
//         }
//     }
//     system.debug('newList+++'+newList);
//     system.debug('oldList+++'+oldList);
//     if(flag){
//         List<Tender_Opportunity_Link__c> TenderOpportunityLinkList = [select Tender_information__c from Tender_Opportunity_Link__c where Opportunity__c in:OpportunityIdList];
//         Set<Id> enderOpportunityId = new Set<Id>();
//         if(TenderOpportunityLinkList.size()>0){
//             for (Tender_Opportunity_Link__c TenderOpportunity : TenderOpportunityLinkList) {
//                 enderOpportunityId.add(TenderOpportunity.Tender_information__c);
//             }
//         }
//         system.debug('TenderOpportunityLinkList+++'+TenderOpportunityLinkList);
//         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:enderOpportunityId];
//         Map<String,Tender_information__c> TenderinformationMap = new Map<String,Tender_information__c>();
//         system.debug('TenderOpportunityLinkList2+++'+TenderOpportunityLinkList2);
//         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);
//                     }
//             }
//         }
//         List<Tender_information__c> Tender_informationList = new List<Tender_information__c>();
//         for (Tender_information__c value : TenderinformationMap.values()) {
//             Tender_informationList.add(value);
//         }
//         system.debug('Tender_informationList+++'+Tender_informationList);
//         update Tender_informationList;
//     }
// }
//SWAG-CHL67J 【委托】【FY23询价改善】-询价页面/招标项目增加统计字段 fy end
    //add 询价跟进任务开发 - 3.创建失单任务 sx 20220617 start
    //询价中标结果确认竞争对手中标时实时创建失单任务
    public static void createTaskByOppConfirmationofAward(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap){
 
        if (!isFirst) {
            return;
        }
 
        Set<Id> oppoIds = new Set<Id>();
        Map<Id,String> mapoppid = new Map<Id,String>();
        list<task__c> taskUpdateList = new list<task__c>();
        for(Opportunity op : newList){
            Opportunity oldopp =  oldMap.get(op.Id);
            //询价中标结果确认竞争对手中标时实时创建失单任务 且 询价状态1等于询价
            if (oldopp.ConfirmationofAward__c != '竞争对手中标' && op.ConfirmationofAward__c == '竞争对手中标' && op.StageName__c == '询价' && !op.DirectLossFLG__c ){
                oppoIds.add(op.Id);
            }
            //20220929 you  SWAG-CJP7TL 手动更改询价所有人,同步修改任务所有人
            if(String.isNotBlank(op.OwnerId) && op.OwnerId !=oldopp.OwnerId){
                 mapoppid.put(op.id,op.OwnerId);
            }
        }
        if(mapoppid.size() > 0){
            List<Task__c> taskList = [
                    SELECT Id,OpportunityId__c,taskStatus__c 
                    FROM task__c 
                    WHERE OpportunityId__c in :mapoppid.keySet()
                    AND (RecordType.Name = '中标结果确认' OR RecordType.Name = '失单报告任务')
                    AND taskStatus__c = '02 接受'];
            system.debug(mapoppid.keySet()+'test1-----'+taskList);
            for(Task__c t: taskList){
                if(mapoppid.containsKey(t.OpportunityId__c)){
                   t.Ownerid = mapoppid.get(t.OpportunityId__c);
                   t.assignee__c = mapoppid.get(t.OpportunityId__c);
                   taskUpdateList.add(t);
                }
                           
            }
             if (taskUpdateList != null && taskUpdateList.size() > 0) {
                update taskUpdateList;
            }
        }    
 
        if (!oppoIds.isEmpty()) {
            // 20221206  DB202211594688 start
            // // 有效失单状态一览
            // List<String> validStatus = new List<String>{'申请中', '提交', '批准'};
            // // 询价失单/取消报告查询 
            // List<Lost_cancel_report__c> lostCancelReportList = [SELECT Id, Opportunity__c from Lost_cancel_report__c WHERE Opportunity__c in :oppoIds and Report_Status__c in: validStatus];
           
            // List<Lost_cancel_report__c> lostCancelReportList1 = [SELECT Id, Opportunity__c,DeveloperName__c from Lost_cancel_report__c WHERE Opportunity__c in :oppoIds and Report_Status__c ='草案'];
            
            // //<询价Id, 失单报告>
            // Map<String, Lost_cancel_report__c> lostCancelReportMap = new Map<String, Lost_cancel_report__c>();
            // for(Lost_cancel_report__c lcr : lostCancelReportList){
            //     if (!lostCancelReportMap.isEmpty() && lostCancelReportMap.containsKey(lcr.Opportunity__c)) {
            //         // no action
            //     } else {
            //         lostCancelReportMap.put(lcr.Opportunity__c, lcr);
            //     }
            // }
             
            //有效失单状态一览
            List<String> validStatus = new List<String>{'申请中', '提交', '批准'};
            List<String> allStatus = new List<String>{'申请中', '提交', '批准','草案'};
            // 询价失单/取消报告查询  
            List<Lost_cancel_report__c> lostCancelReportList = [SELECT Id, Opportunity__c,Report_Status__c,DeveloperName__c  from Lost_cancel_report__c WHERE Opportunity__c in :oppoIds and Report_Status__c in: allStatus];
           
            //<询价Id, 失单报告>
            Map<String, Lost_cancel_report__c> lostCancelReportMap = new Map<String, Lost_cancel_report__c>();
            Map<String, Lost_cancel_report__c> lostCancelReportMap1 = new Map<String, Lost_cancel_report__c>();
            for(Lost_cancel_report__c lcr : lostCancelReportList){
                if(validStatus.contains(lcr.Report_Status__c)){
                    if (!lostCancelReportMap.isEmpty() && lostCancelReportMap.containsKey(lcr.Opportunity__c)) {
                        // no action
                    } else {
                        lostCancelReportMap.put(lcr.Opportunity__c, lcr);
                    }
                }else{
                    // 草案
                    if (!lostCancelReportMap1.isEmpty() && lostCancelReportMap1.containsKey(lcr.Opportunity__c)) {
                    // no action
                    } else {
                        lostCancelReportMap1.put(lcr.Opportunity__c, lcr);
                    }
                } 
            }                
            // 20221206  DB202211594688 start
            List<Task__c> insTaskList = new List<Task__c>();
            
            // 定义需要更新的询价任务
            List<Opportunity> updateOpportunity = new List<Opportunity>();
            
            // 记录类型:失单报告任务
            List<RecordType> recordTypes = [select Id from RecordType where IsActive = true and SobjectType = 'task__c' and DeveloperName = 'LoseListTask'];
            Id loseListTask_TaskId = recordTypes.get(0).Id;
            //String taskName = '';
                
            for(Opportunity opp : newList) {
                //没有已提交的失单报告
                if(!lostCancelReportMap.containsKey(opp.Id) && oppoIds.contains(opp.Id)) {
 
                    //创建失单任务提醒
                    Task__c tempTask = new Task__c();
                    tempTask.RecordTypeId = loseListTask_TaskId;
                    tempTask.taskDifferent__c = '被动任务';
                    tempTask.taskStatus__c = '02 接受';       //任务状态2
                    tempTask.assignee__c = opp.OwnerId;    //被分配者
                    tempTask.account__c = opp.AccountId;
                    tempTask.Name = '失单结果确认:' + opp.Opportunity_No__c;
                    tempTask.OwnerId = opp.OwnerId;   //所有人
                    tempTask.OpportunityId__c = opp.Id;
                    tempTask.ConfirmDate__c = Date.today();
                    insTaskList.add(tempTask);
                    
                    //更新询价  Task_createTime__c  
                    Opportunity uopp  = new Opportunity();
                    uopp.Id = opp.Id;
                    uopp.LostTask_createTime__c  = Date.today();
                    //20221205 you DB202211594688  部分失单派发任务,但是中标结果不赋值
                    
                    if(null!=lostCancelReportMap1.get(opp.Id) && lostCancelReportMap1.get(opp.Id).DeveloperName__c =='PCL_PartLost_report'){
                   
                        uopp.ConfirmationofAward__c = '';
                        uopp.ConfirmationofAward_createTime__c = null;
                        uopp.Is_ConfirmationofAward__c =null;
                    }else{
                        if(oldMap.get(opp.Id).ConfirmationofAward__c != '竞争对手中标' && opp.ConfirmationofAward__c == '竞争对手中标'){
                          uopp.Closing_Bid_Date__c = null;
                        }
                    }
                    updateOpportunity.add(uopp);
                }
            }
 
            if (!insTaskList.isEmpty()) {
                insert insTaskList;
            }
            if (!updateOpportunity.isEmpty()) {
                update updateOpportunity;
            }
        }
        isFirst = false;
    }
    //add 询价跟进任务开发 - 3.创建失单任务 sx 20220617 end
 
 
    //询价跟进任务开发 
    public static void opportunityTasks(List<Opportunity> newList, Map<Id, Opportunity> newMap, List<Opportunity> oldList, Map<Id, Opportunity> oldMap){
        Set<Id> oppoIds = new Set<Id>();
    
        for(Opportunity op : newList){
            Opportunity oldopp =  oldMap.get(op.Id);
            
            //询价中标结果确认竞争对手中标时实时创建失单任务 且 询价状态1等于询价
            if (oldopp.ConfirmationofAward__c != 'OLY中标' && op.ConfirmationofAward__c == 'OLY中标' && op.StageName__c == '询价'){
                oppoIds.add(op.Id);
                //确认中标结果时间 创建任务时间  20220629 sx
                op.ConfirmationofAward_createTime__c = Date.today();
                if(op.Task_createTime__c!=null){
                    
                    //是否按时确认:3个工作日内按时1,不按时0
                    String inttemp = CalendarUtil.getWorkDayNum(String.valueOf(op.Task_createTime__c), String.valueOf(op.ConfirmationofAward_createTime__c));
                    op.Is_ConfirmationofAward__c = Integer.valueOf(inttemp) > 3 ? 0 : 1;   
                }
            }
 
            //20220628会议新需求  对手中标 7.中标日清空
            if(oldopp.ConfirmationofAward__c != '竞争对手中标' && op.ConfirmationofAward__c == '竞争对手中标'){
                //op.Closing_Bid_Date__c = null; // 20221206 you
                op.ConfirmationofAward_createTime__c = Date.today(); 
                if(op.Task_createTime__c!=null){
                   
                    //是否按时确认:3个工作日内按时1,不按时0
                    String inttemp = CalendarUtil.getWorkDayNum(String.valueOf(op.Task_createTime__c), String.valueOf(op.ConfirmationofAward_createTime__c));
                    op.Is_ConfirmationofAward__c = Integer.valueOf(inttemp) > 3 ? 0 : 1;    
                }              
            }
        }
 
        if(!oppoIds.isEmpty()){
 
            // 2022-12-02 ssm DB202211552746 增加流标废标时清空结果记录日的逻辑,需要判断不是流标废标的结果数据才更新中标日
            list<Tender_Opportunity_Link__c> toppLinkList = [Select Id, Opportunity__c, Tender_information__c,Tender_information__r.ResultDate__c,Tender_information__r.InfoType__c 
                                                            FROM Tender_Opportunity_Link__c 
                                                            WHERE Opportunity__c in :oppoIds 
                                                            and Tender_information__r.InfoType__c = '3:结果' 
                                                            and Tender_information__r.subInfoType__c != '3-1:废标公告' 
                                                            and Tender_information__r.subInfoType__c != '3-2:流标公告'];
            Map<String, Tender_Opportunity_Link__c> toopLinkMap = new Map<String, Tender_Opportunity_Link__c>();
            
            for(Tender_Opportunity_Link__c tol : toppLinkList){
                Opportunity oppoTemp = newMap.get(tol.Opportunity__c);
                //询价关联到招标项目才进行操作
                if(oppoTemp.Bidding_Project_Name_Bid__c == tol.Tender_information__c){
                    toopLinkMap.put(tol.Opportunity__c, tol);
                }
                
            }
            
            for (String key : toopLinkMap.keySet()) {
                Opportunity oppoTemp = newMap.get(key);
                //20220628会议新需求  OLY中标 7.中标日(结果记录日)= 招标项目.结果记录日
                oppoTemp.Closing_Bid_Date__c = toopLinkMap.get(key).Tender_information__r.ResultDate__c;
                System.debug('============'+toopLinkMap.get(key).Tender_information__r.ResultDate__c);
                
                //是否按时确认:3个工作日内按时1,不按时0
                //String inttemp = CalendarUtil.getWorkDayNum(String.valueOf(oppoTemp.Task_createTime__c), String.valueOf(oppoTemp.ConfirmationofAward_createTime__c));
                //oppoTemp.Is_ConfirmationofAward__c = Integer.valueOf(inttemp) > 3 ? 0 : 1;    
            }
 
        }  
        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++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
 
    }
}