liuyn
2024-03-11 a87f1c3df03078814ee97ad0c8ac200a232419e9
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
public with sharing   class OpportunityService{
 
  public static Decimal selectcancelcount{get;set;}//选择的取消的询价个数
 
  //DB202311699820 新需求:待关联询价页面里增加日期字段 fy start
  // private static String opp_search_field = ' Id, Name, Account_Name_F__c, OwnerId, Hospital__c, Opportunity_No__c, Opportunity_stage__c, StageName__c, stagename, Bidding_Project_Name_Bid__c, Department_Class__r.RecordTypeId ';
  private static String opp_search_field = ' Id, Name, Account_Name_F__c, OwnerId, Hospital__c, Opportunity_No__c, Opportunity_stage__c, StageName__c, stagename, Bidding_Project_Name_Bid__c, Department_Class__r.RecordTypeId ,order_Date_For_Report__c,SFDCLast_Process_Date__c';
  //DB202311699820 新需求:待关联询价页面里增加日期字段 fy end
 
  // 查询已保存的数据  
  //noStr 询价的ID
  //daccountID 客户的ID 现在没用
  // IdStr 招投标的ID
  //hospital 医院的ID
  @AuraEnabled
  public  static string GetNormalProductDataSearch(String noStr,String accountId,String IdStr,String inputText,String hospital,String[] hospitalArr, String departments) {
 
    String sql = 'select ';
    // sql += CommonUtils.GetSqlToPorps(Opportunity.SObjectType);
    sql += opp_search_field;
    sql += ' from Opportunity';
    // 多对多关系 去掉未关联的判断 start
    // sql += ' where Bidding_Project_Name_Bid__c = null ';
    sql += ' where id != null ';
    // 多对多关系 去掉未关联的判断 end
    if(noStr != null && noStr != '' && noStr != ' ')
    {
      sql += ' and Opportunity_No__c = :noStr';
    }
    //liangxiaozhen 20231108 改模糊查询 start
    // if(hospitalArr!= null && hospitalArr.size() > 0)
    // {
    //   sql += ' and Hospital__c in :hospitalArr';
    // }
    if(inputText!= null && inputText!= '')
    {
      //DB202311699820 新需求:待关联询价页面里增加日期字段 fy start
      // sql += ' and Account_Name_F__c LIKE  \'%' + inputText + '%\' ';
      sql += ' and (Account_Name_F__c LIKE  \'%' + inputText + '%\' or Opportunity_No__c LIKE  \'%' + inputText + '%\')';
      //DB202311699820 新需求:待关联询价页面里增加日期字段 fy end
    }
    //liangxiaozhen 20231108 改模糊查询 end
    if(hospital != null && hospital != '' && hospital != ' ')
    {
      sql += ' and Hospital__c = :hospital';
    }
 
    // String paremt1 = '012100000006KMe';
    // String paremt2 = '01210000000QekK';
    // String paremt3 = '引合';
    // sql += ' and (recordtypeid = :paremt1 or recordtypeid = :paremt2) and stagename = :paremt3 ';
    sql += ' and recordtype.developername in (\'Opportunity\',\'SI_Oppor\') and Hospital__r.Is_Active__c = \'有効\' ';
        // 这里有修改,别给盖了
    /**
    DB202305552102  you 202305230 除了目标的都看
    ' and ( (SAP_Send_OK__c = true and SAP_Send_OK_Date__c   = LAST_N_DAYS:183  ) '+
        'or( stagename = \'敗戦\' and Final_Contract_Proceeded_Date__c = LAST_N_DAYS:183  ) or stagename = \'引合\' ) ';
    **/
      // 这里有修改,别给盖了
    // 20210914 战略科室修改
    //if (departments != null && String.isNotBlank(departments)) {
    //  String[] depart_types = departments.split(';');
    //  if (depart_types != null && depart_types.size() > 0 && depart_types.size() < 6) {
    //    sql += ' and Department_Class__r.RecordTypeId in :depart_types ';
    //  }
    //}
    // 20210914 战略科室修改
    // 去掉已经关联的招标
    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()+'\'';
    }
    // 20221014 ljh SWAG-CK28WT add end
    //DB202305552102  you 202305230 除了目标的都看
    sql += ' and stageName != \'目標\'';
    //DB202305552102  you 202305230 除了目标的都看
    //DB202309608863  chenjingwu 2023/10/11 招标项目待关联询价中排除变更用户询价
    sql += ' and If_Account_Change__c = false';
    //DB202309608863  chenjingwu 2023/10/11 招标项目待关联询价中排除变更用户询价
    sql += ' order by stageName limit 50';
    System.debug('sql1:'+sql);
    List<Opportunity> arrays = Database.query(sql);
    return JSON.serialize(arrays); 
    
  }
 
 // 查询未保存的数据  
  // IdStr 招投标的ID
  //hospital 医院的ID
  @AuraEnabled
  public  static string GetNormalProductDataNotSave(String IdStr,String[] hospital, String departments) {
 
    // QueryWrapper query = new QueryWrapper(Tender_information__c.SObjectType);
    // query.eq('Id',IdStr);
 
    // 招标-询价关联修改 20210813 start
    String sql = 'select ';
    // sql += CommonUtils.GetSqlToPorps(Opportunity.SObjectType);
    sql += opp_search_field;
    sql += ' from Opportunity';
    // 多对多关系 去掉未关联的判断 start
    // sql += ' where Bidding_Project_Name_Bid__c = null ';
    // 多对多关系 去掉未关联的判断 end
    // String paremt1 = '012100000006KMe';
    // String paremt2 = '01210000000QekK';
    // String paremt3 = '引合';
    // sql += ' and (recordtypeid = :paremt1 or recordtypeid = :paremt2) and stagename = \'引合\' ';
    // sql += ' and recordtype.developername in (\'Opportunity\',\'SI_Oppor\') and Hospital__r.Is_Active__c = \'有効\' '+
    sql += ' where recordtype.developername in (\'Opportunity\',\'SI_Oppor\') and Hospital__r.Is_Active__c = \'有効\' ';
        // 这里有修改,别给盖了
    /**DB202305552102  you 202305230 除了目标的都看    
    ' and ( (SAP_Send_OK__c = true and SAP_Send_OK_Date__c   = LAST_N_DAYS:183 ) '+
        'or( stagename = \'敗戦\' and Final_Contract_Proceeded_Date__c = LAST_N_DAYS:183  ) or stagename = \'引合\' ) ';
    **/
      // 这里有修改,别给盖了
    // 去掉已经关联的招标
    if(IdStr != null && String.isNotBlank(IdStr)) {
      sql += ' and id not in (select Opportunity__c from Tender_Opportunity_Link__c where Tender_information__c = :IdStr) ';
    }
    // 20210914 战略科室修改
    //if (departments != null && String.isNotBlank(departments)) {
    //  String[] depart_types = departments.split(';');
    //  if (depart_types != null && depart_types.size() > 0 && depart_types.size() < 6) {
    //    sql += ' and Department_Class__r.RecordTypeId in :depart_types ';
    //  }
    //}
    // 20210914 战略科室修改
    if(hospital!= null && hospital.size() > 0)
    {
      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()+'\'';
    }
    
    // 20221014 ljh SWAG-CK28WT add end
    //DB202305552102  you 202305230 除了目标的都看
    sql += ' and stageName != \'目標\'';
    //DB202305552102  you 202305230 除了目标的都看
    //DB202309608863  chenjingwu 2023/10/11 招标项目待关联询价中排除变更用户询价
    sql += ' and If_Account_Change__c = false';
    sql += ' and ((SFDCLast_Process_Date__c = null and stageName not in (\'出荷\',\'完了\',\'削除\',\'敗戦\')) or SFDCLast_Process_Date__c >= LAST_N_DAYS:730)';
    //DB202309608863  chenjingwu 2023/10/11 招标项目待关联询价中排除变更用户询价
    sql += ' order by stageName limit 200';
    System.debug('sql2:'+sql);
    List<Opportunity> arrays = Database.query(sql);
    // Tender_information__c
    return JSON.serialize(arrays); 
    
    // 招标-询价关联修改 20210813 end
  }
 
 
 
 
 
  //查询已保存
  // 只有一个 当前招投标
  //IdStr 招投标的ID
  @AuraEnabled
  public  static string GetNormalProductDataIsSave(String IdStr) {
    // 招标-询价关联修改 20210817 start
    // 查询方式或许应该优化一下
    // QueryWrapper query = new QueryWrapper(Opportunity.SObjectType);
    // query.eq('Bidding_Project_Name_Bid__c', IdStr);
    // List<Opportunity> arrays = DataBasePlus.listPlus(query);
    List<Id> oppIds = new List<Id>();
    List<Tender_Opportunity_Link__c> links = [select Opportunity__c from Tender_Opportunity_Link__c where Tender_information__c = :IdStr];
    if (links != null && links.size() > 0) {
      for (Tender_Opportunity_Link__c link : links) {
        oppIds.add(link.Opportunity__c);
      }
    }
    // String sql = 'select ' + CommonUtils.GetSqlToPorps(Opportunity.SObjectType) + ' from Opportunity ';
    String sql = 'select ' + opp_search_field + ' from Opportunity ';
    sql += 'where Id in :oppIds';
    List<Opportunity> arrays = Database.query(sql);
    // 招标-询价关联修改 20210817 end
    return JSON.serialize(arrays); 
  }
   
 
 
  
  //保存
   //JsonSelected JSON格式的招投标的已选择数据集合
   //JsonNotSelected JSON格式的招投标的未选择数据集合
   // BiddingId 对应的招标项目名(招投标)
   // flag  修改 招投标项目 关联询价时间的一个标识
  @AuraEnabled
  public  static string SaveData(String JsonSelected,String JsonNotSelected,String BiddingId,Boolean flag) {
   selectcancelcount=0;
    try{
      // 新增招标-询价关联关系表,去掉更新询价上的最新招标信息 20210813 start
      // if(JsonSelected != null &&  JsonSelected != '' && JsonSelected !='[]')
      // {
      //   List<Opportunity> SelectedList = (List<Opportunity>)JSON.deserialize(JsonSelected,List<Opportunity>.class);
 
      //   for(Opportunity item :SelectedList){
      //     item.Bidding_Project_Name_Bid__c = null;
      //   }
       
 
              
      // Database.update(SelectedList,false);
      // }
      // string OppOwnerId = '';
      // if(JsonNotSelected != null &&  JsonNotSelected != '' && JsonNotSelected !='[]')
      // {
      //   List<Opportunity> NotSelectedList = (List<Opportunity>)JSON.deserialize(JsonNotSelected,List<Opportunity>.class);
 
      //   for(Opportunity item :NotSelectedList){
      //     item.Bidding_Project_Name_Bid__c = BiddingId;
      //   }
      //   OppOwnerId = NotSelectedList[0].ownerId;
      //   Database.update(NotSelectedList);
      // }
      // if(flag != null && flag == true)
      // {
      //   string tenProp = CommonUtils.GetSqlToPorps(Tender_information__c.SObjectType);
      //   String sql = 'select '+tenProp+' from Tender_information__c  where Id = :BiddingId';
      //   List<Tender_information__c> arrays = Database.query(sql);
      //   arrays[0].RelateOppTime__c = datetime.now();
      //   //if( arrays[0].IsBid__c == null && OppOwnerId != '')
      //   //{
      //   //  arrays[0].ownerId = OppOwnerId;
      //   //}
      //   if (arrays != null && arrays.size() >0 &&
      //   (arrays[0].ownerId == '00510000005sEEM' || arrays[0].ownerId == '00510000000gmxH')
      //   && OppOwnerId != '')
      //   {
      //     arrays[0].ownerId = OppOwnerId;
      //   }
      //   Database.update(arrays);
      // }
      // 新增招标-询价关联关系表,去掉更新询价上的最新招标信息 20210813 end
 
      // 招标-询价关联修改 20210813 start
      // 查询招标
      // string tenProp = CommonUtils.GetSqlToPorps(Tender_information__c.SObjectType);
      // String sql = 'select '+tenProp+' from Tender_information__c  where Id = :BiddingId';
      String sql = 'SELECT ';
      sql += 'Id, ';
      sql += 'NotBidApprovalStatus__c, ';
      sql += 'IsBid__c, ';
      sql += 'TenderBeginTime__c, ';
      sql += 'InfoType__c, ';
      sql += 'OwnerId, ';
      sql += 'IsReactionOpp__c, ';
      sql += 'IsRelateProject__c, ';
      sql += 'RelateOppTime__c, ';
      sql += 'irrelevantReasons__c, ';
      sql += 'irrelevantReasonOther__c, ';
      sql += 'Hospital__c, ';
      sql += 'Hospital1__c, ';
      sql += 'Hospital2__c, ';
      sql += 'Hospital3__c, ';
      sql += 'Hospital4__c, ';
      sql += 'OpportunityNum__c, ';//20230714 you DB202306372336 
      sql += 'publicDate__c, ';// 20221114 ljh SWAG-CKL5UC
      sql += 'Tender_Order__c, ';  //20220620 you SWAG-CFD4SU 
      sql += 'subInfoType__c, ';  //20220718 you 招标任务 
      sql += 'TenderDate__c, ';  //20231218 lt lt DB202311665664 add
      //lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 add TerminateReason__c,
      sql += 'status__c, ProjectRestartFLG__c,IsTerminate__c,TerminateApprovalStatus__c,TerminateReason__c,  ';
      sql += 'TerminateApprovalTime__c ';//DB202305552102  增加项目终止时间 只有申请项目终止才允许关联取消的询价
      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];
      
      // 不应标申请中的时候 调回申请修改 20210907 start
      //20240116 lt 注释 start DB202401299318 招标项目申请中的不应标,关联询价后仍然保持审批状态
      // if (tender.NotBidApprovalStatus__c != null && tender.NotBidApprovalStatus__c == '申请中') {
      //   List<Approval.ProcessWorkitemRequest> requests = new List<Approval.ProcessWorkitemRequest> ();
      //   ProcessInstance pi = [Select Id, SubmittedById from ProcessInstance where TargetObjectId = :tender.Id and Status = 'Pending' order by CreatedDate desc limit 1];
      //   if (pi != null) {
      //     for(ProcessInstanceWorkItem wi : [Select Id from ProcessInstanceWorkItem where ProcessInstanceId = :pi.Id]){
      //       Approval.ProcessWorkitemRequest req2 = new Approval.ProcessWorkitemRequest();
      //       if (pi.SubmittedById.equals(Userinfo.getUserId())) {
      //         req2.setAction('Removed');
      //         tender.NotBidApprovalStatus__c = '草案中';
      //       } else {
      //         req2.setAction('Reject');
      //         tender.NotBidApprovalStatus__c = '驳回';
      //         tender.IsBid__c = null;
      //       }
      //       req2.setWorkitemId(wi.Id);
      //       requests.add(req2);
      //     }
      //     system.debug('==requests.size()=='+requests.size());
      //     if (requests.size() > 0) {
      //       Approval.ProcessResult[] processResults = null;
      //       processResults = Approval.process(requests, true);
      //       system.debug('==调回结果=='+processResults);
      //     }
      //   }
      // }
      //20240116 lt 注释 end DB202401299318 招标项目申请中的不应标,关联询价后仍然保持审批状态
      // 不应标申请中的时候 调回申请修改 20210907 end
      
      // 合并已关联和未关联列表
      List<Opportunity> all_selected_list = new List<Opportunity>();
      List<Opportunity> no_selected_list = new List<Opportunity>();//lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 add
      if (JsonSelected != null &&  JsonSelected != '' && JsonSelected !='[]') {
        all_selected_list.addAll((List<Opportunity>)JSON.deserialize(JsonSelected,List<Opportunity>.class));
      }
      if (JsonNotSelected != null &&  JsonNotSelected != '' && JsonNotSelected !='[]') {
        all_selected_list.addAll((List<Opportunity>)JSON.deserialize(JsonNotSelected,List<Opportunity>.class));
        no_selected_list.addAll((List<Opportunity>)JSON.deserialize(JsonNotSelected,List<Opportunity>.class));//lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 add
      }
      // 招标所有人是否要修改flag
      // boolean owner_change = false;
      // 先删除旧的link
      // 跳过trigger标记
      // 没有删除逻辑
      StaticParameter.EscapeTOLinkTrigger = true;
      // List<Tender_Opportunity_Link__c> del_links = [select Id from Tender_Opportunity_Link__c where Tender_information__c = :BiddingId];
      // if (del_links != null && del_links.size() > 0) {
      //   delete del_links;
      // }
      // 更新询价
      List<Opportunity> upd_opps = new List<Opportunity>();
      List<Opportunity> upd_opps1 = new List<Opportunity>();
      List<String> owners = new List<String>();
      Integer links=0;
      // 插入link
      if (all_selected_list.size() > 0) {
        //取消状态 询价判断
        Map<String,String> oppStagename= new Map<String,String>();
        for (Opportunity opp : all_selected_list) { //当前选择的询价
          if(opp.stagename=='削除'){
             oppStagename.put(opp.Id,opp.stagename);
             selectcancelcount +=1;
          }  
          }
 
          system.debug(all_selected_list.size()+'==oppStagename=='+oppStagename +'==selectcancelcount=='+selectcancelcount);
        if(null!= oppStagename && oppStagename.size()>0 && tender.TerminateApprovalTime__c ==null){
          return '只有申请项目终止才允许关联取消的询价';
          /**
           List<Tender_Opportunity_Link__c> del_links = [select Id,Opportunity__c,Opportunity__r.Name,Opportunity__r.Opportunity_No__c,Tender_information__r.status__c from Tender_Opportunity_Link__c where Opportunity__c = :oppStagename.keySet() and Tender_information__r.status__c !='09.终止'];
           system.debug('==del_links=='+del_links);
           Map<String,String> deldate= new Map<String,String>();
           if(del_links != null && del_links.size() > 0){
             for(Tender_Opportunity_Link__c ten:del_links){
                deldate.put(ten.Opportunity__c,ten.Opportunity__r.Name);
              }             
           }
           if(null!=deldate&& deldate.size()>0){
              for (String del : deldate.keySet()) {
                qxopp+=deldate.get(del)+',';
              }  
           }
           **/
        }
        // 设置招标所有人
        // OppOwnerId = all_selected_list[0].ownerId;
        // 初始化参数
        List<Tender_Opportunity_Link__c> add_list = new List<Tender_Opportunity_Link__c>();
        List<Tender_Opportunity_Link__c> add_list_oppnum = new List<Tender_Opportunity_Link__c>();//lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 add
        // 当询价关联过结果阶段的招标项目,再被另一个结果阶段的招标项目关联时,会因为数据被锁定而报错
        // 在此处重新检索询价
        List<String> oppIds = new List<String>();
        for (Opportunity opp : all_selected_list) {
          oppIds.add(opp.Id);
          owners.add(opp.ownerId);
          // 新建link
          Tender_Opportunity_Link__c link = new Tender_Opportunity_Link__c();
          link.Tender_information__c = tender.Id;
          link.Opportunity__c = opp.Id;
          link.Tender_Opportunity_Uniq__c = String.valueOf(tender.Id) + String.valueOf(opp.Id);
 
          add_list.add(link);
 
          //lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 start
          if(opp.StageName != '削除'){
            add_list_oppnum.add(link);
          }
          //lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 end
        }
        // 插入link
        if (add_list.size() > 0) {
          // links=add_list.size();//lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 注释
          links=add_list_oppnum.size();//lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 add
          insert add_list;
        }
        // 恢复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) {
          // 20221114 SWAG-CKL5UC ljh 增加 Created_Day__c,LeadSource,LeakageNumber__c
          //20231218 lt DB202311665664 add ,TenderBeginDate_New__c
          //20240112 lt delete Bidding_Project_Name_Bid__c, Bidding_Project_Name_Bid__r.InfoType__c,(soql)
          List<Opportunity> wait_upd_opps = [select id,Opp_Order__c,Tender_Number__c, Created_Day__c,LeadSource,LeakageNumber__c,TenderBeginDate_New__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) {
            //20240112 lt start 邮件-20240110 合并循环  注释for(){}
            // 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;
            //     upd_opps.add(opp);
            //   } else if (tender.InfoType__c == '3:结果' && opp.Bidding_Project_Name_Bid__r.InfoType__c != '3:结果') {
            //     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,tender.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; //lt 20231113 DB202302080091【调查】询价页面显示招标项目信息有误
            //   }
 
            // }
            //20240112 lt end 邮件-20240110 合并循环  注释for(){}
 
            //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;
 
              //20231218 lt DB202311665664 【重要紧急课题】询价中的“项目:招标日”和漏单数修改 start
              System.debug('lt123---opp.TenderBeginDate_New__c'+String.valueOf(opp.TenderBeginDate_New__c));
              if(String.isNotBlank(String.valueOf(opp.TenderBeginDate_New__c))){
                  if(opp.TenderBeginDate_New__c > tender.TenderDate__c){
                      opp.TenderBeginDate_New__c = tender.TenderDate__c;
                  }
              }else{
                  opp.TenderBeginDate_New__c = tender.TenderDate__c;
              }
              System.debug('lt123---招标日:'+ opp.TenderBeginDate_New__c);
              //20231218 lt DB202311665664 【重要紧急课题】询价中的“项目:招标日”和漏单数修改 end
 
              // 20221114 ljh SWAG-CKL5UC start 
              //20230727 lt DB202307367354 【招标项目】漏单计算逻辑修改 delete  && String.isNotBlank(opp.LeadSource) && opp.LeadSource == '招标网'
              // add   addDays(-60)
              //20231218 lt DB202311665664 update  tender.publicDate__c ==> opp.TenderBeginDate_New__c
              if(opp.LeakageNumber__c != 1 && opp.TenderBeginDate_New__c != null && opp.Created_Day__c > opp.TenderBeginDate_New__c.addDays(-60)){
                opp.LeakageNumber__c = 1;
              }
              // 20221114 ljh SWAG-CKL5UC start 
 
              //20240112 lt start 邮件-20240110
              //背景:前两个循环是因为break掉,break会影响同时选择多个询价关联,询价的项目名写入为空的问题
              //去掉break后,两个循环更新两次询价,有可能因为顺序原因更改其想赋值的内容,故合并循环
              if(opp.Opp_Order__c <= tender.Tender_Order__c){
                opp.Bidding_Project_Name_Bid__c =tender.Id;
                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);
                }
              }
              //20240112 lt end 
 
              upd_opps1.add(opp);  
            }  
                 
            //20220829 you SWAG-CHL67J end 
          }
        }
        if (upd_opps1.size() > 0) {
          update upd_opps1;
        }
        //20220620 you SWAG-CFD4SU 改造 end
        // 更新询价上的招标项目
        //20240112 lt start 邮件-20240110
        // if (upd_opps.size() > 0) {
        //   update upd_opps;
        // }
        //20240112 lt start 邮件-20240110
         //20220718 you 招标任务 start
                             
        if (tenIds !=null && tenIds.size() > 0) {
            Database.executeBatch(new TenderResultConfirmTaskBatch(tenIds));
          }
          //20220718 you 招标任务 end
      }
 
      // 查询招标数量并更新
      List<Tender_Opportunity_Link__c> tenderLinks = [SELECT id, Tender_information__c, Opportunity__c, Opportunity__r.Hospital__c, Opportunity__r.OwnerId FROM Tender_Opportunity_Link__c WHERE Tender_information__c = :tender.Id];
      List<String> oppOwnerInLinks = new List<String>();
      for (Tender_Opportunity_Link__c link : tenderLinks) {
        oppOwnerInLinks.add(link.Opportunity__r.OwnerId);
      }
      // 更新招标上的所有人
      if (tender.OwnerId == null || System.label.tender_3.equals(tender.OwnerId) || (oppOwnerInLinks.size() > 0 && !oppOwnerInLinks.contains(tender.OwnerId))) {
        tender.ownerId = owners.size() > 0 ? owners.get(0) : System.label.tender_3;
      }
      // 反映询价状态
      tender.IsReactionOpp__c = true;
      // 查询招标数量并更新
      //List<Tender_Opportunity_Link__c> tenderLinks = [SELECT id, Tender_information__c, Opportunity__c, Opportunity__r.Hospital__c FROM Tender_Opportunity_Link__c WHERE Tender_information__c = :tender.Id];
      //tender.OpportunityNum__c = tenderLinks != null ? tenderLinks.size() : 0;
      //20230714 you DB202306372336  原因,当前担当只能看到自己得关联询价,看不到其他人得,所以询价数量也只能累计自己的
      tender.OpportunityNum__c = tender.OpportunityNum__c != null ? tender.OpportunityNum__c + links :links ;
      // 关联询价时间和是否相关状态
      if (tender.IsRelateProject__c != '是') {
        tender.IsRelateProject__c = '是';
        tender.RelateOppTime__c = datetime.now();
        tender.irrelevantReasons__c = null;
        tender.irrelevantReasonOther__c = null;
      }
      // 更新关联医院
      if (tenderLinks != null && tenderLinks.size() > 0) {
        // 招标项目的医院
        Map<String,String> fiveHospitalMap = new Map<String,String>();
        fiveHospitalMap.put('Hospital__c', tender.Hospital__c);
        fiveHospitalMap.put('Hospital1__c', tender.Hospital1__c);
        fiveHospitalMap.put('Hospital2__c', tender.Hospital2__c);
        fiveHospitalMap.put('Hospital3__c', tender.Hospital3__c);
        fiveHospitalMap.put('Hospital4__c', tender.Hospital4__c);
        for(Integer i = 0; i<tenderLinks.size();i++) {
          //当招投标项目的五个医院赋值完成后不再赋值
          Boolean HospitalIsNeedBreak = false;
          for(String ApiName :fiveHospitalMap.keySet()){
              HospitalIsNeedBreak = fiveHospitalMap.get(ApiName)==null?false:true;
          }
          
          if(HospitalIsNeedBreak){
              break;
          }
 
          //给招投标项目的5个医院设值
          for(String ApiName : fiveHospitalMap.keySet()){
            String tempTenderHospId = fiveHospitalMap.get(ApiName)==null?'':fiveHospitalMap.get(ApiName);
            String oppHospId = tenderLinks.get(i).Opportunity__r.Hospital__c; 
            //如果招标项目已经有该医院就判断下一个询价的医院
            if(tempTenderHospId.contains(oppHospId)){
                break;
            }
 
            //医院为空,赋值医院(赋值之后进行赋值下一个医院)
            if(String.isBlank( fiveHospitalMap.get(ApiName) )){
                fiveHospitalMap.put(ApiName,oppHospId);
                break;
            }
          }
        }
        tender.Hospital__c = fiveHospitalMap.get('Hospital__c');
        tender.Hospital1__c = fiveHospitalMap.get('Hospital1__c');
        tender.Hospital2__c = fiveHospitalMap.get('Hospital2__c');
        tender.Hospital3__c = fiveHospitalMap.get('Hospital3__c');
        tender.Hospital4__c = fiveHospitalMap.get('Hospital4__c');
      }
      //状态为终止 && 全部选择的是取消时,不进行项目重启
      //lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 update  if条件
      // if(tender.status__c == '09.终止' && selectcancelcount !=0 && selectcancelcount != all_selected_list.size()){
      System.debug('lt20240130---tender.TerminateReason__c' +tender.TerminateReason__c);
      if(tender.TerminateReason__c != '经销商原因' && tender.status__c == '09.终止' && selectcancelcount != no_selected_list.size()){
        System.debug('lt20240130---重启');
        tender.ProjectRestartFLG__c = true;
        tender.IsTerminate__c = null;
        tender.TerminateApprovalTime__c = null;
        tender.TerminateApprovalStatus__c = null;
        tender.TerminateReason__c = null;//lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 add
        tender.TerminateExtraContent__c = null;//lt 20240118 DB202401275115 紧急:招标项目终止状态的逻辑调整 add
      }  
      update tender;
      // 招标-询价关联修改 20210813 end
      return '成功';
    }catch (Exception e) {
      // String eMsg = e.getMessage();
      // Integer left = eMsg.indexOf(':')+1;
      // Integer right = eMsg.indexOf(',');
      // return eMsg.substring(left,right);
      return e.getMessage();
    }
 
  }
}