/** * [SetFrameNumManageBatch 进口单证上传后查找字段batch更新] * @Author lijinhuan * @DateTime 2022-11-04T18:31:03+0800 * @return [] */ global without sharing class SetFrameNumManageBatch implements Database.Batchable { public String query; global SetFrameNumManageBatch() { this.query = query; } global Database.QueryLocator start(Database.BatchableContext bc) { query = 'select Id,SerialNumberS__c,InspectionCard__c,ApplyList__c from FrameNumManage__c where '; // query += '('; query += ' signInForm__c = null '; query += ' OR Statu_Achievements_DN_details__c = null '; query += ' OR Asset__c = null '; query += ' OR (InspectionCard_Select__c = null AND InspectionCard__c != null AND InspectionCard__c !=\'不出证\')'; query += ' OR (InspectionCard_Select__c != null AND (InspectionCard__c =\'不出证\' OR InspectionCard__c = null))';// 清空 query += ' OR (ApplyList_Select__c = null AND ApplyList__c != null)'; query += ' OR (ApplyList_Select__c != null AND ApplyList__c = null)';// 清空 // query += ')'; // query += ' AND id = \'a5D9D0000000WqF\''; return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list fnmList) { Map InspectionCardMap = new Map(); Map ApplyListMap = new Map(); Map InspectionCardIdMap = new Map(); Map ApplyListIdMap = new Map(); Set SerialNumberSet = new Set(); Set clearSet = new Set(); for(FrameNumManage__c fnm:fnmList){ // 清空 if(String.isBlank(fnm.ApplyList__c) || String.isBlank(fnm.InspectionCard__c) ||(!String.isBlank(fnm.InspectionCard__c) && fnm.InspectionCard__c == '不出证')){ clearSet.add(fnm.Id); }else{ //赋值 SerialNumberSet.add(fnm.SerialNumberS__c); InspectionCardMap.put(fnm.SerialNumberS__c,fnm.InspectionCard__c); ApplyListMap.put(fnm.SerialNumberS__c,fnm.ApplyList__c); } } // 发货DN明细 Map DNdetailMap = new Map(); Map DNMap = new Map(); for(Statu_Achievements_DN_details__c dn:[SELECT Id,SerialNumber__c,Statu_Achievements_DN__c,Statu_Achievements_DN__r.Name FROM Statu_Achievements_DN_details__c WHERE SerialNumber__c IN: SerialNumberSet]){ DNdetailMap.put(dn.SerialNumber__c,dn.Id); DNMap.put(dn.SerialNumber__c,dn.Statu_Achievements_DN__r.Name); } // 签收单 Map eSignFormMap = new Map(); for(eSignForm__c es:[SELECT Id,DNName__c FROM eSignForm__c WHERE DNName__c IN: DNMap.values()]){ for(String key:DNMap.keySet()){ if(DNMap.get(key) == es.DNName__c){ eSignFormMap.put(key,es.Id); } } } // 保有设备 Map AssetMap = new Map(); for(Asset ass:[SELECT Id,SerialNumber FROM Asset WHERE SerialNumber IN: SerialNumberSet]){ AssetMap.put(ass.SerialNumber,ass.Id); } Set FilesNameSet = new Set(); FilesNameSet.addAll(InspectionCardMap.values()); FilesNameSet.addAll(ApplyListMap.values()); // 商检证 InspectionCard_Select__c 报关单 ApplyList_Select__c for(FileAddress__c fa:[SELECT Id,OnlyFileName__c FROM FileAddress__c WHERE OnlyFileName__c IN: FilesNameSet]){ for(String key:InspectionCardMap.keySet()){ if(InspectionCardMap.get(key) == fa.OnlyFileName__c){ InspectionCardIdMap.put(key,fa.Id); } if(ApplyListMap.get(key) == fa.OnlyFileName__c){ ApplyListIdMap.put(key,fa.Id); } } } // 最后整合 List upFnmList = new List(); for(FrameNumManage__c fnm:fnmList){ FrameNumManage__c temp = new FrameNumManage__c(); temp.Id = fnm.Id; if(clearSet.contains(fnm.Id)){ temp.InspectionCard_Select__c = null; temp.ApplyList_Select__c = null; }else{ temp.Statu_Achievements_DN_details__c = DNdetailMap.get(fnm.SerialNumberS__c); temp.signInForm__c = eSignFormMap.get(fnm.SerialNumberS__c); temp.Asset__c = AssetMap.get(fnm.SerialNumberS__c); temp.InspectionCard_Select__c = InspectionCardIdMap.get(fnm.SerialNumberS__c); temp.ApplyList_Select__c = ApplyListIdMap.get(fnm.SerialNumberS__c); } upFnmList.add(temp); } // System.debug('zhelieupFnmList:'+upFnmList.size()); if(upFnmList.size() > 0){ update upFnmList; } } global void finish(Database.BatchableContext BC) { } }