// 20211129 ljh 排队和现有出借数据的对应关系 global class RentalQueueShippmentDateBatch implements Database.Batchable { public String query; global RentalQueueShippmentDateBatch() { this.query = query; } global Database.QueryLocator start(Database.BatchableContext bc) { query = 'select id,name,NextShippmentDate__c '; // 型号 Fixture_Model_No_F__c 备品存放地(借出时)Internal_asset_location_before__c所在地区(本部) 借出时Salesdepartment_before__c 备品分类(借出时)Equipment_Type_text__c产品分类(GI/SP)(借出时)Product_category_text__c query += ' ,Asset_return_Day__c,Lost_item_check_OK__c,Inspection_result_after_OK__c,Fixture_Model_No_F__c,Internal_asset_location_before__c,Salesdepartment_before__c,Equipment_Type_text__c,Product_category_text__c '; query += ' from Rental_Apply_Equipment_Set_Detail__c where Is_Body__c = true and DeliverySlip__c != null and Arrival_in_wh__c = false '; query += ' and RA_RecordTypeId__c != \'01210000000NPGK\''; query += ' and Inspection_result_after_F_New__c != \'NG\''; query += ' and NextShippmentDate__c != null'; query += ' and Rental_Apply_Equipment_Set__r.Received_Confirm__c != \'NG\' and Check_lost_Item_F__c != \'欠品\' and Check_lost_Item_F__c != \'消耗\' '; query += ' order by NextShippmentDate__c'; return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list scope) { Map> keyRaedMap = new Map>(); Map> keySequenceMap = new Map>(); List upRaeList = new List(); for(Rental_Apply_Equipment_Set_Detail__c raed:scope){ String ukey = raed.Fixture_Model_No_F__c+raed.Internal_asset_location_before__c+raed.Salesdepartment_before__c+raed.Equipment_Type_text__c+raed.Product_category_text__c; if(!keyRaedMap.containsKey(ukey)){ keyRaedMap.put(ukey,new List()); } keyRaedMap.get(ukey).add(raed); } List applySeriesList = [SELECT Id,ExternalKey__c,Demo_Purpose2__c, Apply_Set_Detail__c,Apply_Set_Detail_ExternalKey__c, Series_No__c,Salesdepartment__c,Product_category__c, Rental_Apply__c,Internal_asset_location__c, Apply_Set_Detail__r.Queue_Number__c, Apply_Set_Detail__r.Rental_Apply_Equipment_Set__c, Series_Unequal_Queue_Flag__c, Fixture_Model_No__c,Equipment_Type__c FROM Rental_Apply_Sequence__c WHERE Invalid_Flag__c = false AND ExternalKey__c IN:keyRaedMap.keySet() AND Apply_Set_Detail__r.Rental_Apply_Equipment_Set__r.QueueShippmentDate__c = null order by ExternalKey__c ASC NULLS LAST , Series_No__c ASC NULLS LAST]; for(Rental_Apply_Sequence__c ras:applySeriesList){ String ukey = ras.ExternalKey__c; if(!keySequenceMap.containsKey(ukey)){ keySequenceMap.put(ukey,new List()); } keySequenceMap.get(ukey).add(ras); } Map mapDId = new Map();// 已经一对一的明细Id for(String key:keyRaedMap.keySet()){ if(keySequenceMap.containsKey(key)){ List rasList= keySequenceMap.get(key);// 关键字的list List raedList = keyRaedMap.get(key);// 有预计的List Integer raedSize = raedList.size(); Integer connectI = 0; if(raedSize > 0){ for(Rental_Apply_Sequence__c ras:rasList){ if(raedSize > connectI){ Rental_Apply_Equipment_Set__c temp = new Rental_Apply_Equipment_Set__c(); if(mapDId.containsKey(ras.Apply_Set_Detail__c)){ continue; }else{ // 排队备品预计出库时间 QueueShippmentDate__c // 排队备品回寄日 Asset_return_Day__c // 排队备品欠品OK时间 Lost_item_check_OK__c // 排队备品预计明细 QueueDetail__c // 排队备品检测OK时间 Inspection_result_after_OK__c mapDId.put(ras.Apply_Set_Detail__c,ras.Apply_Set_Detail__c); temp.Id = ras.Apply_Set_Detail__r.Rental_Apply_Equipment_Set__c; temp.QueueShippmentDate__c = raedList[connectI].NextShippmentDate__c; temp.Asset_return_Day__c = raedList[connectI].Asset_return_Day__c; temp.Lost_item_check_OK__c = raedList[connectI].Lost_item_check_OK__c; temp.Inspection_result_after_OK__c = raedList[connectI].Inspection_result_after_OK__c; temp.QueueDetail__c = raedList[connectI].Id; connectI+=1; } upRaeList.add(temp); }else{ break; } } } } } if(upRaeList.size() > 0){ System.debug('zheli~upRaeList:'+upRaeList); update upRaeList; } } global void finish(Database.BatchableContext BC) { if(System.Test.isRunningTest()){ test(); } Database.executeBatch(new RentalQueueShippmentDateSumBatch(),50); } @TestVisible private 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++; 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++; 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++; 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++; 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++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; } }