// 调货数据记录更新 global class Consumabledet2upjuBatch implements Database.Batchable { private final List TEST_ID = null; private BatchIF_Log__c iflog; public Consumabledet2upjuBatch(List testId) { TEST_ID = testId; System.debug('TEST_ID=' + TEST_ID); iflog = new BatchIF_Log__c(); iflog.Type__c = 'Consumabledet2up'; iflog.Log__c = 'Consumabledet2up start\n'; iflog.ErrorLog__c = ''; insert iflog; } global Database.QueryLocator start(Database.BatchableContext bc) { // 所有调货产品的管理编码 List trcodeList = new List(); List jiudeList = [select id,name,bar_code__c,TracingCode__c, Transfer_Time__c,Agency_Transfer__c,Frist_Transfer_Agency__c from Consumable_order_details2__c where SummonsForDirction_det__c = '互相调货']; for (Consumable_order_details2__c cod2 : jiudeList) { trcodeList.add(cod2.TracingCode__c); } if (TEST_ID == null) { return Database.getQueryLocator([select id,name,bar_code__c,TracingCode__c,Transfer_Time__c, Agency_Transfer__c,Frist_Transfer_Agency__c,SummonsForDirction_det__c, Dealer_Info_text__c from Consumable_order_details2__c where TracingCode__c in : trcodeList and TracingCode__c != null order by TracingCode__c,Arrive_date__c]); }else{ return Database.getQueryLocator([select id,name,bar_code__c,TracingCode__c,Transfer_Time__c, Agency_Transfer__c,Frist_Transfer_Agency__c,SummonsForDirction_det__c, Dealer_Info_text__c from Consumable_order_details2__c where TracingCode__c in : TEST_ID and TracingCode__c != null order by TracingCode__c,Arrive_date__c]); } } global void execute(Database.BatchableContext BC, List scope) { List uptcods = new List(); for (Integer i = 0; i < scope.size(); i++) { if (i == 0) { if (scope[i].SummonsForDirction_det__c == '互相调货') { scope[i].Agency_Transfer__c = true; scope[i].Transfer_Time__c = 1; scope[i].Frist_Transfer_Agency__c = scope[i].Dealer_Info_text__c; } }else{ if (scope[i].TracingCode__c == scope[i-1].TracingCode__c) { if (scope[i].SummonsForDirction_det__c == '互相调货') { scope[i].Agency_Transfer__c = true; scope[i].Transfer_Time__c = scope[i-1].Transfer_Time__c == null ? 1 : scope[i-1].Transfer_Time__c + 1; scope[i].Frist_Transfer_Agency__c = scope[i-1].Frist_Transfer_Agency__c == null ? scope[i].Dealer_Info_text__c : scope[i-1].Frist_Transfer_Agency__c; }else if (scope[i-1].Agency_Transfer__c) { scope[i].Agency_Transfer__c = true; scope[i].Transfer_Time__c = scope[i-1].Transfer_Time__c == null ? 1 : scope[i-1].Transfer_Time__c; scope[i].Frist_Transfer_Agency__c = scope[i-1].Frist_Transfer_Agency__c == null ? scope[i].Dealer_Info_text__c : scope[i-1].Frist_Transfer_Agency__c; } }else{ if (scope[i].SummonsForDirction_det__c == '互相调货') { scope[i].Agency_Transfer__c = true; scope[i].Transfer_Time__c = 1; scope[i].Frist_Transfer_Agency__c = scope[i].Dealer_Info_text__c; } } } uptcods.add(scope[i]); } Database.SaveResult[] lsr = Database.update(uptcods, false); String errorMsg = ''; for (Integer sIdx = 0; sIdx < lsr.size(); sIdx++) { Database.SaveResult sr = lsr[sIdx]; if (!sr.isSuccess()) { Database.Error emsg = sr.getErrors()[0]; iflog.ErrorLog__c += 'ERROR ' + uptcods[sIdx].get('TracingCode__c') + ' Con_det2:' + emsg + '\n'; } } } global void finish(Database.BatchableContext BC) { iflog.Log__c += '\nConsumabledet2up end'; String tmp = iflog.ErrorLog__c; if (tmp.length() > 65000) { tmp = tmp.substring(0, 65000); tmp += ' ...have more lines...'; iflog.ErrorLog__c = tmp; } //insert iflog; update iflog; } }