public with sharing class RepairSendToETQBatch implements Database.Batchable, Database.AllowsCallouts,Database.Stateful { public List ids; //add by rentongxiao 2020-09-27 start public String iflog_Id; public BatchIF_Log__c rowDataSFDC; public List repairIds; public String statu; //add by rentongxiao 2020-09-27 end //HHOA-C3LJWQ 先更新修理再发送etq 20210616 start byrentx public List idss; //HHOA-C3LJWQ 先更新修理再发送etq 20210616 end byrentx //update by rentongxiao 2020-09-27 start public RepairSendToETQBatch() { ids = new List(); this.statu = ''; this.idss = new List(); } public RepairSendToETQBatch(String iflog_Id,BatchIF_Log__c rowDataSFDC, List repairIds,String statu) { ids = repairIds; this.iflog_Id = iflog_Id; this.rowDataSFDC = rowDataSFDC; this.repairIds = repairIds; this.statu = statu; this.idss = new List(); } //update by rentongxiao 2020-09-27 end //add by rentx 2020-10-27 通过月份同步R3数据 public Integer monthNum; public RepairSendToETQBatch(String iflog_Id,BatchIF_Log__c rowDataSFDC, List repairIds,String statu,Integer tempmonthNum) { this.iflog_Id = iflog_Id; this.rowDataSFDC = rowDataSFDC; this.repairIds = repairIds; // gzw add ids = repairIds; this.statu = statu; monthNum = tempmonthNum; this.idss = new List(); } ////add by renytx 2020-10-27 通过月份同步R3数据 end public RepairSendToETQBatch(List argsIds) { ids = argsIds; this.idss = new List(); } public Database.QueryLocator start(Database.BatchableContext BC) { String staSql = 'select id,Name,ASReportedCodeAC__c,AE_DetermineResult__c,PAE_Determine__c,PAE_DetermineAC__c from Repair__c '; if (ids != null && ids.size() > 0) { //update by rentongxiao 2020-09-27 start // staSql += ' and id in :ids'; staSql += ' where id in :ids '; //update by rentongxiao 2020-09-27 end }else { // staSql += ' where AsyncData__c = false and Complaint_Number__c = null '; // staSql += ' and Repair_Shipped_Date__c != null and AE_DetermineResult__c != null and PAE_Determine__c != null and PAE_DetermineAC__c != null '; //update by rentx 2020-10-23 staSql += ' WHERE AsyncData__c = false AND Repair_Shipped_Date__c != null AND AE_DetermineResult__c = \'nonAE\' AND PAE_Determine__c = \'nonPAE\' '; staSql += ' AND PAE_DetermineAC__c = \'nonPAE\' AND Complaint_Number__c = null AND DOJ_Status__c != \'非对象\' AND PAE_reappear_confirm__c != null '; } if ((ids == null || ids.size() == 0) && monthNum != null) { Date startDay = Date.newInstance(2020,monthNum,1); Date tempDay = Date.newInstance(2020,monthNum+1, 1); Date endDay = tempDay.addDays(-1); staSql += ' and SAP_Transfer_day__c >= :startDay and SAP_Transfer_day__c <= :endDay '; } return Database.getQueryLocator(staSql); } public void execute(Database.BatchableContext BC, List repList) { System.debug('repList.size() = ::'+repList.size()); Map idssMap = new Map(); List updateList = new List(); for(Repair__c re : repList){ // R3 FUC是空或者包含UseRSA 不发送ETQ 20201203 if (!((re.AE_DetermineResult__c == 'nonAE' && re.PAE_Determine__c == 'nonPAE' && re.PAE_DetermineAC__c == 'nonPAE') && (re.ASReportedCodeAC__c == null || re.ASReportedCodeAC__c.indexof('UseRSA') >= 0))) { re.AsyncData__c = true; re.AWS_Interface_Time__c = Datetime.now(); updateList.add(re); } } //HHOA-C3LJWQ 先更新修理再发送etq 20210616 start byrentx if (updateList != null && updateList.size() > 0) { Database.SaveResult[] lsr = Database.update(updateList, false); BatchIF_Log__c iflog = new BatchIF_Log__c(); iflog.Type__c = 'sendToETQ'; iflog.Log__c = 'RepairSendToETQBatch start\n'; iflog.ErrorLog__c = ''; for (Integer tIdx = 0; tIdx < lsr.size(); tIdx++) { Database.SaveResult sr = lsr[tIdx]; System.debug('sr.isSuccess:' + sr.isSuccess()); if (!sr.isSuccess()) { Database.Error emsg = sr.getErrors()[0]; iflog.ErrorLog__c += 'ERROR ' + updateList[tIdx].Name + ' 更新 aws同步状态,同步时间失败:' + emsg + '\n'; }else{ this.idss.add(updateList[tIdx].Id); iflog.Log__c += updateList[tIdx].Name + ' 更新 aws同步状态,同步时间成功 \n'; } } iflog.Log__c += 'RepairSendToETQBatch end\n'; iflog.Log__c += 'idss::'+idss; insert iflog; } //HHOA-C3LJWQ 先更新修理再发送etq 20210616 end byrentx // Savepoint sp = Database.setSavepoint(); //add by rentx 2021-03-23 start // BatchIF_Log__c iflog = new BatchIF_Log__c(); // iflog.Type__c = 'sendToETQ'; // iflog.Log__c = 'RepairSendToETQBatch start\n'; // Savepoint sp = Database.setSavepoint(); //add by rentx 2021-03-23 end // try{ // BatchIF_Log__c iflog = new BatchIF_Log__c(); // iflog.MessageGroupNumber__c = String.valueOf(DateTime.now()).replaceAll('\\D',''); // iflog.Type__c = 'NFM401'; // insert iflog; // NFM401Controller1.callout(null,null,idss,statu); //update by rentx 2021-03-23 start 需要先更新修理的信息再掉401接口 不然的话可能会出现 调用成功但是部分修理更新失败的情况 将更新修理的步骤提前 则当修理更新失败时 就不会往下执行401的接口了 // if (idssMap.size() > 0) { // update idssMap.values(); // } //update by rentx 2021-03-23 end // NFM401Controller.callout(null,null,idss,statu); /* for(Repair__c re : repList){ re.AsyncData__c = true; re.AWS_Interface_Time__c = Datetime.now(); }*/ //add by rentx 2020-11-19 start // Database.SaveResult[] lsr = Database.update(repList, false); //注释by rentx 2021-03-23 start /*Database.SaveResult[] lsr = Database.update(idssMap.values(), false); BatchIF_Log__c iflog = new BatchIF_Log__c(); iflog = new BatchIF_Log__c(); iflog.Type__c = 'sendToETQ'; iflog.Log__c = 'RepairSendToETQBatch start\n'; iflog.ErrorLog__c = ''; for (Integer tIdx = 0; tIdx < lsr.size(); tIdx++) { Database.SaveResult sr = lsr[tIdx]; System.debug('sr.isSuccess:' + sr.isSuccess()); if (!sr.isSuccess()) { Database.Error emsg = sr.getErrors()[0]; iflog.ErrorLog__c += 'ERROR ' + repList[tIdx].Name + ' 更新 aws同步状态,同步时间失败:' + emsg + '\n'; }else{ iflog.Log__c += repList[tIdx].Name + ' 更新 aws同步状态,同步时间成功 \n'; } } iflog.Log__c += 'RepairSendToETQBatch end\n'; insert iflog;*/ //注释by rentx 2021-03-23 end //add by rentx 2021-03-23 start // iflog.Log__c += 'Id为 :'+idss +'的修理更新 aws同步状态,同步时间 成功 \n'; // iflog.Log__c += 'RepairSendToETQBatch end\n'; // System.debug(iflog+''); // insert iflog; //add by rentx 2021-03-23 end // update repList; //add by rentx 2020-11-19 end // }catch(Exception e){ // // Database.rollback(sp); // System.debug('00000000000'); // System.debug(e.getStackTraceString()); // Database.rollback(sp); // //add by rentx 2021-03-23 start // iflog.ErrorLog__c = '更新修理的aws同步状态失败:'+e.getMessage(); // iflog.Log__c += 'RepairSendToETQBatch end\n'; // System.debug(iflog+''); // insert iflog; //add by rentx 2021-03-23 end // } } public void finish(Database.BatchableContext BC) { // gzw PDF空白优化 跳过测试程序 if (!Test.isRunningTest()) { //HHOA-C3LJWQ 先更新修理再发送etq 20210616 start byrentx if (this.idss != null && this.idss.size() > 0) { NFM401Controller.callout(null,null,this.idss,statu); } //HHOA-C3LJWQ 先更新修理再发送etq 20210616 end byrentx Database.executeBatch(new NFM402Batch(),100); } // gzw PDF空白优化 跳过测试程序 } }