// create by tcm 20211220 处理失单报告历史数据 // 2022-01-18 修改 从失单报告处理历史数据 global class LostCancelReportOppBatch implements Database.Batchable { public List IdList=new List (); public Date start_date; public Date end_date; public Boolean update_all = true; global LostCancelReportOppBatch() { } // 通过询价Id查找 global LostCancelReportOppBatch(List IdList) { this.IdList = IdList; } // 通过日期查找 global LostCancelReportOppBatch(String str_start, String str_end, Boolean if_upd_all) { this.start_date = String.isNotBlank(str_start) ? Date.parse(str_start) : null; this.end_date = String.isNotBlank(str_end) ? Date.parse(str_end) : null; this.update_all = if_upd_all != null ? if_upd_all : true; } global Database.QueryLocator start(Database.BatchableContext bc) { // string query ='select id from Opportunity '; // if (IdList.size() > 0) { // query += ' where Id in :IdList'; // } // 2022-01-18 修改 从失单报告取值 String query = 'SELECT Id, Opportunity__c FROM Lost_cancel_report__c WHERE Report_Status__c = \'批准\' AND LostType__c in (\'失单\', \'部分失单\') '; //20230215 lt DB202302247719 add , Opportunity__c if (start_date != null) { query += ' AND Submit_Day__c >= :start_date'; } if (end_date != null) { query += ' AND Submit_Day__c >= :start_date'; } if (IdList != null && IdList.size() > 0) { query += ' AND Opportunity__c in :IdList'; } if (!update_all) { query += ' AND Opportunity__r.PCLLostBrands__c != null'; } return Database.getQueryLocator(query); } // global void execute(Database.BatchableContext BC, List scope) { // List oppIdList=new List(); // for (Opportunity opp : scope) { // oppIdList.add(opp.Id); // } // List pclLpList=[select id,Quantity__c, LostProduct__r.Name, LostProductMannual__c, PCLLostBrand__r.Lost_By_Company__c, PCLLostBrand__r.Lost_reason_main__c, PCLLostBrand__r.Lost_Reason_Sub__c, PCLLostBrand__r.Lost_By_Company_Mannual__c, PCLLostBrand__r.Agency__r.Name, PCLLostBrand__r.AgencyMannual__c, PCLLostBrand__r.Lost_cancel_report__r.LostType__c, PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c, PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c,PCLLostBrand__r.Lost_cancel_report__r.Opportunity__c from PCLLostProduct__c where PCLLostBrand__r.Lost_cancel_report__r.Report_Status__c = '批准' and PCLLostBrand__r.Lost_cancel_report__r.Opportunity__c in : oppIdList and LostProduct__c!=null]; // List oppList=new List(); // for (String oppId : oppIdList) { // Opportunity opp=new Opportunity(); // opp.Id=Id.valueOf(oppId); opp.PCLLostBrands__c=''; opp.Agencies__c=''; opp.Lost_Reason_Sub__c='';opp.of_lost_system_processor__c=0; //Id ,品牌,经销商,原因次 // Integer i=0; // List ppList=new List(); //品牌List // List jxsList=new List(); //经销商List // for (PCLLostProduct__c lp : pclLpList) { // if (oppId==lp.PCLLostBrand__r.Lost_cancel_report__r.Opportunity__c) { // if (i==0) { // opp.LostTypeText__c=lp.PCLLostBrand__r.Lost_cancel_report__r.LostType__c; //失单类型 // opp.LostPrices__c=lp.PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c; //失单金额 // // opp.of_lost_system_processor__c=lp.PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c; //失单主机台数(总) // opp.Lost_reason_main__c=lp.PCLLostBrand__r.Lost_reason_main__c; //失单理由(主) // } // opp.of_lost_system_processor__c+=lp.Quantity__c; //失单主机台数(累加) // if (lp.PCLLostBrand__r.Lost_Reason_Sub__c!=null) { // opp.Lost_Reason_Sub__c=lp.PCLLostBrand__r.Lost_Reason_Sub__c; //失单理由(次) // } // // 失单产品123 start // if (opp.CompetitorProduct1__c==null) { // opp.CompetitorProduct1__c=lp.LostProduct__r.Name; // }else if (opp.CompetitorProduct2__c==null) { // opp.CompetitorProduct2__c=lp.LostProduct__r.Name; // }else if (opp.CompetitorProduct3__c==null) { // opp.CompetitorProduct3__c=lp.LostProduct__r.Name; // } // // 失单产品123 end // //失单品牌 start // if (!ppList.contains(lp.PCLLostBrand__r.Lost_By_Company__c)) { // ppList.add(lp.PCLLostBrand__r.Lost_By_Company__c); // if (ppList.size()==1) { // if (lp.PCLLostBrand__r.Lost_By_Company__c=='其他') { // opp.PCLLostBrands__c+=lp.PCLLostBrand__r.Lost_By_Company_Mannual__c; // }else { // opp.PCLLostBrands__c+=lp.PCLLostBrand__r.Lost_By_Company__c; // } // }else { // if (lp.PCLLostBrand__r.Lost_By_Company__c=='其他') { // opp.PCLLostBrands__c+=','+lp.PCLLostBrand__r.Lost_By_Company_Mannual__c; // }else { // opp.PCLLostBrands__c+=','+lp.PCLLostBrand__r.Lost_By_Company__c; // } // } // } // //失单品牌 end // //经销商 start // if (!jxsList.contains(lp.PCLLostBrand__r.Agency__r.Name)) { // jxsList.add(lp.PCLLostBrand__r.Agency__r.Name); // if (jxsList.size()==1) { // if (lp.PCLLostBrand__r.AgencyMannual__c==null) { // opp.Agencies__c+=lp.PCLLostBrand__r.Agency__r.Name; // }else { // opp.Agencies__c+=lp.PCLLostBrand__r.AgencyMannual__c; // } // }else { // if (lp.PCLLostBrand__r.AgencyMannual__c==null) { // opp.Agencies__c+=','+lp.PCLLostBrand__r.Agency__r.Name; // }else { // opp.Agencies__c+=','+lp.PCLLostBrand__r.AgencyMannual__c; // } // } // } // //经销商 end // i++; // } // } // oppList.add(opp); // system.debug('opp等于'+opp); // } // system.debug('oppList等于'+oppList); // update oppList; // } // 2022-01-18 修改 从失单报告取值 global void execute(Database.BatchableContext BC, List scope) { // List reportIdList=new List();//20230215 lt DB202302247719 注释 Set oppIdList = new Set();//20230215 lt DB202302247719 for (Lost_cancel_report__c report : scope) { // reportIdList.add(report.Id); //20230215 lt DB202302247719 注释 oppIdList.add(report.Opportunity__c); //20230215 lt DB202302247719 } //DB202302247719 注释 lt 注释原因:DB202302247719课题刷失单报告数据只刷失单金额 // List pclLpList=[select // id, // 失单型号id // Quantity__c, // 失单数量 // LostProductName__c, // 失单对手型号 // LostProductMannual__c, // 失单对手型号(手动) // PCLLostBrand__r.Lost_By_Company__c, // 失单品牌 // PCLLostBrand__r.Lost_reason_main__c, // 失单原因(主) // PCLLostBrand__r.Lost_Reason_Sub__c, // 失单原因(次) // PCLLostBrand__r.Lost_By_Company_Mannual__c, // 失单品牌(手动) // PCLLostBrand__r.Agency__r.Name, // 中标经销商 // PCLLostBrand__r.AgencyMannual__c, // 中标经销商(手动) // PCLLostBrand__r.Lost_cancel_report__r.LostType__c, // 失单类型 // PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c, // 失单总金额 // PCLLostBrand__r.Lost_cancel_report__r.TotalAmountLost__c, // 失单总金额(不含税) //20230215 lt DB202302247719 // PCLLostBrand__r.Lost_cancel_report__r.of_lost_system_processor__c, // 失单主机台数 // PCLLostBrand__r.Lost_cancel_report__r.Opportunity__c // from // PCLLostProduct__c // where // PCLLostBrand__r.Lost_cancel_report__r.Opportunity__c in :reportIdList]; //20230215 lt DB202302247719 PCLLostBrand__r.Lost_cancel_report__c ---update--- PCLLostBrand__r.Lost_cancel_report__r.Opportunity__c List lcrList = [SELECT Id, Opportunity__c, TotalAmountLost__c FROM Lost_cancel_report__c WHERE Opportunity__c in :oppIdList]; //DB202302247719 注释 lt 注释原因:DB202302247719课题刷失单报告数据只刷失单金额 //DB202302247719 lt start Map opp_map = new Map(); for (Lost_cancel_report__c lcr : lcrList){ // 询价id String opp_id = lcr.Opportunity__c; // 询价 Opportunity opp = opp_map.get(opp_id); if (opp == null) { opp = new Opportunity(); opp.Id = opp_id; opp_map.put(opp_id, opp); } System.debug('---lt123---询价失单金额---'+opp.LostPrices__c); System.debug('---lt123---失单总金额,千元不含税---'+lcr.TotalAmountLost__c); if(lcr.TotalAmountLost__c != null){ if(opp.LostPrices__c == null){ opp.LostPrices__c = 0; } opp.LostPrices__c += lcr.TotalAmountLost__c; // 失单金额 System.debug('---lt123---累加后询价失单金额---'+opp.LostPrices__c); } } //DB202302247719 lt end //DB202302247719 注释 lt 注释原因:DB202302247719课题刷失单报告数据只刷失单金额 // // 初始化保存参数 // Map opp_map = new Map(); // Map prod_map = new Map(); // Map agency_map = new Map(); // // 循环整理数据 // for (PCLLostProduct__c lost : pclLpList) { // // 判断是否可用数据 // // if (String.isBlank(lost.LostProductName__c) && String.isBlank(lost.LostProductMannual__c)) { // // continue; // // } // // 询价id // String opp_id = lost.PCLLostBrand__r.Lost_cancel_report__r.Opportunity__c; // // 询价 // Opportunity opp = opp_map.get(opp_id); // if (opp == null) { // opp = new Opportunity(); // opp.Id = opp_id; // opp.of_lost_system_processor__c = 0; // opp_map.put(opp_id, opp); // } // //20230215 lt DB202302247719 start // System.debug('---lt123---询价失单金额---'+opp.LostPrices__c); // System.debug('---lt123---失单总金额,千元不含税---'+lost.PCLLostBrand__r.Lost_cancel_report__r.TotalAmountLost__c); // if(lost.PCLLostBrand__r.Lost_cancel_report__r.TotalAmountLost__c != null){ // if(opp.LostPrices__c == null){ // opp.LostPrices__c = 0; // } // opp.LostPrices__c += lost.PCLLostBrand__r.Lost_cancel_report__r.TotalAmountLost__c; // 失单金额 // } // //DB202302247719 注释 lt 注释原因:DB202302247719课题刷失单报告数据只刷失单金额 // // 赋值 // // opp.LostTypeText__c = lost.PCLLostBrand__r.Lost_cancel_report__r.LostType__c; // 失单类型 // // //opp.LostPrices__c = lost.PCLLostBrand__r.Lost_cancel_report__r.LostTotalAmount__c; // 失单金额 // // opp.Lost_reason_main__c = lost.PCLLostBrand__r.Lost_reason_main__c; // 失单原因(主) // // opp.Lost_Reason_Sub__c = lost.PCLLostBrand__r.Lost_Reason_Sub__c; // 失单理由(次) // // opp.of_lost_system_processor__c += lost.Quantity__c; // 失单主机台数(累加) // // 失单产品123 start // // if (opp.CompetitorProduct1__c == null) { // // opp.CompetitorProduct1__c = lost_product_name(lost.LostProductName__c, lost.LostProductMannual__c); // // }else if (opp.CompetitorProduct2__c == null) { // // opp.CompetitorProduct2__c = lost_product_name(lost.LostProductName__c, lost.LostProductMannual__c); // // }else if (opp.CompetitorProduct3__c == null) { // // opp.CompetitorProduct3__c = lost_product_name(lost.LostProductName__c, lost.LostProductMannual__c); // // } // // 失单产品123 end // // 失单品牌 // // opp.PCLLostBrands__c = lost_brand_name(opp.PCLLostBrands__c, lost.PCLLostBrand__r.Lost_By_Company__c, lost.PCLLostBrand__r.Lost_By_Company_Mannual__c); // // 中标经销商 // // opp.Agencies__c = lost_agency_name(opp.Agencies__c, lost.PCLLostBrand__r.Agency__r.Name, lost.PCLLostBrand__r.AgencyMannual__c); // //DB202302247719 注释 lt // //20230215 lt DB202302247719 end // } //DB202302247719 注释 lt 注释原因:DB202302247719课题刷失单报告数据只刷失单金额 System.debug(opp_map); StaticParameter.EscapeOppandStaTrigger = true; //20230215 lt DB202302247719 update opp_map.values(); StaticParameter.EscapeOppandStaTrigger = true; //20230215 lt DB202302247719 } //DB202302247719 注释 lt 注释原因:DB202302247719课题刷失单报告数据只刷失单金额 // 失单对手型号 // private String lost_product_name(String lost_product, String lost_product_mannual) { // if (String.isBlank(lost_product) && String.isNotBlank(lost_product_mannual)) { // return lost_product_mannual; // } // return lost_product; // } // // 失单品牌 // private String lost_brand_name(String lost_brand_in_opp, String lost_brand, String lost_brand_mannual) { // // 初始化参数 // String plus = ''; // // 判断 // // SWAG-CCC6F6 2022-04-22 ssm start // // 询价上都只显示选项列表的值,不需要手动的值 // // if ('其他'.equals(lost_brand) && String.isNotBlank(lost_brand_mannual)) { // // plus = lost_brand_mannual; // // } else { // // plus = lost_brand; // // } // plus = lost_brand; // // SWAG-CCC6F6 2022-04-22 ssm end // // 初始化返回值 // if (String.isBlank(lost_brand_in_opp)) { // lost_brand_in_opp = ''; // } // // 拼接 // if (String.isNotBlank(plus) && !lost_brand_in_opp.contains(plus)) { // // 增加分隔标识 // if (String.isNotBlank(lost_brand_in_opp)) { // lost_brand_in_opp += ','; // } // lost_brand_in_opp += plus; // } // return lost_brand_in_opp; // } // // 中标经销商 // private String lost_agency_name(String lost_agency_in_opp, String lost_agency, String lost_agency_mannual) { // // 初始化参数 // String plus = ''; // // 判断 // // SWAG-CCC6F6 2022-04-22 ssm start // // 询价上都只显示选项列表的值,不需要手动的值 // // if ('对手经销商'.equals(lost_agency) && String.isNotBlank(lost_agency_mannual)) { // // plus = lost_agency_mannual; // // } else { // // plus = lost_agency; // // } // plus = lost_agency; // // SWAG-CCC6F6 2022-04-22 ssm end // // 初始化返回值 // if (String.isBlank(lost_agency_in_opp)) { // lost_agency_in_opp = ''; // } // // 拼接 // if (String.isNotBlank(plus) && !lost_agency_in_opp.contains(plus)) { // // 增加分隔标识 // if (String.isNotBlank(lost_agency_in_opp)) { // lost_agency_in_opp += ','; // } // lost_agency_in_opp += plus; // } // return lost_agency_in_opp; // } //DB202302247719 注释 lt 注释原因:DB202302247719课题刷失单报告数据只刷失单金额 global void finish(Database.BatchableContext BC) { } } // List IdList=new List{'0061m000003fUz6'}; // Database.executeBatch(new LostCancelReportOppBatch(IdList)); // Database.executeBatch(new LostCancelReportOppBatch());