19626
2023-10-11 7c7cb195462c2ded7bfe4105959ea36d1dd68ded
force-app/main/default/classes/OpportunityService.cls
@@ -1,6 +1,8 @@
public with sharing   class OpportunityService{
  private static String opp_search_field = ' Id, Name, Account_Name_F__c, OwnerId, Hospital__c, Opportunity_No__c, Opportunity_stage__c, StageName__c, Bidding_Project_Name_Bid__c, Department_Class__r.RecordTypeId ';
  public static Decimal selectcancelcount{get;set;}//选择的取消的询价个数
  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 ';
  
  // 查询已保存的数据  
  //noStr 询价的ID
@@ -36,10 +38,13 @@
    // 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 = \'有効\' '+
    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)) {
@@ -59,9 +64,15 @@
    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';
    //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); 
    
@@ -73,7 +84,6 @@
  @AuraEnabled
  public  static string GetNormalProductDataNotSave(String IdStr,String[] hospital, String departments) {
    //TODU
    // QueryWrapper query = new QueryWrapper(Tender_information__c.SObjectType);
    // query.eq('Id',IdStr);
@@ -90,10 +100,12 @@
    // 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 = \'有効\' '+
    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)) {
@@ -112,16 +124,23 @@
      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';
    //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 200';
    System.debug('sql2:'+sql);
    List<Opportunity> arrays = Database.query(sql);
    // Tender_information__c
    return JSON.serialize(arrays); 
    
@@ -167,7 +186,7 @@
   // flag  修改 招投标项目 关联询价时间的一个标识
  @AuraEnabled
  public  static string SaveData(String JsonSelected,String JsonNotSelected,String BiddingId,Boolean flag) {
   selectcancelcount=0;
    try{
      // 新增招标-询价关联关系表,去掉更新询价上的最新招标信息 20210813 start
      // if(JsonSelected != null &&  JsonSelected != '' && JsonSelected !='[]')
@@ -234,9 +253,12 @@
      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 += 'subInfoType__c, ';  //20220718 you 招标任务
      sql += 'status__c, ProjectRestartFLG__c,IsTerminate__c,TerminateApprovalStatus__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];
@@ -291,8 +313,37 @@
      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;
        // 初始化参数
@@ -313,6 +364,7 @@
        }
        // 插入link
        if (add_list.size() > 0) {
          links=add_list.size();
          insert add_list;
        }
        // 恢复trigger标记
@@ -356,7 +408,8 @@
                }
              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){
              //20230727 lt DB202307367354 【招标项目】漏单计算逻辑修改 delete  && String.isNotBlank(opp.LeadSource) && opp.LeadSource == '招标网'
              if(opp.LeakageNumber__c != 1 && tender.publicDate__c != null && opp.Created_Day__c > tender.publicDate__c){
                opp.LeakageNumber__c = 1;
              }
              // 20221114 ljh SWAG-CKL5UC start 
@@ -396,7 +449,9 @@
      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;
      //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 = '是';
@@ -446,11 +501,22 @@
        tender.Hospital3__c = fiveHospitalMap.get('Hospital3__c');
        tender.Hospital4__c = fiveHospitalMap.get('Hospital4__c');
      }
      //状态为终止 && 全部选择的是取消时,不进行项目重启
      if(tender.status__c == '09.终止' && selectcancelcount !=0 && selectcancelcount != all_selected_list.size()){
        tender.ProjectRestartFLG__c = true;
        tender.IsTerminate__c = null;
        tender.TerminateApprovalTime__c = null;
        tender.TerminateApprovalStatus__c = null;
      }
      update tender;
      // 招标-询价关联修改 20210813 end
      return '成功';
    }catch (Exception ex) {
      return  ex.getMessage();
      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();
    }
  }