global class Send_Have_Arrival_wh_Email_Batch implements Database.Batchable { Boolean IsNeedExecute = false; // 2021-03-05 mzy WLIG-BYHD79 SFDC环境batch合并调查 是否符合执行条件 global Send_Have_Arrival_wh_Email_Batch() { } // 2021-03-05 mzy WLIG-BYHD79 SFDC环境batch合并调查 start global Send_Have_Arrival_wh_Email_Batch(Boolean NeedExecute) { this.IsNeedExecute = NeedExecute; } // 2021-03-05 mzy WLIG-BYHD79 SFDC环境batch合并调查 end global Database.QueryLocator start(Database.BatchableContext BC) { return Database.getQueryLocator([SELECT Id FROM ReceivingNote__c WHERE RN_Status__c = :FixtureUtil.RNStatusMap.get(FixtureUtil.RNStatus.Yi_Ru_Ku.ordinal()) AND Send_Arrival_wh_Email__c = false]); } global void execute(Database.BatchableContext BC, List rowDataList) { Map> rndMap = new Map>(); for (ReceivingNoteDetail__c rnd : [SELECT Id , Name , Fixture_Model_No_F__c , Is_First_RND_F__c , ReceivingNote__c FROM ReceivingNoteDetail__c WHERE ReceivingNote__c = :rowDataList AND Delete_Flag__c = false ORDER BY ReceivingNoteDetailNo__c]) { if (rndMap.containsKey(rnd.ReceivingNote__c) == false) { rndMap.put(rnd.ReceivingNote__c, new List()); } rndMap.get(rnd.ReceivingNote__c).add(rnd); } List rnList = new List(); for (Id rnId : rndMap.keySet()) { String emailBody = ''; ReceivingNoteDetail__c lastRnd = null; Integer lastModelCount = 0; for (ReceivingNoteDetail__c rnd : rndMap.get(rnId)) { if (lastRnd == null){ lastRnd = rnd; } if(rnd.Fixture_Model_No_F__c != lastRnd.Fixture_Model_No_F__c){ if(lastRnd.Is_First_RND_F__c){ emailBody += '\n'+lastRnd.Fixture_Model_No_F__c+' '; } else{ emailBody += lastRnd.Fixture_Model_No_F__c; if (lastModelCount > 1){ emailBody += ' * ' + lastModelCount; } if(!rnd.Is_First_RND_F__c){ emailBody +=','; } } lastModelCount = 0; } lastRnd = rnd; lastModelCount += 1; } if(lastRnd!=null){ if(lastRnd.Is_First_RND_F__c){ emailBody += '\n'+lastRnd.Fixture_Model_No_F__c+' '; } else{ emailBody += lastRnd.Fixture_Model_No_F__c; if (lastModelCount > 1){ emailBody += ' * ' + lastModelCount; } } } ReceivingNote__c rn = new ReceivingNote__c(Id = rnId, Have_Arrival_wh_Email__c = emailBody); rnList.add(rn); } update rnList; } global void finish(Database.BatchableContext BC) { // 今回はやることないです } public static void run() { Database.executeBatch( new Send_Have_Arrival_wh_Email_Batch(),200); } }