/** * wangweipeng 2021/08/24 * UpdatekeyPointProductBatch * 主要更新 备品借出申请 是否重点产品历史数据更新 */ global class UpdatekeyPointProductBatch implements Database.Batchable { public String query; private String errStr; private BatchIF_Log__c iflog; private final List TEST_ID = null; global UpdatekeyPointProductBatch() { iflog = new BatchIF_Log__c(); iflog.Type__c = 'PushNotification'; iflog.Is_Error__c = 0; iflog.Log__c = 'UpdatekeyPointProductBatch start1\n'; iflog.ErrorLog__c = ''; insert iflog; } global UpdatekeyPointProductBatch(List testId) { iflog = new BatchIF_Log__c(); iflog.Type__c = 'PushNotification'; iflog.Is_Error__c = 0; iflog.Log__c = 'UpdatekeyPointProductBatch start1\n'; iflog.ErrorLog__c = ''; insert iflog; TEST_ID = testId; } global Database.QueryLocator start(Database.BatchableContext bc) { query = 'select id,name,CreatedDate from Rental_Apply__c where CreatedDate >= 2021-04-01T00:00:01.000+0000 and DeliverySlip__c != null and RA_Status__c != \'取消\' '; if (TEST_ID <> null) { query += ' and Id IN: TEST_ID'; } query += ' order by CreatedDate'; iflog.Log__c += query+'\n'; update iflog; return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list scope) { List racIdList = new List(); if(scope != null && scope.size() > 0){ for(Rental_Apply__c rac : scope){ racIdList.add(rac.Id); } } if(racIdList != null && racIdList.size() > 0){ String SQlStr3 = 'select id,name,Key_product__c,Rental_Apply_Equipment_Set__c,Rental_Apply__c from Rental_Apply_Equipment_Set_Detail__c ' +' where RAESD_Status__c != \'取消\' and EquipmentSet_Detail_Status_Status__c != \'取消\' and Rental_Apply__c in :racIdList'; List raesdList = Database.query(SQlStr3); List rr = new List(); if(scope != null && scope.size() > 0){ for(Rental_Apply__c rac : scope){ Rental_Apply__c rrr = new Rental_Apply__c(); boolean flag = false; if(raesdList != null && raesdList.size() > 0){ for(Rental_Apply_Equipment_Set_Detail__c raesd : raesdList){ String racStrId = rac.id; racStrId = racStrId.substring(0,15); String raesdStrId = raesd.Rental_Apply__c; raesdStrId = raesdStrId.substring(0,15); if(racStrId == raesdStrId){ if(raesd.Key_product__c != null && raesd.Key_product__c != ''){ flag = true; break; } } } } if(flag){ rrr.id = rac.id; rrr.Is_keyPoint_Product__c = flag; rr.add(rrr); } } } Savepoint sp = Database.setSavepoint(); try{ if(rr.size() > 0){ update rr; } }catch(exception e){ errStr = e.getMessage()+'\n'; errStr += e.getLineNumber()+'\n'; Database.rollback(sp); } } } global void finish(Database.BatchableContext BC) { String tmp = ''; if (String.isNotBlank(errStr)) { tmp = errStr; } iflog.Log__c += 'UpdatekeyPointProductBatch finish()\n'; iflog.Log__c += '\nUpdatekeyPointProductBatch end'; tmp += iflog.ErrorLog__c; if (tmp.length() > 60000) { tmp = tmp.substring(0, 60000); tmp += ' ...have more lines...'; iflog.ErrorLog__c = tmp; } String tmp2 = iflog.Log__c; if (tmp2.length() > 60000) { tmp2 = tmp2.substring(0, 60000); tmp2 += ' ...have more lines...'; iflog.Log__c = tmp2; } if (System.Label.Log_IO_Flag == 'Keep') { update iflog; } else if (System.Label.Log_IO_Flag == 'Auto') { if (iflog.Is_Error__c > 0) { update iflog; } } } }