| | |
| | | global class NFM503InfoFileBatch implements Database.Batchable<sObject>, Database.AllowsCallouts, Database.Stateful { |
| | | public String TenId; |
| | | public String bidInfoFileID; |
| | | //add staic sushanhu 20220302 start |
| | | public static String transUrl; |
| | | public static String transId; |
| | | public static String token; |
| | | public static integer isSuccess=0; |
| | | public static List<String> sfRecordIds =new List<String>(); |
| | | //add staic sushanhu 20220302 end |
| | | Boolean IsNeedExecute = false; //2021-06-28 mzy WLIG-BYHD79 SFDC环境batch合并调查 是否符合执行条件 |
| | | |
| | | //add nfm 503 aws response start sushanhu 20220301 |
| | | global class File{ |
| | | public String key; |
| | | public String name; |
| | | } |
| | | //add nfm 503 aws response sushanhu 20220301 end |
| | | //2021-06-28 mzy update 千里马-Batch start |
| | | global NFM503InfoFileBatch() { |
| | | this.IsNeedExecute = true; |
| | |
| | | |
| | | global Database.QueryLocator start(Database.BatchableContext bc) { |
| | | String query = 'select Id, Tender_information__c, infoAddress__c, ' + |
| | | 'Tender_information__r.InfoType__c, isProcessed__c, ' + |
| | | ' ErrorMessage__c from bidInfoFile__c where isProcessed__c = false '; |
| | | 'Tender_information__r.InfoType__c, isProcessed__c, ' + |
| | | ' ErrorMessage__c from bidInfoFile__c where isProcessed__c = false '; |
| | | if (String.isNotBlank(TenId)) { |
| | | query += 'and Tender_information__r.Id =: TenId'; |
| | | } |
| | |
| | | global void execute(Database.BatchableContext BC, list<bidInfoFile__c> bidInfoFileList) { |
| | | Savepoint sp; |
| | | bidInfoFile__c bidInfoFile = bidInfoFileList[0]; |
| | | |
| | | List<String> queryfileList = new List<String>(); |
| | | queryfileList.add(bidInfoFile.infoAddress__c); |
| | | try { |
| | | String token; |
| | | //update 同staic 20220302 satrt |
| | | // String token; |
| | | //update 同staic 20220302 end |
| | | Datetime oldTime; |
| | | // 从转换表中获取token |
| | | BatchIF_Transfer__c token503 = [Select ID, NFM501_Token__c |
| | |
| | | timeslot = newTime.getTime() - oldTime.getTime(); |
| | | } |
| | | // System.debug('++++1++++' + token + ' : ' + timeslot); |
| | | PIHelper.piIntegration pi =PIHelper.getPIIntegrationInfo('NFM503'); |
| | | if (string.isblank(token) || timeslot > 1800000) { |
| | | NFMUtil.response response = NFMUtil.receiveToken(); |
| | | if (String.isBlank(response.responseBody)) { |
| | | bidInfoFile.ErrorMessage__c = '503token:' + response.status; |
| | | } |
| | | token = response.responseBody; |
| | | //UP TO AWAS TOKEN 20220225 SUSHANHU START |
| | | // NFMUtil.response response = NFMUtil.getAWSToken(); |
| | | // //UP TO AWAS TOKEN 20220225 SUSHANHU END |
| | | // if (String.isBlank(response.responseBody)) { |
| | | // bidInfoFile.ErrorMessage__c = '503token:' + response.status; |
| | | // } |
| | | token = pi.token; |
| | | oldTime = Datetime.now(); |
| | | token503.NFM501_Token__c = token; |
| | | oldTime503.NFM501_Gain_End_Time__c = oldTime; |
| | | } |
| | | // 存放超过12M的附件 |
| | | List<Attachment> TenOtherAttList = new List<Attachment>(); |
| | | // 存放所有附件 |
| | | List<String> FileList = new List<String>(); |
| | | // 如果文件大小超过12M更新 |
| | | List< Tender_information__c> updateTenderList = new List< Tender_information__c>(); |
| | | // 获取接口3中数据 |
| | | NFMUtil.response503 response = NFMUtil.getFileData(token, bidInfoFile.infoAddress__c); |
| | | // 文件大小超过12M |
| | | if (response.Name.equals('文件大小超过12M')) { |
| | | id tendID = bidInfoFile.Tender_information__c; |
| | | Tender_information__c tempTender = new Tender_information__c(); |
| | | tempTender.id = tendID; |
| | | tempTender.File_Surpass_12M__c = true; |
| | | if (String.isBlank(tempTender.Overstep_12M_infofile__c)) { |
| | | tempTender.Overstep_12M_infofile__c = bidInfoFile.infoAddress__c; |
| | | } else { |
| | | if (!tempTender.Overstep_12M_infofile__c.contains(bidInfoFile.infoAddress__c)) { |
| | | // List<String> urlList = singleFile.split(','); |
| | | tempTender.Overstep_12M_infofile__c += bidInfoFile.infoAddress__c + ','; |
| | | } |
| | | } |
| | | updateTenderList.add(tempTender); |
| | | // // 存放超过12M的附件 |
| | | // List<Attachment> TenOtherAttList = new List<Attachment>(); |
| | | // // 存放所有附件 |
| | | // List<String> FileList = new List<String>(); |
| | | // // 如果文件大小超过12M更新 |
| | | // List< Tender_information__c> updateTenderList = new List< Tender_information__c>(); |
| | | // // 获取接口3中数据 |
| | | // NFMUtil.response503 response = NFMUtil.getFileData(token, bidInfoFile.infoAddress__c); |
| | | //UP TO NEW AWS method sushanhu start 20220301 |
| | | // List< Tender_information__c> updateTenderList = new List< Tender_information__c>(); |
| | | List<FileAddress__c> fileList = new List<FileAddress__c>(); |
| | | transUrl =pi.searchUrl; |
| | | NFMUtil.response response = NFMUtil.getAWSQLMData(pi.newUrl ,JSON.serialize(queryfileList), token); |
| | | system.debug('aws result'+response.responseBody); |
| | | Map<String, Object> result = (Map<String, Object>)JSON.deserializeUntyped(response.responseBody); |
| | | system.debug('NFM503 aws result--'+response.responseBody+'status'+response.status); |
| | | transId =(String)result.get('txId'); |
| | | //UP TO NEW AWS method sushanhu start 20220301 |
| | | // 新得存储 不需要判断文件超过12m |
| | | // // 文件大小超过12M |
| | | // if (response.Name.equals('文件大小超过12M')) { |
| | | // id tendID = bidInfoFile.Tender_information__c; |
| | | // Tender_information__c tempTender = new Tender_information__c(); |
| | | // tempTender.id = tendID; |
| | | // tempTender.File_Surpass_12M__c = true; |
| | | // if (String.isBlank(tempTender.Overstep_12M_infofile__c)) { |
| | | // tempTender.Overstep_12M_infofile__c = bidInfoFile.infoAddress__c; |
| | | // } else { |
| | | // if (!tempTender.Overstep_12M_infofile__c.contains(bidInfoFile.infoAddress__c)) { |
| | | // // List<String> urlList = singleFile.split(','); |
| | | // tempTender.Overstep_12M_infofile__c += bidInfoFile.infoAddress__c + ','; |
| | | // } |
| | | // } |
| | | // updateTenderList.add(tempTender); |
| | | // } |
| | | // // 将获取到的数据存成附件 |
| | | // Attachment WebAtt = new Attachment(); |
| | | // WebAtt.ParentId = bidInfoFile.Tender_information__c; |
| | | // WebAtt.Body = response.responseBody; |
| | | // WebAtt.Name = bidInfoFile.Tender_information__r.InfoType__c + ':' + response.Name; |
| | | // if (!response.Name.equals('文件大小超过12M')) { |
| | | // TenOtherAttList.add(WebAtt); |
| | | // } |
| | | // sp = Database.setSavepoint(); |
| | | |
| | | // if (updateTenderList.size() > 0) { |
| | | // update updateTenderList; |
| | | // } |
| | | |
| | | // System.debug('----1----' + TenOtherAttList); |
| | | // if (TenOtherAttList.size() > 0 ) { |
| | | // upsert TenOtherAttList; |
| | | // } |
| | | |
| | | // bidInfoFileList[0].isProcessed__c = true; |
| | | // bidInfoFileList[0].ErrorMessage__c = ''; |
| | | |
| | | // update bidInfoFileList; |
| | | // if (System.Test.isRunningTest()) { |
| | | // throw new ControllerUtil.myException('aaa'); |
| | | // } |
| | | // return; |
| | | String statusCode =String.valueOf(result.get('status')) ; |
| | | system.debug('statuscode aws-- '+statusCode); |
| | | if (!'0'.equals(statusCode)) { |
| | | System.debug('response.responseBody:' + response.responseBody); |
| | | return; |
| | | } |
| | | // 将获取到的数据存成附件 |
| | | Attachment WebAtt = new Attachment(); |
| | | WebAtt.ParentId = bidInfoFile.Tender_information__c; |
| | | WebAtt.Body = response.responseBody; |
| | | WebAtt.Name = bidInfoFile.Tender_information__r.InfoType__c + ':' + response.Name; |
| | | if (!response.Name.equals('文件大小超过12M')) { |
| | | TenOtherAttList.add(WebAtt); |
| | | } |
| | | Map<String, Object> fileMap = (Map<String, Object >)result.get('object'); |
| | | system.debug('fileMap'+fileMap.toString()); |
| | | Map<String, Object> fileVO =(Map<String, Object>)fileMap.get(bidInfoFile.infoAddress__c); |
| | | |
| | | String Name =(String)fileVO.get('name'); |
| | | // if (Name.equals('文件大小超过12M')) { |
| | | // id tendID = bidInfoFile.Tender_information__c; |
| | | // Tender_information__c tempTender = new Tender_information__c(); |
| | | // tempTender.id = tendID; |
| | | // tempTender.File_Surpass_12M__c = true; |
| | | // if (String.isBlank(tempTender.Overstep_12M_infofile__c)) { |
| | | // tempTender.Overstep_12M_infofile__c = bidInfoFile.infoAddress__c; |
| | | // } else { |
| | | // if (!tempTender.Overstep_12M_infofile__c.contains(bidInfoFile.infoAddress__c)) { |
| | | // // List<String> urlList = singleFile.split(','); |
| | | // tempTender.Overstep_12M_infofile__c += bidInfoFile.infoAddress__c + ','; |
| | | // } |
| | | // } |
| | | // updateTenderList.add(tempTender); |
| | | // } |
| | | |
| | | //将获取的AWS文件地址存储 |
| | | FileAddress__c file = new FileAddress__c(); |
| | | file.ParentRecordId__c = bidInfoFile.Tender_information__c; |
| | | file.FileName__c = bidInfoFile.Tender_information__r.InfoType__c + ':' + Name; |
| | | file.DownloadLink__c =pi.undeleteUrl+(String)fileVO.get('key')+'&fileName='+file.FileName__c; |
| | | file.ViewLink__c = pi.queryUrl+(String)fileVO.get('key'); |
| | | file.AWS_File_Key__c =(String)fileVO.get('key'); |
| | | fileList.add(file); |
| | | sp = Database.setSavepoint(); |
| | | |
| | | if (updateTenderList.size() > 0) { |
| | | update updateTenderList; |
| | | } |
| | | |
| | | System.debug('----1----' + TenOtherAttList); |
| | | if (TenOtherAttList.size() > 0 ) { |
| | | upsert TenOtherAttList; |
| | | System.debug('----1----' + fileList); |
| | | if (fileList.size() > 0 ) { |
| | | upsert fileList; |
| | | } |
| | | |
| | | bidInfoFileList[0].isProcessed__c = true; |
| | | bidInfoFileList[0].ErrorMessage__c = ''; |
| | | |
| | | update bidInfoFileList; |
| | | // add 确认事务 sushanhu 20220302 start |
| | | |
| | | if (fileList.size() > 0 ) { |
| | | for (FileAddress__c fileAddress : fileList) { |
| | | system.debug('fileAddress.Id---'+json.serialize(fileAddress)); |
| | | sfRecordIds.add(fileAddress.Id); |
| | | system.debug('fileAddress.Id---'+fileAddress.Id); |
| | | } |
| | | } |
| | | system.debug('成功的token'+token); |
| | | isSuccess =1; |
| | | |
| | | // if (!confirm) { |
| | | // //回滚 |
| | | // if (sp != null) { |
| | | // Database.rollback(sp); |
| | | // } |
| | | // } |
| | | // add 确认事务 sushanhu 20220302 end |
| | | if (System.Test.isRunningTest()) { |
| | | throw new ControllerUtil.myException('aaa'); |
| | | } |
| | | return; |
| | | // return; |
| | | } catch (Exception ex) { |
| | | if (sp != null) { |
| | | Database.rollback(sp); |
| | | } |
| | | // //add 确认事务 20220302 sushanhu start |
| | | // system.debug('失败的token'+token); |
| | | // PIHelper.confirmFileTrans('NFM503',0,'',transId,token,transUrl); |
| | | //add 确认事务 20220302 sushanhu end |
| | | bidInfoFile.ErrorMessage__c = '503抛出异常:' + ex.getMessage() + '\n' + ex.getStackTraceString(); |
| | | system.debug('ErrorMessage'+bidInfoFile.ErrorMessage__c); |
| | | } |
| | | update bidInfoFile; |
| | | } |
| | | |
| | | global void finish(Database.BatchableContext BC) { |
| | | |
| | | // add confirm transaction for pipl sushanhu 20220314 start |
| | | if (isSuccess==0) { |
| | | PIHelper.confirmFileTrans('NFM503',isSuccess,'',transId,token,transUrl); |
| | | }else { |
| | | PIHelper.confirmFileTrans('NFM503',isSuccess,JSON.serialize(sfRecordIds),transId,token,transUrl); |
| | | } |
| | | |
| | | // add confirm transaction for pipl sushanhu 20220314 end |
| | | } |
| | | } |