Li Jun
2022-03-31 3ba0123db48f8bab81ddf0913e1b95280ef545e8
force-app/main/default/classes/NFM502Controller.cls
@@ -1,408 +1,414 @@
public with sharing class NFM502Controller implements Queueable {
   public String rowData_id;
   //add staic sushanhu 20220302 start
   public static String transUrl;
   public static String transId;
   public static String token;
   public static List<String> sfRecordIds =new List<String>();
   //add staic sushanhu 20220302 end
   public NFM502Controller(String rowData_id) {
      this.rowData_id = rowData_id;
   }
    public String rowData_id;
    //add staic sushanhu 20220302 start
    public static String transUrl;
    public static String transId;
    public static String token;
    public static List<String> sfRecordIds =new List<String>();
    //add staic sushanhu 20220302 end
    public NFM502Controller(String rowData_id) {
        this.rowData_id = rowData_id;
    }
   public static Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt);
   public void execute(QueueableContext context) {
      // 通过Rowdata.Id来检索日志中的内容(千里马数据等)
      BatchIF_Log__c rowData = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
                                Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c,
                                Log10__c, Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
                                NFM501Future_Count__c,
                                NFM501_Web_Annex_Count__c
                                from BatchIF_Log__c where RowDataFlg__c = true and Id = :rowData_id];
      //存放报错信息
      BatchIF_Log__c iflog502 = new BatchIF_Log__c();
      iflog502.Type__c = 'NFM501';
      iflog502.RowDataFlg__c = false;
      iflog502.Log__c = ' ';
      iflog502.ErrorLog__c = ' ';
      iflog502.MessageGroupNumber__c = rowData.MessageGroupNumber__c;
      insert iflog502;
      NFM502Controller.WebAnnexGain(rowData.Id, iflog502.Id, false);
   }
   @future(callout = true)
   public static void WebAnnexGain(String rowData_id, String iflog502_id, boolean Manual_execution502) {
      BatchIF_Log__c rowData = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
                                Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
                                Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
                                NFM501Future_Count__c,
                                NFM501_Web_Annex_Count__c from BatchIF_Log__c
                                where RowDataFlg__c = true and Id = :rowData_id];
      BatchIF_Log__c iflog502 = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
                                 Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
                                 Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
                                 NFM501Future_Count__c,
                                 NFM501_Web_Annex_Count__c from BatchIF_Log__c
                                 where Id = :iflog502_id];
    public static Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt);
    public void execute(QueueableContext context) {
        // 通过Rowdata.Id来检索日志中的内容(千里马数据等)
        BatchIF_Log__c rowData = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
                                  Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c,
                                  Log10__c, Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
                                  NFM501Future_Count__c,
                                  NFM501_Web_Annex_Count__c
                                  from BatchIF_Log__c where RowDataFlg__c = true and Id = :rowData_id];
        //存放报错信息
        BatchIF_Log__c iflog502 = new BatchIF_Log__c();
        iflog502.Type__c = 'NFM501';
        iflog502.RowDataFlg__c = false;
        iflog502.Log__c = ' ';
        iflog502.ErrorLog__c = ' ';
        iflog502.MessageGroupNumber__c = rowData.MessageGroupNumber__c;
        insert iflog502;
        NFM502Controller.WebAnnexGain(rowData.Id, iflog502.Id, false);
    }
    @future(callout = true)
    public static void WebAnnexGain(String rowData_id, String iflog502_id, boolean Manual_execution502) {
        BatchIF_Log__c rowData = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
                                  Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
                                  Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
                                  NFM501Future_Count__c,
                                  NFM501_Web_Annex_Count__c from BatchIF_Log__c
                                  where RowDataFlg__c = true and Id = :rowData_id];
        BatchIF_Log__c iflog502 = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c,
                                   Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c,
                                   Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c,
                                   NFM501Future_Count__c,
                                   NFM501_Web_Annex_Count__c from BatchIF_Log__c
                                   where Id = :iflog502_id];
      iflog502.Log__c = iflog502.Log__c == null ? '' : iflog502.Log__c;
      iflog502.ErrorLog__c = iflog502.ErrorLog__c == null ? '' : iflog502.ErrorLog__c;
      rowData.Log__c = rowData.Log__c == null ? '' : rowData.Log__c;
      rowData.ErrorLog__c = rowData.ErrorLog__c == null ? '' : rowData.ErrorLog__c;
        iflog502.Log__c = iflog502.Log__c == null ? '' : iflog502.Log__c;
        iflog502.ErrorLog__c = iflog502.ErrorLog__c == null ? '' : iflog502.ErrorLog__c;
        rowData.Log__c = rowData.Log__c == null ? '' : rowData.Log__c;
        rowData.ErrorLog__c = rowData.ErrorLog__c == null ? '' : rowData.ErrorLog__c;
      // Savepoint sp = Database.setSavepoint();
      try {
         //update 同staic 20220302 satrt
         // String token;
         //update 同staic 20220302 end
         Datetime oldTime;
         // 从转换表中获取token
         BatchIF_Transfer__c token502 = [Select ID, NFM501_Token__c
                                         FROM BatchIF_Transfer__c Where Table__c = 'NFM501Token'];
         token = token502.NFM501_Token__c;
         // 从转换表中获取获取完token的时间
         BatchIF_Transfer__c oldTime502 = [Select ID, NFM501_Gain_End_Time__c
                                           FROM BatchIF_Transfer__c Where Table__c = 'NFM501GainEndTime'];
         oldTime = oldTime502.NFM501_Gain_End_Time__c;
         // 对日志中的数据进行解析
         String WebUrl = NFMUtil.QLMgetRowDataStr(rowData);
         NFM501Controller.AllData getQLMData502 = (NFM501Controller.AllData)
                 JSON.deserialize(WebUrl, NFM501Controller.AllData.class);
         if (getQLMData502 == null) {
            return;
         }
        // Savepoint sp = Database.setSavepoint();
        try {
            //update 同staic 20220302 satrt
            // String token;
            //update 同staic 20220302 end
            Datetime oldTime;
            // 从转换表中获取token
            BatchIF_Transfer__c token502 = [Select ID, NFM501_Token__c
                                            FROM BatchIF_Transfer__c Where Table__c = 'NFM501Token'];
            token = token502.NFM501_Token__c;
            // 从转换表中获取获取完token的时间
            BatchIF_Transfer__c oldTime502 = [Select ID, NFM501_Gain_End_Time__c
                                              FROM BatchIF_Transfer__c Where Table__c = 'NFM501GainEndTime'];
            oldTime = oldTime502.NFM501_Gain_End_Time__c;
            // 对日志中的数据进行解析
            String WebUrl = NFMUtil.QLMgetRowDataStr(rowData);
            NFM501Controller.AllData getQLMData502 = (NFM501Controller.AllData)
                    JSON.deserialize(WebUrl, NFM501Controller.AllData.class);
            if (getQLMData502 == null) {
                return;
            }
         // 判断token是否失效(失效条件为30分钟之后),如果失效,重新获取
         Long timeslot;
         Datetime newTime = System.now();
         if (oldTime == null) {
            timeslot = 2800000;
         } else {
            // 当前时间与获取token结束时间的时间差
            timeslot = newTime.getTime() - oldTime.getTime();
         }
         // System.debug('++++1++++' + token + '  : ' + timeslot);
         if (string.isblank(token) || timeslot > 1800000) {
            // NFMUtil.response response = NFMUtil.receiveToken();
            //update to aws token sushanhu 20220301  start
            NFMUtil.response response = NFMUtil.getAWSToken();
            //判断rowdata中数据获取成功与否,如果失败重发三次,如果大于三次则手动操作
            if (String.isBlank(response.responseBody)) {
               System.debug('response.responseBody:' + response.responseBody);
               iflog502.ErrorLog__c = '502token:' + response.responseBody;
               // rowData.NFM501_Web_Annex_Count__c = 0;
               if (!Manual_execution502) {
                  NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
               }
               //更新日志数据
               System.debug('123@@@');
               return;
            }
            token = response.responseBody;
            oldTime = Datetime.now();
            token502.NFM501_Token__c = token;
            oldTime502.NFM501_Gain_End_Time__c = oldTime;
            //update to aws token sushanhu 20220301  end
         }
            // 判断token是否失效(失效条件为30分钟之后),如果失效,重新获取
            Long timeslot;
            Datetime newTime = System.now();
            if (oldTime == null) {
                timeslot = 2800000;
            } else {
                // 当前时间与获取token结束时间的时间差
                timeslot = newTime.getTime() - oldTime.getTime();
            }
            // System.debug('++++1++++' + token + '  : ' + timeslot);
            if (string.isblank(token) || timeslot > 1800000) {
                // NFMUtil.response response = NFMUtil.receiveToken();
                //update to aws token sushanhu 20220301  start
                NFMUtil.response response = NFMUtil.getAWSToken();
                //判断rowdata中数据获取成功与否,如果失败重发三次,如果大于三次则手动操作
                if (String.isBlank(response.responseBody)) {
                    System.debug('response.responseBody:' + response.responseBody);
                    iflog502.ErrorLog__c = '502token:' + response.responseBody;
                    // rowData.NFM501_Web_Annex_Count__c = 0;
                    if (!Manual_execution502) {
                        NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
                    }
                    //更新日志数据
                    System.debug('123@@@');
                    return;
                }
                token = response.responseBody;
                oldTime = Datetime.now();
                token502.NFM501_Token__c = token;
                oldTime502.NFM501_Gain_End_Time__c = oldTime;
                //update to aws token sushanhu 20220301  end
            }
         //关联附件与招投标项目(通过Id)
         //1.读出招投标中的唯一标识(projecId),将全部招投标projectId存入ProjectIdList
         List<String> ProjectIdList = new List<String>();
         for (NFM501Controller.ListItem ProId : getQLMData502.data.list1) {
            ProjectIdList.add(ProId.projectId);
         }
         System.debug('---===ProjectIdList' + ProjectIdList);
         //2.取其对应的
         List<Tender_information__c> TIList =
             [Select Id, ProjectId__c, InfoType__c
              FROM Tender_information__c
              Where ProjectId__c in :ProjectIdList];
         System.debug('---===2345TIList' + TIList);
         Set<Id> TenIdSet = new Set<Id>();
            //关联附件与招投标项目(通过Id)
            //1.读出招投标中的唯一标识(projecId),将全部招投标projectId存入ProjectIdList
            List<String> ProjectIdList = new List<String>();
            for (NFM501Controller.ListItem ProId : getQLMData502.data.list1) {
                ProjectIdList.add(ProId.projectId);
            }
            System.debug('---===ProjectIdList' + ProjectIdList);
            //2.取其对应的
            List<Tender_information__c> TIList =
                [Select Id, ProjectId__c, InfoType__c
                 FROM Tender_information__c
                 Where ProjectId__c in :ProjectIdList];
            System.debug('---===2345TIList' + TIList);
            Set<Id> TenIdSet = new Set<Id>();
         Map<String, Tender_information__c> TenMap = new Map<String, Tender_information__c>();
         for (Tender_information__c Ten : TIList) {
            TenMap.put(Ten.ProjectId__c, Ten);
            TenIdSet.add(Ten.Id);
         }
            Map<String, Tender_information__c> TenMap = new Map<String, Tender_information__c>();
            for (Tender_information__c Ten : TIList) {
                TenMap.put(Ten.ProjectId__c, Ten);
                TenIdSet.add(Ten.Id);
            }
         //循环URL
         // List<Attachment> TenAttList = new List<Attachment>();
         //update to aws pi sushanhu 20220301 start
         List<FileAddress__c> fileList = new List<FileAddress__c>();
         List<String> queryUrlList = new List<String>();
         Map<String, NFM501Controller.ListItem> queryMap = new Map<String, NFM501Controller.ListItem>();
         //update to aws pi sushanhu 20220301 end
         for (NFM501Controller.ListItem QLMWebAtt : getQLMData502.data.list1) {
            if (QLMWebAtt.projectId == null) {
               iflog502.ErrorLog__c += 'Error! [' + QLMWebAtt.projectId + ']NotExist. This information is skipped.\n';
               continue;
            }
            if (QLMWebAtt.areaProvince.equals('香港特别行政区')
                    || QLMWebAtt.areaProvince.equals('澳门特别行政区')
                    || QLMWebAtt.areaProvince.equals('台湾省')) {
               iflog502.ErrorLog__c += 'Error! [' + QLMWebAtt.areaProvince +
                                       ']Is 香港特别行政区(澳门特别行政区,台湾省). This information is skipped.\n';
               continue;
            }
            //update to aws pi sushanhu 20220301 start
            queryUrlList.add(QLMWebAtt.infoQianlimaUrl);
            queryMap.put(QLMWebAtt.infoQianlimaUrl,QLMWebAtt);
            //update to aws pi sushanhu 20220301 start
         //    //调用接口3
         //    NFMUtil.response response = NFMUtil.getQLMData(NFMUtil.NFM502_ENDPOINT + QLMWebAtt.infoQianlimaUrl, token);
         //    if (String.isBlank(response.responseBody)) {
         //       System.debug('response.responseBody:' + response.responseBody);
         //       iflog502.ErrorLog__c = '502接口调用:' + response.status;
         //       rowData.NFM501_Web_Annex_Count__c = 0;
         //       if (!Manual_execution502) {
         //          NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
         //       }
         //       //更新日志数据
         //       update token502;
         //       update oldTime502;
         //       return;
         //    }
            //循环URL
            // List<Attachment> TenAttList = new List<Attachment>();
            //update to aws pi sushanhu 20220301 start
            List<FileAddress__c> fileList = new List<FileAddress__c>();
            List<String> queryUrlList = new List<String>();
            Map<String, NFM501Controller.ListItem> queryMap = new Map<String, NFM501Controller.ListItem>();
            //update to aws pi sushanhu 20220301 end
            for (NFM501Controller.ListItem QLMWebAtt : getQLMData502.data.list1) {
                if (QLMWebAtt.projectId == null) {
                    iflog502.ErrorLog__c += 'Error! [' + QLMWebAtt.projectId + ']NotExist. This information is skipped.\n';
                    continue;
                }
                if (QLMWebAtt.areaProvince.equals('香港特别行政区')
                        || QLMWebAtt.areaProvince.equals('澳门特别行政区')
                        || QLMWebAtt.areaProvince.equals('台湾省')) {
                    iflog502.ErrorLog__c += 'Error! [' + QLMWebAtt.areaProvince +
                                            ']Is 香港特别行政区(澳门特别行政区,台湾省). This information is skipped.\n';
                    continue;
                }
                //update to aws pi sushanhu 20220301 start
                queryUrlList.add(QLMWebAtt.infoQianlimaUrl);
                queryMap.put(QLMWebAtt.infoQianlimaUrl,QLMWebAtt);
                //update to aws pi sushanhu 20220301 start
            //  //调用接口3
            //  NFMUtil.response response = NFMUtil.getQLMData(NFMUtil.NFM502_ENDPOINT + QLMWebAtt.infoQianlimaUrl, token);
            //  if (String.isBlank(response.responseBody)) {
            //      System.debug('response.responseBody:' + response.responseBody);
            //      iflog502.ErrorLog__c = '502接口调用:' + response.status;
            //      rowData.NFM501_Web_Annex_Count__c = 0;
            //      if (!Manual_execution502) {
            //          NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
            //      }
            //      //更新日志数据
            //      update token502;
            //      update oldTime502;
            //      return;
            //  }
         //    //解析后的code报错处理
         //    string NFM502responseBody = response.responseBody;
         //    Map<String, Object> Body502 = (Map<String, Object>) JSON.deserializeUntyped(NFM502responseBody);
         //    if (!Body502.get('code').equals('0')) {
         //       System.debug('-------9-------');
         //       iflog502.ErrorLog__c = '502解析:' + Body502.get('msg').tostring() ;
         //       if (!Manual_execution502) {
         //          NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
         //       }
         //       update token502;
         //       update oldTime502;
         //       return;
         //    }
         //    System.debug('Body502.data:' + Body502.get('data').tostring() + '---------'
         //                 + Body502.get('msg').tostring() + '-------' + Body502.get('code').tostring());
            //  //解析后的code报错处理
            //  string NFM502responseBody = response.responseBody;
            //  Map<String, Object> Body502 = (Map<String, Object>) JSON.deserializeUntyped(NFM502responseBody);
            //  if (!Body502.get('code').equals('0')) {
            //      System.debug('-------9-------');
            //      iflog502.ErrorLog__c = '502解析:' + Body502.get('msg').tostring() ;
            //      if (!Manual_execution502) {
            //          NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
            //      }
            //      update token502;
            //      update oldTime502;
            //      return;
            //  }
            //  System.debug('Body502.data:' + Body502.get('data').tostring() + '---------'
            //               + Body502.get('msg').tostring() + '-------' + Body502.get('code').tostring());
         //    //获取网页信息转存为附件
         //    //截切数据(使数据成为解析的格式)
         //    Integer start = NFM502responseBody.indexOf('"infoHtml":"');
         //    Integer theEnd = NFM502responseBody.lastIndexOf('"},"msg');
         //    NFM502responseBody = NFM502responseBody.substring(start + 12, theEnd);
         //    //将其转换为附件
         //    // System.debug('---------' + NFM502responseBody);
         //    Attachment WebAtt = new Attachment();
         //    // System.debug('projectId:' + QLMWebAtt.projectId);
            // if (TenMap.containskey(QLMWebAtt.projectId)) {
            //    WebAtt.ParentId = TenMap.get(QLMWebAtt.projectId).Id;
            //    WebAtt.Body = Blob.valueOf(NFM502responseBody);
            //    WebAtt.Name = TenMap.get(QLMWebAtt.projectId).InfoType__c + ':' + QLMWebAtt.infoTitle + '.html';
            //    TenAttList.add(WebAtt);
            // }
          }
         //update to aws pi  sushanhu 20220301 start
         PIHelper.piIntegration pi =PIHelper.getPIIntegrationInfo('NFM502');
         transUrl=pi.searchUrl;
         //调用接口3
         system.debug('Payload for NFM 520:'+JSON.serialize(queryUrlList));
         NFMUtil.response response = NFMUtil.getAWSQLMData(pi.newUrl ,JSON.serialize(queryUrlList), token);
         Map<String, Object> result = (Map<String, Object>)JSON.deserializeUntyped(response.responseBody);
         String statusCode =(String)result.get('status');
         transId =(String)result.get('txId');
         if (!'0'.equals(statusCode)) {
            System.debug('response.responseBody:' + response.responseBody);
            iflog502.ErrorLog__c = '502接口调用:' + (String)result.get('message');
            rowData.NFM501_Web_Annex_Count__c = 0;
            if (!Manual_execution502) {
               NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
            }
            //更新日志数据
            update token502;
            update oldTime502;
            return;
         }
            //  //获取网页信息转存为附件
            //  //截切数据(使数据成为解析的格式)
            //  Integer start = NFM502responseBody.indexOf('"infoHtml":"');
            //  Integer theEnd = NFM502responseBody.lastIndexOf('"},"msg');
            //  NFM502responseBody = NFM502responseBody.substring(start + 12, theEnd);
            //  //将其转换为附件
            //  // System.debug('---------' + NFM502responseBody);
            //  Attachment WebAtt = new Attachment();
            //  // System.debug('projectId:' + QLMWebAtt.projectId);
                // if (TenMap.containskey(QLMWebAtt.projectId)) {
                //  WebAtt.ParentId = TenMap.get(QLMWebAtt.projectId).Id;
                //  WebAtt.Body = Blob.valueOf(NFM502responseBody);
                //  WebAtt.Name = TenMap.get(QLMWebAtt.projectId).InfoType__c + ':' + QLMWebAtt.infoTitle + '.html';
                //  TenAttList.add(WebAtt);
                // }
             }
            //update to aws pi  sushanhu 20220301 start
            PIHelper.piIntegration pi =PIHelper.getPIIntegrationInfo('NFM502');
            transUrl=pi.searchUrl;
            //调用接口3
            system.debug('Payload for NFM 520:'+JSON.serialize(queryUrlList));
            NFMUtil.response response = NFMUtil.getAWSQLMData(pi.newUrl ,JSON.serialize(queryUrlList), token);
            Map<String, Object> result = (Map<String, Object>)JSON.deserializeUntyped(response.responseBody);
            String statusCode =(String)result.get('status');
            transId =(String)result.get('txId');
            if (!'0'.equals(statusCode)) {
                System.debug('response.responseBody:' + response.responseBody);
                iflog502.ErrorLog__c = '502接口调用:' + (String)result.get('message');
                rowData.NFM501_Web_Annex_Count__c = 0;
                if (!Manual_execution502) {
                    NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
                }
                //更新日志数据
                update token502;
                update oldTime502;
                return;
            }
         //解析后的code报错处理
         string NFM502responseBody = response.responseBody;
         Map<String, Object> Body502 = (Map<String, Object>) JSON.deserializeUntyped(NFM502responseBody);
         if (!String.valueOf(Body502.get('status')).equals('0')) {
            System.debug('-------9-------');
            iflog502.ErrorLog__c = '502解析:' + Body502.get('message').tostring() ;
            if (!Manual_execution502) {
               NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
            }
            update token502;
            update oldTime502;
            return;
         }
         System.debug('Body502.data:' + Body502.get('object').tostring() + '---------'
                   + Body502.get('message').tostring() + '-------' + Body502.get('status').tostring());
            //解析后的code报错处理
            string NFM502responseBody = response.responseBody;
            Map<String, Object> Body502 = (Map<String, Object>) JSON.deserializeUntyped(NFM502responseBody);
            if (!String.valueOf(Body502.get('status')).equals('0')) {
                System.debug('-------9-------');
                iflog502.ErrorLog__c = '502解析:' + Body502.get('message').tostring() ;
                if (!Manual_execution502) {
                    NFM501Controller.againSendRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData);
                }
                update token502;
                update oldTime502;
                return;
            }
            System.debug('Body502.data:' + Body502.get('object').tostring() + '---------'
                         + Body502.get('message').tostring() + '-------' + Body502.get('status').tostring());
         //获取aws返回的地址并存储
         Map<String, Object> fileMap = (Map<String, Object >)result.get('object');
         for(String url:queryUrlList){
            NFM501Controller.ListItem QLMWebAtt = queryMap.get(url);
            if (TenMap.containskey(QLMWebAtt.projectId)) {
               FileAddress__c file =new FileAddress__c();
               file.ParentRecordId__c = TenMap.get(QLMWebAtt.projectId).Id;
               file.FileName__c = TenMap.get(QLMWebAtt.projectId).InfoType__c + ':' + QLMWebAtt.infoTitle + '.html';
               file.DownloadLink__c =pi.undeleteUrl+(String)fileMap.get(url)+'&fileName='+file.FileName__c;
               file.ViewLink__c = pi.queryUrl+(String)fileMap.get(url) ;
               file.AWS_File_Key__c =(String)fileMap.get(url) ;
               fileList.add(file);
            }
         }
         //删除同名的附件
         List<String> UrlList = new List<String>();
         for (NFM501Controller.ListItem UrlName : getQLMData502.data.list1) {
            if (TenMap.containskey(UrlName.projectId)) {
               UrlList.add(TenMap.get(UrlName.projectId).InfoType__c + ':' + UrlName.infoTitle + '.html');
            }
         }
            //获取aws返回的地址并存储
            Map<String, Object> fileMap = (Map<String, Object >)result.get('object');
            for(String url:queryUrlList){
                NFM501Controller.ListItem QLMWebAtt = queryMap.get(url);
                if (TenMap.containskey(QLMWebAtt.projectId)) {
                    FileAddress__c file =new FileAddress__c();
                    file.ParentRecordId__c = TenMap.get(QLMWebAtt.projectId).Id;
                    file.FileName__c = TenMap.get(QLMWebAtt.projectId).InfoType__c + ':' + QLMWebAtt.infoTitle + '.html';
                    file.DownloadLink__c =pi.undeleteUrl+(String)fileMap.get(url)+'&fileName='+file.FileName__c;
                    file.ViewLink__c = pi.queryUrl+(String)fileMap.get(url) ;
                    file.AWS_File_Key__c =(String)fileMap.get(url) ;
                    fileList.add(file);
                }
            }
            //删除同名的附件
            List<String> UrlList = new List<String>();
            for (NFM501Controller.ListItem UrlName : getQLMData502.data.list1) {
                if (TenMap.containskey(UrlName.projectId)) {
                    UrlList.add(TenMap.get(UrlName.projectId).InfoType__c + ':' + UrlName.infoTitle + '.html');
                }
            }
         List<FileAddress__c> DeleFileList = [select id, FileName__c, ParentRecordId__c from FileAddress__c
                                         where FileName__c in :UrlList and ParentRecordId__c in :TenIdSet];
         if (DeleFileList.size() > 0) {
            delete DeleFileList;
         }
         System.debug('----1----' + fileList);
         if (fileList.size() > 0) {
            upsert fileList;
         }
         //确认事务
         for (FileAddress__c file : fileList) {
            system.debug('file--'+json.serialize(file));
            system.debug('file.id'+file.Id);
            sfRecordIds.add(file.Id);
         }
         //update to aws pi  sushanhu 20220301 end
         //  PIHelper.confirmFileTrans('NFM502',1,JSON.serialize(sfRecordIds),transId,token,transUrl);
         PIHelper.insertConfirmTrans('NFM502',1,JSON.serialize(sfRecordIds),transId,0,transUrl,null);
         // if (!confirm) {
         //    //回滚
         // }
         rowData.NFM501_Web_Annex_Count__c = 0;
      } catch (Exception ex) {
         // Database.rollback(sp);
         // System.debug(Logginglevel.ERROR, 'QLMData_' + rowData.MessageGroupNumber__c + ':' + ex.getMessage());
         // System.debug(Logginglevel.ERROR, 'QLMData_' + rowData.MessageGroupNumber__c + ':' + ex.getStackTraceString());
         // logstr += '\n' + ex.getMessage();
         //add 事务确认 sushanhu 20220302 satrt
         //  PIHelper.confirmFileTrans('NFM502',0,'',transId,token,transUrl);
          PIHelper.insertConfirmTrans('NFM502',0,JSON.serialize(sfRecordIds),transId,0,transUrl,null);
         //add 事务确认 sushanhu 20220302 end
         iflog502.ErrorLog__c = '502抛出异常:' + ex.getMessage() + '\n'
                                + ex.getStackTraceString() + '\n' + iflog502.ErrorLog__c;
         if (!Manual_execution502) {
            NFM501Controller.againSendExceptionRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData,
                    '502抛出异常:' + ex.getMessage() + '\n' + ex.getStackTraceString()
                    + '\n' + rowData.ErrorLog__c +
                    '错误次数已经超过自动收信设定的最大次数,请手动收信');
         }
      }
      update rowData;
      System.debug('+++++++5+++++++' + rowData);
      System.debug('+++++++3+++++++' + iflog502.Log__c);
      System.debug('+++++++2+++++++' + iflog502.ErrorLog__c);
      //如果存入信息超出限制,用省略号代替
      if (iflog502.Log__c.length() > 131072) {
         iflog502.Log__c = iflog502.Log__c.subString(0, 131065) + ' ...';
      }
      if (iflog502.ErrorLog__c.length() > 32768) {
         iflog502.ErrorLog__c = iflog502.ErrorLog__c.subString(0, 32760) + ' ...';
      }
      upsert iflog502;
   }
   public static void test() {
      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++;
            List<FileAddress__c> DeleFileList = [select id, FileName__c, ParentRecordId__c from FileAddress__c
                                            where FileName__c in :UrlList and ParentRecordId__c in :TenIdSet];
            if (DeleFileList.size() > 0) {
                delete DeleFileList;
            }
            System.debug('----1----' + fileList);
            if (fileList.size() > 0) {
                upsert fileList;
            }
            //确认事务
            for (FileAddress__c file : fileList) {
                system.debug('file--'+json.serialize(file));
                system.debug('file.id'+file.Id);
                sfRecordIds.add(file.Id);
            }
            //update to aws pi  sushanhu 20220301 end
            //  PIHelper.confirmFileTrans('NFM502',1,JSON.serialize(sfRecordIds),transId,token,transUrl);
            if (fileList.size() > 0) {
                PIHelper.insertConfirmTrans('NFM502',1,JSON.serialize(sfRecordIds),transId,0,transUrl,null);
            }else{
                PIHelper.insertConfirmTrans('NFM502',0,JSON.serialize(sfRecordIds),transId,0,transUrl,null);
            }
   }
            // if (!confirm) {
            //  //回滚
            // }
            rowData.NFM501_Web_Annex_Count__c = 0;
        } catch (Exception ex) {
            // Database.rollback(sp);
            // System.debug(Logginglevel.ERROR, 'QLMData_' + rowData.MessageGroupNumber__c + ':' + ex.getMessage());
            // System.debug(Logginglevel.ERROR, 'QLMData_' + rowData.MessageGroupNumber__c + ':' + ex.getStackTraceString());
            // logstr += '\n' + ex.getMessage();
            //add 事务确认 sushanhu 20220302 satrt
            //  PIHelper.confirmFileTrans('NFM502',0,'',transId,token,transUrl);
             PIHelper.insertConfirmTrans('NFM502',0,JSON.serialize(sfRecordIds),transId,0,transUrl,null);
            //add 事务确认 sushanhu 20220302 end
            iflog502.ErrorLog__c = '502抛出异常:' + ex.getMessage() + '\n'
                                   + ex.getStackTraceString() + '\n' + iflog502.ErrorLog__c;
            if (!Manual_execution502) {
                NFM501Controller.againSendExceptionRequest(iflog502, 'NFM501_Web_Annex_Count__c', rowData,
                        '502抛出异常:' + ex.getMessage() + '\n' + ex.getStackTraceString()
                        + '\n' + rowData.ErrorLog__c +
                        '错误次数已经超过自动收信设定的最大次数,请手动收信');
            }
        }
        update rowData;
        System.debug('+++++++5+++++++' + rowData);
        System.debug('+++++++3+++++++' + iflog502.Log__c);
        System.debug('+++++++2+++++++' + iflog502.ErrorLog__c);
        //如果存入信息超出限制,用省略号代替
        if (iflog502.Log__c.length() > 131072) {
            iflog502.Log__c = iflog502.Log__c.subString(0, 131065) + ' ...';
        }
        if (iflog502.ErrorLog__c.length() > 32768) {
            iflog502.ErrorLog__c = iflog502.ErrorLog__c.subString(0, 32760) + ' ...';
        }
        upsert iflog502;
    }
    public static void test() {
        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++;
    }
}