global class AssetHandlerCheckQueuable implements Queueable { String recIds; public AssetHandlerCheckQueuable(String recIds){ this.recIds = recIds; } global void execute(QueueableContext context) { checkAsset2(this.recIds); } private static void checkAsset2(String ids) { List newList = [SELECT Id , Ji_Zhong_Guan_Li_Ku_Cun__c , Out_of_wh__c , Out_of_wh_Sys__c , Rental_Count__c , Rental_Count_Sys__c , LastModifiedBy.Name , LastModifiedDate , Name FROM Asset WHERE Id IN:ids.split(',') ]; System.debug(newList); List rentalErrors = new List(); List jizhongErrors = new List(); for (Asset nObj : newList) { if(intValueOf(nObj.Out_of_wh__c) != intValueOf(nObj.Out_of_wh_Sys__c) || intValueOf(nObj.Rental_Count_Sys__c) != intValueOf(nObj.Rental_Count__c)) { String s = ''; s += '名称:'+nObj.Name + '\n'; s += 'Id:'+nObj.Id + '\n'; s += '借出_分配_数:'+nObj.Out_of_wh__c + '\n'; s += '借出_分配_数(Sys):'+nObj.Out_of_wh_Sys__c + '\n'; s += '已借出数:'+nObj.Rental_Count__c + '\n'; s += '已借出数(Sys):'+nObj.Rental_Count_Sys__c + '\n'; s += '修改人:'+nObj.LastModifiedBy.Name + '\n'; s += '修改时间:'+ String.valueOf(nObj.LastModifiedDate) + '\n'; rentalErrors.add(s); } if(nObj.Ji_Zhong_Guan_Li_Ku_Cun__c < 0) { String s = ''; s += '名称:'+nObj.Name + '\n'; s += 'Id:'+nObj.Id + '\n'; s += '集中管理库存:'+nObj.Ji_Zhong_Guan_Li_Ku_Cun__c + '\n'; s += '修改人:'+nObj.LastModifiedBy.Name + '\n'; s += '修改时间:'+ String.valueOf(nObj.LastModifiedDate) + '\n'; jizhongErrors.add(s); } } System.debug(rentalErrors); System.debug(jizhongErrors); if(!rentalErrors.isEmpty()) { sendEmail('已分配数或已借出数异常', String.join(rentalErrors,'\n')); } if(!jizhongErrors.isEmpty()) { sendEmail('集中管理库存异常', String.join(jizhongErrors,'\n')); } } private static Integer intValueOf(Decimal d) { if(d == null) { return 0; } return Integer.valueOf(d); } private static void sendEmail(String title , String bodyText) { Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); String[] toAddresses = System.Label.AssetCountErrorMailAddress.split(','); mail.setToAddresses(toAddresses); mail.setReplyTo(UserInfo.getUserEmail()); mail.setSubject(title); mail.setBccSender(false); mail.setUseSignature(false); mail.setPlainTextBody(bodyText); Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); } }