global with sharing class OTCLogisticsBatch implements Database.Batchable, Database.AllowsCallouts{ public String query; public String sodn; public Boolean jurisdiction = false; global OTCLogisticsBatch() { this.query = query; } global OTCLogisticsBatch(String sodn,Boolean jurisdiction) { this.query = query; this.sodn = sodn; this.jurisdiction =jurisdiction; } global Database.QueryLocator start(Database.BatchableContext bc) { // 获取发货DN 中DN安装日期 不为空 query = 'select id,name,waybill__c,DNNameNo0__c,waybill__r.waybill_status__c,CreatedDate from eSignForm__c where CreatedDate >= 2023-04-01T00:00:00.000+0000 '; if (jurisdiction == false) { query += ' and isProcessed__c = false and waybill__r.waybill_status__c not in(\'已签收\', \'签收异常\', \'已作废\', \'已合并\', \'已完成\')'; } if (sodn != null && sodn != '') { query += ' And Name = :sodn'; } // query += ' limit 50'; System.debug('执行的SQL为:'+query); return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list SadList) { // 存储 cn 号 // List cnList = new List(); // for (Statu_Achievements_DN__c i : SadList) { // cnList.add(i.name.subString(2)); // } // System.debug('打印数据:'+cnList); // // 通过cn号到OTS物流运货单再进行一次数据过滤 // List statusList = new List{'已签收', '签收异常', '已作废', '已合并', '已完成'}; // // List waybillList = [select id,name,waybill_number__c,waybill_status__c from waybill__c where waybill_number__c in :cnList and waybill_status__c NOT IN :statusList]; // List waybillList = [select id,name,waybill_number__c,waybill_status__c from waybill__c]; // // 通过过滤后的订单号去请求接口用于获取最新物流状态 // System.debug('打印已有的数据:'+waybillList); // Map wmap = new Map(); // for (waybill__c w : waybillList) { // wmap.put(w.waybill_number__c,w.waybill_status__c); // } // List slist = new List(); // for (String c : cnList) { // String value = wmap.get(c); // if (value == null) { // slist.add(c); // System.debug('添加的数据:'+c); // }else { // if (!statusList.contains(value)) { // slist.add(c); // System.debug('更新数据:'+c); // }else { // System.debug('没有要更新的数据'); // } // } // } // if (slist.size()>0) { // for (String s : slist) { // NFM118Controller.executefuture('',s); // } // } for (eSignForm__c i : SadList) { NFM118Controller.executefuture('',i.DNNameNo0__c); } } global void finish(Database.BatchableContext BC) { } }