// 点检对象:今天所在月加上之前2个月 // 访问,OPD,NTC对象:今天所在月加上之前11个月 // 修理,重点产品OPD对象:昨天所在年度一年的。如果到了4月没有数据,结果是0 // FIXME goto 访问,OPD,NTC现在一年有些长 global class RollupToHPBatch implements Database.Batchable { String Salesdepartment_HP1; String Salesdepartment_HP2; String hpId; // SWAG-BQ75WE update by vivek 2020/06/11 start Map filedNameMap; // SWAG-BQ75WE update by vivek 2020/06/11 end // 点检月3个月 Integer intMonth = -4; // 要注意:initAccountCount() も修正が必要 // 年度切り替えたけど、前の年度のデータを見たい期間、4日の猶予期間 static Integer intYearDelayDay = Integer.valueOf(System.Label.ShowLastYear_DefermentDay); /** * コンスタント */ global RollupToHPBatch(String Salesdepartment_HP1, String Salesdepartment_HP2) { this.Salesdepartment_HP1 = Salesdepartment_HP1; this.Salesdepartment_HP2 = Salesdepartment_HP2; } global RollupToHPBatch(String hpId) { this.hpId = hpId; } /** * startには、queryを実行、病院を検索 */ global Database.QueryLocator start(Database.BatchableContext BC) { if (String.isBlank(this.Salesdepartment_HP1)) { // UT 用 if (String.isBlank(this.hpId)) { return Database.getQueryLocator( [select Id from Account where RecordType.DeveloperName = 'HP' and Is_Active__c <> '無効' order by Id] ); } else { return Database.getQueryLocator( [select Id from Account where RecordType.DeveloperName = 'HP' and Is_Active__c <> '無効' and Id = :this.HpId order by Id] ); } } else { return Database.getQueryLocator( [select Id from Account where RecordType.DeveloperName = 'HP' and Is_Active__c <> '無効' and (Salesdepartment_HP__c = :this.Salesdepartment_HP1 or Salesdepartment_HP__c = :this.Salesdepartment_HP2) order by Id] ); } } global void execute(Database.BatchableContext BC, List hpList) { Date targetDay2 = getTargetDay(); Integer targetmonth = targetDay2.month(); // 点検3ヶ月を消すため Date nextMonth = targetDay2.addMonths(1); Date sDate = Date.valueOf(nextMonth.year() - 1 + '-' + nextMonth.month() + '-1'); Date eDate = Date.valueOf(nextMonth.year() + '-' + nextMonth.month() + '-1'); // 点检月份,3个月前的1日到下个月1日 Date sDay = Date.valueOf(targetDay2.addMonths(intMonth).year() + '-' + targetDay2.addMonths(intMonth).month() + '-1'); Date eDay = Date.valueOf(nextMonth.year() + '-' + nextMonth.month() + '-1'); // 修理TAT(到客户返送日),修理TAT(到RC返送日),修理报价,发票金额 Hospital__c应与Delivered_Product__r.Hospital__c一致 Integer iyear = targetDay2.year(); if (targetDay2.month() < 4) { iyear -= 1; } Date lastYd = Date.valueOf(iyear - 1 + '-4-1'); Date thisYd = Date.valueOf(iyear + '-4-1'); Date nextYd = Date.valueOf(iyear + 1 + '-4-1'); List repairList = [ select AVG(Elapsed_day_from_Repair__c) avg_Repair, AVG(Elapsed_day_from_Repair2__c) avg_Repair2, SUM(Repair_List_Price__c) sum_Price, SUM(Billing_Amount__c) sum_Billing, Delivered_Product__r.Hospital__c Hospital from Repair__c where Delivered_Product__r.Hospital__c in : hpList and Hospital__c != null and Failure_Occurrence_Date__c >= : thisYd and Failure_Occurrence_Date__c < : nextYd group by Delivered_Product__r.Hospital__c ]; Map repairMap = new Map(); for (AggregateResult repair : repairList) { repairMap.put(String.valueOf(repair.get('Hospital')), repair); } List repair_LY_List = [ select AVG(Elapsed_day_from_Repair__c) avg_Repair, AVG(Elapsed_day_from_Repair2__c) avg_Repair2, SUM(Repair_List_Price__c) sum_Price, SUM(Billing_Amount__c) sum_Billing, Delivered_Product__r.Hospital__c Hospital from Repair__c where Delivered_Product__r.Hospital__c in : hpList and Hospital__c != null and Failure_Occurrence_Date__c >= : lastYd and Failure_Occurrence_Date__c < : thisYd group by Delivered_Product__r.Hospital__c ]; Map repair_LY_Map = new Map(); for (AggregateResult repair : repair_LY_List) { repair_LY_Map.put(String.valueOf(repair.get('Hospital')), repair); } // 未回款金额 Hospital__c应与Delivered_Product__r.Hospital__c一致 List unpaidList = [ select SUM(Unpaid_Amount__c) sum_Unpaid, Delivered_Product__r.Hospital__c Hospital from Repair__c where Delivered_Product__r.Hospital__c in : hpList and Hospital__c != null /* CHAN-B7J5EK 2018/12/18 未回款金额为0 则不检索 start */ and Unpaid_Amount__c != null and Unpaid_Amount__c != 0 /* CHAN-B7J5EK 2018/12/18 未回款金额为0 则不检索 end */ group by Delivered_Product__r.Hospital__c ]; Map unpaidMap = new Map(); for (AggregateResult unpaid : unpaidList) { unpaidMap.put(String.valueOf(unpaid.get('Hospital')), unpaid); } // 维修合同 按 状态=契約 List mContractList = [ select Count(Id) Cnt_Id, Hospital__c from Maintenance_Contract__c where Status__c = '契約' and Hospital__c in : hplist // KPI 报表修改 , 刨除多年保修合同 start and (recordType.developerName = 'NewMaintenance_Contract' or recordType.developerName = 'Maintenance_Contract') // KPI 报表修改 , 刨除多年保修合同 end group by Hospital__c ]; Map mContractMap = new Map(); for (AggregateResult mContract : mContractList) { mContractMap.put(String.valueOf(mContract.get('Hospital__c')), mContract); } // 提案书 FIXME goto 時間の範囲? Map proposalDocumentMap = new Map([ select Hospital__c Id, // Max(Proposal_count__c) Submit_Status Max(Proposal_count__c) Proposal_Submit_Status, Max(Quarterly_count__c) Quarterly_Submit_Status from TemporaryFileBox__c where Hospital__c in : hpList and Approval_day__c >= :thisYd and Approval_day__c < :nextYd group by Hospital__c ]); Map proposalDocumentMap2 = new Map([ select Hospital__c Id, Max(Customer_submit_day__c) Submit_day from TemporaryFileBox__c where Hospital__c in : hpList and Attached_category__c = '季报' and Approval_day__c >= :thisYd and Approval_day__c < :nextYd group by Hospital__c ]); Map updateAccount = new Map(); List acc2List = [select Id, Account__c, Account_Org__c from Account2__c where Account_Org__c in :hpList]; for (Account2__c acc2 : acc2List) { String hpid = acc2.Account_Org__c; Account2__c acc = new Account2__c(Id = acc2.Id); initAccountCount(acc, targetmonth); // 提案书, 季报 if (proposalDocumentMap.containsKey(hpid)) { acc.Proposal_Submit_Status__c = (proposalDocumentMap.get(hpid).get('Proposal_Submit_Status') == null ? 0 : (Decimal) proposalDocumentMap.get(hpid).get('Proposal_Submit_Status')) + (proposalDocumentMap.get(hpid).get('Quarterly_Submit_Status') == null ? 0 : (Decimal) proposalDocumentMap.get(hpid).get('Quarterly_Submit_Status')); } // 季报 if (proposalDocumentMap2.containsKey(hpid)) { acc.Latest_Proposal_document_Submit_day__c = proposalDocumentMap2.get(hpid).get('Submit_day') == null ? null : (Date) proposalDocumentMap2.get(hpid).get('Submit_day'); } if (repairMap.containsKey(hpid)) { acc.AVG_Elapsed_day_from_Repair__c += repairMap.get(hpid).get('avg_Repair') == null ? 0 : Decimal.valueOf(String.valueOf(repairMap.get(hpid).get('avg_Repair'))); acc.AVG_Elapsed_day_from_Repair2__c += repairMap.get(hpid).get('avg_Repair2') == null ? 0 : Decimal.valueOf(String.valueOf(repairMap.get(hpid).get('avg_Repair2'))); acc.SUM_Repair_List_Price__c += repairMap.get(hpid).get('sum_Price') == null ? 0 : Decimal.valueOf(String.valueOf(repairMap.get(hpid).get('sum_Price'))); acc.SUM_Repair_Billing_Amount__c += repairMap.get(hpid).get('sum_Billing') == null ? 0 : Decimal.valueOf(String.valueOf(repairMap.get(hpid).get('sum_Billing'))); } if (repair_LY_Map.containsKey(hpid)) { acc.AVG_Elapsed_day_from_Repair_Lastyear__c += repair_LY_Map.get(hpid).get('avg_Repair') == null ? 0 : Decimal.valueOf(String.valueOf(repair_LY_Map.get(hpid).get('avg_Repair'))); acc.AVG_Elapsed_day_from_Repair2_Lastyear__c += repair_LY_Map.get(hpid).get('avg_Repair2') == null ? 0 : Decimal.valueOf(String.valueOf(repair_LY_Map.get(hpid).get('avg_Repair2'))); acc.SUM_Repair_List_Price_Lastyear__c += repair_LY_Map.get(hpid).get('sum_Price') == null ? 0 : Decimal.valueOf(String.valueOf(repair_LY_Map.get(hpid).get('sum_Price'))); acc.SUM_Repair_Billing_Amount_Lastyear__c += repair_LY_Map.get(hpid).get('sum_Billing') == null ? 0 : Decimal.valueOf(String.valueOf(repair_LY_Map.get(hpid).get('sum_Billing'))); } if (unpaidMap.containsKey(hpid)) { acc.SUM_Unpaid_Amount__c += unpaidMap.get(hpid).get('sum_Unpaid') == null ? 0 : Decimal.valueOf(String.valueOf(unpaidMap.get(hpid).get('sum_Unpaid'))); } if (mContractMap.containsKey(hpid)) { acc.Service_contract_active_number_HP__c += Integer.valueOf(mContractMap.get(hpid).get('Cnt_Id')); } updateAccount.put(hpid, acc); } // 戦略科室を検索 Map dcListMap = new Map( [select Id, Department_Class_Label__c from Account where Parent.RecordType.DeveloperName = 'HP' and Is_Active__c <> '無効' and ParentId in : hpList] ); // 2018-09-14 CHAN-B4J9TC start 额外获取归属于哪个战略科室 :Account_Org__r.RecordType_DeveloperName__c Map OldAccount2 = new Map ( [select Id, Account__c, Account_Org__r.RecordType_DeveloperName__c , Account_Org__r.parentID // SWAG-BD24SU from Account2__c where Account_Org__c in :dcListMap.keySet()]); // 2018-09-14 CHAN-B4J9TC end 额外获取归属于哪个战略科室 // 修理TAT(到客户返送日),修理TAT(到RC返送日),修理报价,发票金额 Department_Class__c应与Delivered_Product__r.Department_Class__c一致 List dc_repairList = [ select AVG(Elapsed_day_from_Repair__c) avg_Repair, AVG(Elapsed_day_from_Repair2__c) avg_Repair2, SUM(Repair_List_Price__c) sum_Price, SUM(Billing_Amount__c) sum_Billing, Delivered_Product__r.Department_Class__c Department_Class from Repair__c where Delivered_Product__r.Department_Class__c in : dcListMap.keySet() and Department_Class__c != null and Failure_Occurrence_Date__c >= : thisYd and Failure_Occurrence_Date__c < : nextYd group by Delivered_Product__r.Department_Class__c ]; Map dc_repairMap = new Map(); for (AggregateResult dc_repair : dc_repairList) { dc_repairMap.put(String.valueOf(dc_repair.get('Department_Class')), dc_repair); } List dc_repair_LY_List = [ select AVG(Elapsed_day_from_Repair__c) avg_Repair, AVG(Elapsed_day_from_Repair2__c) avg_Repair2, SUM(Repair_List_Price__c) sum_Price, SUM(Billing_Amount__c) sum_Billing, Delivered_Product__r.Department_Class__c Department_Class from Repair__c where Delivered_Product__r.Department_Class__c in : dcListMap.keySet() and Department_Class__c != null and Failure_Occurrence_Date__c >= : lastYd and Failure_Occurrence_Date__c < : thisYd group by Delivered_Product__r.Department_Class__c ]; Map dc_repair_LY_Map = new Map(); for (AggregateResult dc_repair : dc_repair_LY_List) { dc_repair_LY_Map.put(String.valueOf(dc_repair.get('Department_Class')), dc_repair); } // 未回款金额 Department_Class__c应与Delivered_Product__r.Department_Class__c一致 List dc_unpaidList = [ select SUM(Unpaid_Amount__c) sum_Unpaid, Delivered_Product__r.Department_Class__c Department_Class from Repair__c where Delivered_Product__r.Department_Class__c in : dcListMap.keySet() and Department_Class__c != null /* CHAN-B7J5EK 2018/12/18 未回款金额为0 则不检索 start */ and Unpaid_Amount__c != null and Unpaid_Amount__c != 0 /* CHAN-B7J5EK 2018/12/18 未回款金额为0 则不检索 end */ group by Delivered_Product__r.Department_Class__c ]; Map dc_unpaidMap = new Map(); for (AggregateResult dc_unpaid : dc_unpaidList) { dc_unpaidMap.put(String.valueOf(dc_unpaid.get('Department_Class')), dc_unpaid); } // 维修合同 按 状态=契約 List dc_mContractList = [ select Count(Id) Cnt_Id, Department_Class__c from Maintenance_Contract__c where Status__c = '契約' // KPI 报表修改 , 刨除多年保修合同 start and (recordType.developerName = 'NewMaintenance_Contract' or recordType.developerName = 'Maintenance_Contract') // KPI 报表修改 , 刨除多年保修合同 end and Department_Class__c in : dcListMap.keySet() group by Department_Class__c ]; Map dc_mContractMap = new Map(); for (AggregateResult dc_mContract : dc_mContractList) { dc_mContractMap.put(String.valueOf(dc_mContract.get('Department_Class__c')), dc_mContract); } // 戦略科室更新 // 2018/08/24 SWAG-B3U67F 获取战略科室的提案书情况 存至客户2中 start Map proposalDocumentMap_dept = new Map([ select Account_dept__c Id, Max(Proposal_count__c) Proposal_Submit_Status, Max(Quarterly_count__c) Quarterly_Submit_Status from TemporaryFileBox__c where Account_dept__r.Parent.RecordType.DeveloperName = 'HP' and Account_dept__r.Is_Active__c <> '無効' and Account_dept__r.parentID in : hpList and Approval_day__c >= :thisYd and Approval_day__c < :nextYd group by Account_dept__c ]); // 2018/08/24 SWAG-B3U67F 获取战略科室的提案书情况 存至客户2中 end List acc2List2 = [select Id, Account__c, Account_Org__c // SWAG-BD24SU 额外检索一些新东西 start , Account_Org__r.ParentId, Account_Org__r.RecordType_DeveloperName__c // SWAG-BD24SU 额外检索一些新东西 end from Account2__c where Account_Org__c in :dcListMap.keySet()]; // SWAG-BD24SU 构建医院为key, 消化科战略科室客户2ID为Value 的map start Map HPtoGIAcc2Map = new Map(); Map depToOtherDepAcc2Map = new Map(); for (Account2__c tempAcc2 : acc2List2) { // SWAG-BQ75WE update by vivek 2020/26/11 start // if (tempAcc2.Account_Org__c != null // && tempAcc2.Account_Org__r.RecordType_DeveloperName__c.equals('Department_Class_GI') ) { // HPtoGIAcc2Map.put(tempAcc2.Account_Org__r.ParentId, tempAcc2.Account_Org__c) // } if (tempAcc2.Account_Org__c != null) { depToOtherDepAcc2Map.put(tempAcc2.Account_Org__r.ParentId+tempAcc2.Account_Org__r.RecordType_DeveloperName__c, tempAcc2.Account_Org__c); } // SWAG-BQ75WE update by vivek 2020/26/11 end } // SWAG-BD24SU 额外检索一些新东西 end for (Account2__c acc2 : acc2List2) { String dcid = acc2.Account_Org__c; Account2__c acc = new Account2__c(Id = acc2.Id); initAccountCount(acc, targetmonth); // 2018/08/24 SWAG-B3U67F 获取战略科室的提案书情况 存至客户2中 start if (proposalDocumentMap_dept.containsKey(dcid)) { acc.Proposal_Submit_Status_Dept__c = (proposalDocumentMap_dept.get(dcid).get('Proposal_Submit_Status') == null ? 0 : (Decimal) proposalDocumentMap_dept.get(dcid).get('Proposal_Submit_Status')) + (proposalDocumentMap_dept.get(dcid).get('Quarterly_Submit_Status') == null ? 0 : (Decimal) proposalDocumentMap_dept.get(dcid).get('Quarterly_Submit_Status')); } // 2018/08/24 SWAG-B3U67F 获取战略科室的提案书情况 存至客户2中 end if (dc_repairMap.containsKey(dcid)) { acc.AVG_Elapsed_day_from_Repair__c += dc_repairMap.get(dcid).get('avg_Repair') == null ? 0 : Decimal.valueOf(String.valueOf(dc_repairMap.get(dcid).get('avg_Repair'))); acc.AVG_Elapsed_day_from_Repair2__c += dc_repairMap.get(dcid).get('avg_Repair2') == null ? 0 : Decimal.valueOf(String.valueOf(dc_repairMap.get(dcid).get('avg_Repair2'))); acc.SUM_Repair_List_Price__c += dc_repairMap.get(dcid).get('sum_Price') == null ? 0 : Decimal.valueOf(String.valueOf(dc_repairMap.get(dcid).get('sum_Price'))); acc.SUM_Repair_Billing_Amount__c += dc_repairMap.get(dcid).get('sum_Billing') == null ? 0 : Decimal.valueOf(String.valueOf(dc_repairMap.get(dcid).get('sum_Billing'))); } if (dc_repair_LY_Map.containsKey(dcid)) { acc.AVG_Elapsed_day_from_Repair_Lastyear__c += dc_repair_LY_Map.get(dcid).get('avg_Repair') == null ? 0 : Decimal.valueOf(String.valueOf(dc_repair_LY_Map.get(dcid).get('avg_Repair'))); acc.AVG_Elapsed_day_from_Repair2_Lastyear__c += dc_repair_LY_Map.get(dcid).get('avg_Repair2') == null ? 0 : Decimal.valueOf(String.valueOf(dc_repair_LY_Map.get(dcid).get('avg_Repair2'))); acc.SUM_Repair_List_Price_Lastyear__c += dc_repair_LY_Map.get(dcid).get('sum_Price') == null ? 0 : Decimal.valueOf(String.valueOf(dc_repair_LY_Map.get(dcid).get('sum_Price'))); acc.SUM_Repair_Billing_Amount_Lastyear__c += dc_repair_LY_Map.get(dcid).get('sum_Billing') == null ? 0 : Decimal.valueOf(String.valueOf(dc_repair_LY_Map.get(dcid).get('sum_Billing'))); } if (dc_unpaidMap.containsKey(dcid)) { acc.SUM_Unpaid_Amount__c += dc_unpaidMap.get(dcid).get('sum_Unpaid') == null ? 0 : Decimal.valueOf(String.valueOf(dc_unpaidMap.get(dcid).get('sum_Unpaid'))); } if (dc_mContractMap.containsKey(dcid)) { acc.Service_contract_active_number_HP__c += Integer.valueOf(dc_mContractMap.get(dcid).get('Cnt_Id')); } updateAccount.put(dcid, acc); } // 战略科室下的保有设备(按照重点产品区分) SWAG-BSC5WP you-20201021 start for (Asset aggAst : [ select Department_Class__c, Product2.Key_product_147P__c,Product2Id from Asset where Status <> '廃棄' and Asset_Owner__c ='病院資産' and Department_Class__c in : dcListMap.keySet() and Department_Class__c !=null and Product2.Key_product_147P__c <> '' ]) { Id dcid = (Id) aggAst.Department_Class__c; //战略科室id Account2__c acc = updateAccount.get(dcid); //战略科室对应得 客户2 String tmpKey = ''; String tempKeyProduct = String.valueOf(aggAst.Product2.Key_product_147P__c);//重点产品区分 if(tempKeyProduct != null&&String.isNotBlank(tempKeyProduct)){ tmpKey = tempKeyProduct.substring(0,2); } system.debug('战略科室id:' + dcid + '==产品id=' + aggAst.Product2Id+'===重点产品区分 =='+tempKeyProduct+'==acc=='+acc); if(acc!=null){ setAssetCount(acc, tmpKey, 1, OldAccount2, depToOtherDepAcc2Map , updateAccount); } } //SWAG-BSC5WP you-20201021 end // 资产 按 分类 for (AggregateResult aggAst : [ select Count(Id) Cnt_Id, Hospital__c, Department_Class__r.Department_Class_Label__c, Product2.Category3__c, Product2.Category4__c , Product2.Category5__c from Asset where Status = '使用中' and Department_Class__c != null and Hospital__c in : hpList group by Hospital__c, Department_Class__r.Department_Class_Label__c, Product2.Category3__c, Product2.Category4__c , Product2.Category5__c ]) { Id hpid = (Id) aggAst.get('Hospital__c'); Account2__c acc = updateAccount.get(hpid); String strDCL = aggAst.get('Department_Class_Label__c') == null ? '' : String.valueOf(aggAst.get('Department_Class_Label__c')); String strC3 = aggAst.get('Category3__c') == null ? '' : String.valueOf(aggAst.get('Category3__c')); String strC4 = aggAst.get('Category4__c') == null ? '' : String.valueOf(aggAst.get('Category4__c')); String strC5 = aggAst.get('Category5__c') == null ? '' : String.valueOf(aggAst.get('Category5__c')); Integer cntId = Integer.valueOf(aggAst.get('Cnt_Id')); setAssetCategoryCount(acc, strDCL, strC3, strC4, strC5, cntId); } // 资产 按 ProductCode for (AggregateResult aggPcode : [ select Count(Id) Cnt_Id, Hospital__c, Product2.ProductCode from Asset where Status = '使用中' and Product2.ProductCode in ('N4491360', 'WB91051C') and Hospital__c in : hpList group by Hospital__c, Product2.ProductCode ]) { Id hpid = (Id) aggPcode.get('Hospital__c'); Account2__c acc = updateAccount.get(hpid); String strPcode = aggPcode.get('ProductCode') == null ? '' : String.valueOf(aggPcode.get('ProductCode')); Integer cntId = Integer.valueOf(aggPcode.get('Cnt_Id')); setAssetPcodeCount(acc, strPcode, cntId); } //报告一览 按 月份 按照医院 //SWAG-BBBAKG之前的逻辑为 各个本部(包括能量)的数据都按照月累计,只区分销售推广和 销售服务(FSE) /*for (AggregateResult aggEvent : [ select Count(Id) Cnt_Id, Account_ID__r.Parent.ParentId HPID, ActivityDate__c, Reporter_Job_Category__c from Event__c where Daily_Report__r.Status_With_Check__c <> '草案中' and Daily_Report__r.Status_With_Check__c <> '' and Account_ID__r.Parent.ParentId in : hplist and ActivityDate__c >= : sDate and ActivityDate__c < : eDate and Reporter_Job_Category__c in ('销售推广', '销售服务') group by Account_ID__r.Parent.ParentId, ActivityDate__c, Reporter_Job_Category__c ]) { Id hpid = (Id) aggEvent.get('HPID'); Account2__c acc = updateAccount.get(hpid); Integer iMonth = aggEvent.get('ActivityDate__c') == null ? 0 : Date.valueOf(aggEvent.get('ActivityDate__c')).month(); Integer cntId = Integer.valueOf(aggEvent.get('Cnt_Id')); String job_Category = (String) aggEvent.get('Reporter_Job_Category__c'); setEventCount(acc, iMonth, cntId, job_Category); }*/ /* SWAG-BBBAKG新逻辑为 销售服务(FSE)保持不变, * 原销售推广按照六个本部(华东、华北之类)按月累计(排除能量本部); * 对于能量本部,销售推广和销售市场统合起来按照月统计 */ //销售服务(FSE) for (AggregateResult aggEvent : [ select Count(Id) Cnt_Id, Account_ID__r.Parent.ParentId HPID, ActivityDate__c, Reporter_Job_Category__c from Event__c where Daily_Report__r.Status_With_Check__c <> '草案中' and Daily_Report__r.Status_With_Check__c <> '' and Account_ID__r.Parent.ParentId in : hplist and ActivityDate__c >= : sDate and ActivityDate__c < : eDate and Reporter_Job_Category__c in ('销售服务') and Daily_Report__r.Submit_OnTime_Count__c = 1 group by Account_ID__r.Parent.ParentId, ActivityDate__c, Reporter_Job_Category__c ]) { Id hpid = (Id) aggEvent.get('HPID'); Account2__c acc = updateAccount.get(hpid); Integer iMonth = aggEvent.get('ActivityDate__c') == null ? 0 : Date.valueOf(aggEvent.get('ActivityDate__c')).month(); Integer cntId = Integer.valueOf(aggEvent.get('Cnt_Id')); String job_Category = (String) aggEvent.get('Reporter_Job_Category__c'); setEventCount(acc, iMonth, cntId, job_Category); } // 六个本部 销售推广 for (AggregateResult aggEvent : [ select Count(Id) Cnt_Id, Account_ID__r.Parent.ParentId HPID, ActivityDate__c, Reporter_Job_Category__c from Event__c where Daily_Report__r.Status_With_Check__c <> '草案中' and Daily_Report__r.Status_With_Check__c <> '' and Account_ID__r.Parent.ParentId in : hplist and ActivityDate__c >= : sDate and ActivityDate__c < : eDate and Reporter_Job_Category__c in ('销售推广') and Reporter_Dept__c in('医疗东北营业本部', '医疗华北营业本部', '医疗华东营业本部', '医疗华南营业本部', '医疗西北营业本部', '医疗西南营业本部') and Daily_Report__r.Submit_OnTime_Count__c = 1 group by Account_ID__r.Parent.ParentId, ActivityDate__c, Reporter_Job_Category__c ]) { Id hpid = (Id) aggEvent.get('HPID'); Account2__c acc = updateAccount.get(hpid); Integer iMonth = aggEvent.get('ActivityDate__c') == null ? 0 : Date.valueOf(aggEvent.get('ActivityDate__c')).month(); Integer cntId = Integer.valueOf(aggEvent.get('Cnt_Id')); String job_Category = (String) aggEvent.get('Reporter_Job_Category__c'); setEventCount(acc, iMonth, cntId, job_Category); } // 能量本部 销售推广 销售市场 for (AggregateResult aggEvent : [ select Count(Id) Cnt_Id, Account_ID__r.Parent.ParentId HPID, ActivityDate__c, Reporter_Job_Category__c from Event__c where Daily_Report__r.Status_With_Check__c <> '草案中' and Daily_Report__r.Status_With_Check__c <> '' and Account_ID__r.Parent.ParentId in : hplist and ActivityDate__c >= : sDate and ActivityDate__c < : eDate and Reporter_Job_Category__c in ('销售推广', '销售市场') // LHJ 202006 恢复 Start and ((Reporter_Product_specialist_incharge_pro__c = 'ENG' or Reporter_Product_specialist_incharge_pro__c = 'SP(兼ENG)' or Reporter_Product_specialist_incharge_pro__c = 'ALL(兼ENG/ET)' or (Reporter_Product_specialist_incharge_pro__c = 'SP' and Reporter_Post__c in ('经理','副经理'))) //2021.6.29新增负责产品(兼)逻辑 or (Responsible_for_Products_Concurrently__c = 'ENG' or Responsible_for_Products_Concurrently__c = 'ENG/ET' or (Responsible_for_Products_Concurrently__c = 'SP' and Reporter_Post__c in ('经理','副经理'))) ) //and Reporter_Dept__c = '能量事业本部' // LHJ 202006 恢复 End and Daily_Report__r.Submit_OnTime_Count__c = 1 group by Account_ID__r.Parent.ParentId, ActivityDate__c, Reporter_Job_Category__c ]) { Id hpid = (Id) aggEvent.get('HPID'); Account2__c acc = updateAccount.get(hpid); Integer iMonth = aggEvent.get('ActivityDate__c') == null ? 0 : Date.valueOf(aggEvent.get('ActivityDate__c')).month(); Integer cntId = Integer.valueOf(aggEvent.get('Cnt_Id')); setEventCount_Eng(acc, iMonth, cntId); } // SWAG-BBBAKG end // 资产 按 分类 for (AggregateResult aggAst : [ select Count(Id) Cnt_Id, Department_Class__c, Product2.Category3__c, Product2.Category4__c , Product2.Category5__c from Asset where Status = '使用中' and Department_Class__c in : dcListMap.keySet() group by Department_Class__c, Product2.Category3__c, Product2.Category4__c , Product2.Category5__c ]) { Id dcid = (Id) aggAst.get('Department_Class__c'); Account2__c acc = updateAccount.get(dcid); String strDCL = dcListMap.get(dcid).Department_Class_Label__c; String strC3 = aggAst.get('Category3__c') == null ? '' : String.valueOf(aggAst.get('Category3__c')); String strC4 = aggAst.get('Category4__c') == null ? '' : String.valueOf(aggAst.get('Category4__c')); String strC5 = aggAst.get('Category5__c') == null ? '' : String.valueOf(aggAst.get('Category5__c')); Integer cntId = Integer.valueOf(aggAst.get('Cnt_Id')); setAssetCategoryCount(acc, strDCL, strC3, strC4, strC5, cntId); } // 资产 按 ProductCode for (AggregateResult aggPcode : [ select Count(Id) Cnt_Id, Department_Class__c, Product2.ProductCode from Asset where Status = '使用中' and Product2.ProductCode in ('N4491360', 'WB91051C') and Department_Class__c in : dcListMap.keySet() group by Department_Class__c, Product2.ProductCode ]) { Id dcid = (Id) aggPcode.get('Department_Class__c'); Account2__c acc = updateAccount.get(dcid); String strPcode = aggPcode.get('ProductCode') == null ? '' : String.valueOf(aggPcode.get('ProductCode')); Integer cntId = Integer.valueOf(aggPcode.get('Cnt_Id')); setAssetPcodeCount(acc, strPcode, cntId); } // 报告一览 按 月份 按照战略科室 //SWAG-BBBAKG之前的逻辑为 各个本部(包括能量)的数据都按照月累计,只区分销售推广和 销售服务(FSE) /* for (AggregateResult aggEvent : [ select Count(Id) Cnt_Id, Account_ID__r.ParentId DCID, ActivityDate__c, Reporter_Job_Category__c from Event__c where Daily_Report__r.Status_With_Check__c <> '草案中' and Daily_Report__r.Status_With_Check__c <> '' and Account_ID__r.ParentId in : dcListMap.keySet() and ActivityDate__c >= : sDate and ActivityDate__c < : eDate and Reporter_Job_Category__c in ('销售推广', '销售服务') group by Account_ID__r.ParentId, ActivityDate__c, Reporter_Job_Category__c ]) { Id dcid = (Id) aggEvent.get('DCID'); Account2__c acc = updateAccount.get(dcid); Integer iMonth = aggEvent.get('ActivityDate__c') == null ? 0 : Date.valueOf(aggEvent.get('ActivityDate__c')).month(); Integer cntId = Integer.valueOf(aggEvent.get('Cnt_Id')); String job_Category = (String) aggEvent.get('Reporter_Job_Category__c'); setEventCount(acc, iMonth, cntId, job_Category); } */ /* SWAG-BBBAKG新逻辑为 销售服务(FSE)保持不变, * 原销售推广按照六个本部(华东、华北之类)按月累计(排除能量本部); * 对于能量本部,销售推广和销售市场统合起来按照月统计 */ //销售服务(FSE) for (AggregateResult aggEvent : [ select Count(Id) Cnt_Id, Account_ID__r.ParentId DCID, ActivityDate__c, Reporter_Job_Category__c from Event__c where Daily_Report__r.Status_With_Check__c <> '草案中' and Daily_Report__r.Status_With_Check__c <> '' and Account_ID__r.ParentId in : dcListMap.keySet() and ActivityDate__c >= : sDate and ActivityDate__c < : eDate and Reporter_Job_Category__c = '销售服务' and Daily_Report__r.Submit_OnTime_Count__c = 1 group by Account_ID__r.ParentId, ActivityDate__c, Reporter_Job_Category__c ]) { Id dcid = (Id) aggEvent.get('DCID'); Account2__c acc = updateAccount.get(dcid); Integer iMonth = aggEvent.get('ActivityDate__c') == null ? 0 : Date.valueOf(aggEvent.get('ActivityDate__c')).month(); Integer cntId = Integer.valueOf(aggEvent.get('Cnt_Id')); String job_Category = (String) aggEvent.get('Reporter_Job_Category__c'); setEventCount(acc, iMonth, cntId, job_Category); } // 六个本部 销售推广 for (AggregateResult aggEvent : [ select Count(Id) Cnt_Id, Account_ID__r.ParentId DCID, ActivityDate__c, Reporter_Job_Category__c from Event__c where Daily_Report__r.Status_With_Check__c <> '草案中' and Daily_Report__r.Status_With_Check__c <> '' and Account_ID__r.ParentId in : dcListMap.keySet() and ActivityDate__c >= : sDate and ActivityDate__c < : eDate and Reporter_Job_Category__c in ('销售推广') and Reporter_Dept__c in('医疗东北营业本部', '医疗华北营业本部', '医疗华东营业本部', '医疗华南营业本部', '医疗西北营业本部', '医疗西南营业本部') and Daily_Report__r.Submit_OnTime_Count__c = 1 group by Account_ID__r.ParentId, ActivityDate__c, Reporter_Job_Category__c ]) { Id dcid = (Id) aggEvent.get('DCID'); Account2__c acc = updateAccount.get(dcid); Integer iMonth = aggEvent.get('ActivityDate__c') == null ? 0 : Date.valueOf(aggEvent.get('ActivityDate__c')).month(); Integer cntId = Integer.valueOf(aggEvent.get('Cnt_Id')); String job_Category = (String) aggEvent.get('Reporter_Job_Category__c'); setEventCount(acc, iMonth, cntId, job_Category); } // 能量本部 销售推广 销售市场 for (AggregateResult aggEvent : [ select Count(Id) Cnt_Id, Account_ID__r.ParentId DCID, ActivityDate__c, Reporter_Job_Category__c from Event__c where Daily_Report__r.Status_With_Check__c <> '草案中' and Daily_Report__r.Status_With_Check__c <> '' and Account_ID__r.ParentId in : dcListMap.keySet() and ActivityDate__c >= : sDate and ActivityDate__c < : eDate and Reporter_Job_Category__c in ('销售推广', '销售市场') // LHJ 20200624 恢复 Start and ((Reporter_Product_specialist_incharge_pro__c = 'ENG' or Reporter_Product_specialist_incharge_pro__c = 'SP(兼ENG)' or Reporter_Product_specialist_incharge_pro__c = 'ALL(兼ENG/ET)' or(Reporter_Product_specialist_incharge_pro__c = 'SP' and Reporter_Post__c in ('经理','副经理'))) or //2021.6.29 新增的逻辑 报告者・推进员工负责产品(兼) (Responsible_for_Products_Concurrently__c = 'ENG' or Responsible_for_Products_Concurrently__c = 'ENG/ET' or (Responsible_for_Products_Concurrently__c = 'SP' and Reporter_Post__c in ('经理','副经理')) )) // and Reporter_Dept__c = '能量事业本部' // LHJ 20200624 End and Daily_Report__r.Submit_OnTime_Count__c = 1 group by Account_ID__r.ParentId, ActivityDate__c, Reporter_Job_Category__c ]) { Id dcid = (Id) aggEvent.get('DCID'); Account2__c acc = updateAccount.get(dcid); Integer iMonth = aggEvent.get('ActivityDate__c') == null ? 0 : Date.valueOf(aggEvent.get('ActivityDate__c')).month(); Integer cntId = Integer.valueOf(aggEvent.get('Cnt_Id')); String job_Category = (String) aggEvent.get('Reporter_Job_Category__c'); setEventCount_Eng(acc, iMonth, cntId); } // SWAG-BBBAKG end // 点检回数(按单据),点检回数(按设备) // なぜか Inspection_Times__c 設定されない List ahListFlag = new List(); List ahList0Flag = new List(); String breakInspection = ''; Boolean isUpdateFlag = true; List ahs = [ select Inspection_report_number__c, Inspection_Times__c, Inspection_Count__c, Inspection_Report__c, Inspection_Report__r.Status__c, AssetId__r.Hospital__c, AssetId__r.Department_Class__c, Examination_Date__c from AssetHistory__c where AssetId__r.Hospital__c in : hpList and Field_Api_Name__c = 'Inspection_report_number__c' and NewValue__c != null and AssetId__r.Department_Class__c in : dcListMap.keySet() and Examination_Date__c >= :sDay and Examination_Date__c < :eDay order by NewValue__c, Inspection_Times__c desc]; for (AssetHistory__c ah : ahs) { System.debug('ah.Inspection_report_number__c=' + ah.Inspection_report_number__c); if (ah.Inspection_Report__c != null && ah.Inspection_Report__r.Status__c == '草案中') { if (ah.Inspection_Times__c == 1) { ah.Inspection_Times__c = 0; ahList0Flag.add(ah); continue; } } else if (breakInspection != ah.Inspection_report_number__c) { System.debug('breakInspection != ah.Inspection_report_number__c'); isUpdateFlag = true; breakInspection = ah.Inspection_report_number__c; if (ah.Inspection_Times__c != 1) { ahListFlag.add(ah); // まずは処理対象 } else { isUpdateFlag = false; } } if (isUpdateFlag) { if (ah.Inspection_Times__c == 1) { isUpdateFlag = false; System.debug('ah.Inspection_Times__c != 0'); ahListFlag.remove(ahListFlag.size() - 1); } } } if (ahListFlag.size() > 0 || ahList0Flag.size() > 0) { for (AssetHistory__c ah : ahListFlag) { ah.Inspection_Times__c = 1; } ahListFlag.addAll(ahList0Flag); System.debug('ahListFlag.size()=' + ahListFlag.size()); update ahListFlag; } for (AssetHistory__c ah : ahs) { if (ah.Inspection_Report__c != null && ah.Inspection_Report__r.Status__c == '草案中') { continue; } Id hpid = ah.AssetId__r.Hospital__c; Account2__c hpacc = updateAccount.get(hpid); Id dcid = ah.AssetId__r.Department_Class__c; Account2__c dcacc = updateAccount.get(dcid); Decimal times = ah.Inspection_Times__c == null ? 0 : ah.Inspection_Times__c; Decimal counts = ah.Inspection_Count__c == null ? 0 : ah.Inspection_Count__c; Integer month = ah.Examination_Date__c.month(); setTimesAndCounts(hpacc, month, times, counts); setTimesAndCounts(dcacc, month, times, counts); } // opp RankTax // convertCurrencyにて、SFのレート使う(カスタム項目のレートを使うべき?) for (Opportunity opp : [ select convertCurrency(RANK_A_inc_tax__c), convertCurrency(RANK_B_inc_tax__c), convertCurrency(RANK_C_inc_tax__c), convertCurrency(RANK_D_inc_tax__c), convertCurrency(RANK_E_inc_tax__c), Today_Rate__c, Trade__c, convertCurrency(Forecast_Amount_All_F__c), convertCurrency(ShippedAmount__c), Opp_Actual_ThousandY__c, BO_Forecast_ThousandY__c, // 20220722 ljh SWAG-CE6A58 update start // OP_ThousandY__c, Opp_Forecast_ThousandY__c, // Opportunity_ThousandY__c, Amount_Without_Tax_Thousand_F__c, OP_ThousandY_Target__c, Opp_Forecast_ThousandY__c, Opportunity_ThousandY_Target__c, Amount_Without_Tax_Thousand_F__c, // 20220722 ljh SWAG-CE6A58 update end Hospital__c, Department_Class__c , OCSM_RMB_Without_Tax_1000TR__c//20220111 SWAG-C8MBB6 加7.询价 lt //20230222 DB202302339407 you start ,LostPrices__c ,convertCurrency(Dealer_Final_Price__c) ,order_Date_For_Report__c ,StageName__c //20230222 DB202302339407 you end //20230327 DB202303372329 you start ,OP_ThousandY_Order__c ,OrderThisYearQY__c ,Opportunity__c //20230327 DB202303372329 you end from Opportunity where Hospital__c in :hpList ]) { Id hpid = opp.Hospital__c; Account2__c hpacc = updateAccount.get(hpid); Id dcid = opp.Department_Class__c; Account2__c dcacc = updateAccount.get(dcid); Decimal a1 = opp.RANK_A_inc_tax__c == null ? 0 : opp.RANK_A_inc_tax__c; Decimal a2 = opp.RANK_B_inc_tax__c == null ? 0 : opp.RANK_B_inc_tax__c; Decimal a3 = opp.RANK_C_inc_tax__c == null ? 0 : opp.RANK_C_inc_tax__c; Decimal a4 = opp.RANK_D_inc_tax__c == null ? 0 : opp.RANK_D_inc_tax__c; Decimal a5 = opp.RANK_E_inc_tax__c == null ? 0 : opp.RANK_E_inc_tax__c; Decimal fa = opp.Forecast_Amount_All_F__c == null ? 0 : opp.Forecast_Amount_All_F__c; Decimal sa = opp.ShippedAmount__c == null ? 0 : opp.ShippedAmount__c; setRankTaxCount(hpacc, a1, a2, a3, a4, a5, fa, sa); setRankTaxCount(dcacc, a1, a2, a3, a4, a5, fa, sa); Decimal o1 = opp.Opp_Actual_ThousandY__c == null ? 0 : opp.Opp_Actual_ThousandY__c; Decimal o2 = opp.BO_Forecast_ThousandY__c == null ? 0 : opp.BO_Forecast_ThousandY__c; // 20220722 ljh SWAG-CE6A58 update start // Decimal o3 = opp.OP_ThousandY__c == null ? 0 : opp.OP_ThousandY__c; Decimal o3 = opp.OP_ThousandY_Target__c == null ? 0 : opp.OP_ThousandY_Target__c; // 20220722 ljh SWAG-CE6A58 update end Decimal o4 = opp.Opp_Forecast_ThousandY__c == null ? 0 : opp.Opp_Forecast_ThousandY__c; // 20220722 ljh SWAG-CE6A58 update start // Decimal o5 = opp.Opportunity_ThousandY__c == null ? 0 : opp.Opportunity_ThousandY__c; Decimal o5 = opp.Opportunity_ThousandY_Target__c == null ? 0 : opp.Opportunity_ThousandY_Target__c; // 20220722 ljh SWAG-CE6A58 update end Decimal o6 = opp.Amount_Without_Tax_Thousand_F__c == null ? 0 : opp.Amount_Without_Tax_Thousand_F__c; //20220111 SWAG-C8MBB6 加7.询价 lt start Decimal o7 = opp.OCSM_RMB_Without_Tax_1000TR__c == null ? 0 : opp.OCSM_RMB_Without_Tax_1000TR__c; //20220111 SWAG-C8MBB6 加7.询价 lt end //20230222 you start Decimal o8 = 0; Decimal o9 = 0; Decimal o10 = 0; if(opp.order_Date_For_Report__c>= thisYd && opp.order_Date_For_Report__c < nextYd){ o8 = opp.LostPrices__c == null ? 0 : opp.LostPrices__c; if(opp.StageName__c !='失单' && opp.StageName__c !='取消'){ o9 = opp.Dealer_Final_Price__c == null ? 0 : opp.Dealer_Final_Price__c / 1.13 / 1000; } o10 = o8 + o9; } //20230222 you end //20230327 DB202303372329 you start Decimal o11 = opp.OP_ThousandY_Order__c == null ? 0 : opp.OP_ThousandY_Order__c; Decimal o12 = opp.OrderThisYearQY__c == null ? 0 : opp.OrderThisYearQY__c; Decimal o13 = opp.Opportunity__c == null ? 0 : opp.Opportunity__c; //20230327 DB202303372329 you end setOppAmount(hpacc, o1, o2, o3, o4, o5, o6, o7,o8,o9,o10,o11,o12,o13); setOppAmount(dcacc, o1, o2, o3, o4, o5, o6, o7,o8,o9,o10,o11,o12,o13); } // 报告书 for (Report__c report : [ select Id, Hospital_Reference__c, Department_Class_Ref__c, Date__c, RecordType.DeveloperName, CDS_training_report_check__c, Reporter_Job_Category__c, Important_product1__c, Important_product2__c, Important_product3__c, Important_product4__c, Important_product5__c, Important_product6__c, Important_product7__c, Important_product8__c, Important_product9__c, Important_product10__c, Important_product11__c, Important_product12__c, Important_product13__c, Important_product14__c, Important_product15__c, Important_product16__c, Important_product17__c, Important_product18__c, Important_product19__c, Important_product20__c from Report__c where RecordType.DeveloperName in ('OPD', 'NTC') and Status__c <> '作成中' and Status__c <> '取消し' and Status__c <> '' and Date__c >= : sDate // and Date__c >= : thisYd and Date__c < : nextYd and Hospital_Reference__c in : hpList and Department_Class_Ref__c in : dcListMap.values() ]) { Id hpid = report.Hospital_Reference__c; Account2__c hpacc = updateAccount.get(hpid); Id dcid = report.Department_Class_Ref__c; Account2__c dcacc = updateAccount.get(dcid); String developerName = report.RecordType.DeveloperName; // 重点产品OPD次数、年度単位 if (report.Date__c >= thisYd && developerName == 'OPD') { Decimal decIP1 = report.Important_product1__c; Decimal decIP2 = report.Important_product2__c; Decimal decIP3 = report.Important_product3__c; Decimal decIP4 = report.Important_product4__c; Decimal decIP5 = report.Important_product5__c; Decimal decIP6 = report.Important_product6__c; Decimal decIP7 = report.Important_product7__c; Decimal decIP8 = report.Important_product8__c; Decimal decIP9 = report.Important_product9__c; Decimal decIP10 = report.Important_product10__c; Decimal decIP11 = report.Important_product11__c; Decimal decIP12 = report.Important_product12__c; Decimal decIP13 = report.Important_product13__c; Decimal decIP14 = report.Important_product14__c; Decimal decIP15 = report.Important_product15__c; Decimal decIP16 = report.Important_product16__c; Decimal decIP17 = report.Important_product17__c; Decimal decIP18 = report.Important_product18__c; Decimal decIP19 = report.Important_product19__c; Decimal decIP20 = report.Important_product20__c; setOpdIproductCount(hpacc, decIP1, decIP2, decIP3, decIP4, decIP5, decIP6, decIP7, decIP8, decIP9, decIP10, decIP11, decIP12, decIP13, decIP14, decIP15, decIP16, decIP17, decIP18, decIP19, decIP20); setOpdIproductCount(dcacc, decIP1, decIP2, decIP3, decIP4, decIP5, decIP6, decIP7, decIP8, decIP9, decIP10, decIP11, decIP12, decIP13, decIP14, decIP15, decIP16, decIP17, decIP18, decIP19, decIP20); } // 十二肠镜CDS培训次数、年度単位 if (report.Date__c >= thisYd && developerName == 'NTC') { Decimal cds = report.CDS_training_report_check__c; setNtcCdsCount(hpacc, cds); setNtcCdsCount(dcacc, cds); } // OPD,NTC回数、12月、回すタイプの集計 if (report.Date__c < eDate) { Integer iMonth = report.Date__c.month(); String job_Category = report.Reporter_Job_Category__c; setDoCount(hpacc, iMonth, developerName, job_Category); setDoCount(dcacc, iMonth, developerName, job_Category); } } // SWAG-BQ75WE 20200620 LHJ Start // for (Report__c report : [ // select Id, Hospital_Reference__c, Department_Class_Ref__c, RecordType.DeveloperName, // OPD_ProductCategory1__c, OPD_ProductCategory2__c, Date__c // from Report__c // where RecordType.DeveloperName in ('OPD', 'SIS') // and Status__c in ('批准', '提交') // and Date__c >= : lastYd // and Date__c < : nextYd // //and Hospital_Reference__c in : hpList // and Department_Class_Ref__c in : dcListMap.values() // ]) { // Id dcid = report.Department_Class_Ref__c; //Account2__c acc = updateAccount.get(dcid); //Date date_c = report.Date__c; //String productCategory1 = report.OPD_ProductCategory1__c; //String productCategory2 = report.OPD_ProductCategory2__c; // if (date_c >= lastYd && date_c < thisYd) { // if (productCategory1 == '3D System' || productCategory2 == '3D System') { // acc.OPD_3D_pre__c += 1; // } // // SWAG-BC832V 保存至客户2 不使用:OPD数(上期):CYF start // if (productCategory1 == 'CYF' || productCategory2 == 'CYF') { // acc.OPD_CYF_pre__c += 1; // } // // SWAG-BC832V 保存至客户2 不使用:OPD数(上期):CYF end // if (productCategory1 == 'NBI-170' || productCategory2 == 'NBI-170') { // acc.OPD_CV_170_pre__c += 1; // } // if (productCategory1 == 'OR Imaging Products' || productCategory2 == 'OR Imaging Products') { // acc.OPD_CV_190_pre__c += 1; // } // if (productCategory1 == 'NBI-290' || productCategory2 == 'NBI-290') { // acc.OPD_CV_290_pre__c += 1; // } // if (productCategory1 == 'EUS' || productCategory2 == 'EUS' || productCategory1 == 'EBUS' || productCategory2 == 'EBUS') { // acc.OPD_EU_ME2_pre__c += 1; // } // if (productCategory1 == 'OTV-S190' || productCategory2 == 'OTV-S190') { // acc.OPD_OTV_S190_pre__c += 1; // } // if (productCategory1 == 'STMS' || productCategory2 == 'STMS') { // acc.OPD_STMS_pre__c += 1; // } // if (productCategory1 == 'ERCP(含导丝)' || productCategory2 == 'ERCP(含导丝)') { // acc.OPD_GW_pre__c += 1; // } // } else if (date_c >= thisYd && date_c < nextYd) { // if (productCategory1 == '3D System' || productCategory2 == '3D System') { // acc.OPD_3D__c += 1; // } // // SWAG-BC832V 保存至客户2 不使用:OPD数(本期):CYF start // if (productCategory1 == 'CYF' || productCategory2 == 'CYF') { // acc.OPD_CYF__c += 1; // } // // SWAG-BC832V 保存至客户2 不使用:OPD数(本期):CYF end // if (productCategory1 == 'NBI-170' || productCategory2 == 'NBI-170') { // acc.OPD_CV_170__c += 1; // } // if (productCategory1 == 'OR Imaging Products' || productCategory2 == 'OR Imaging Products') { // acc.OPD_CV_190__c += 1; // } // if (productCategory1 == 'NBI-290' || productCategory2 == 'NBI-290') { // acc.OPD_CV_290__c += 1; // } // if (productCategory1 == 'EUS' || productCategory2 == 'EUS' || productCategory1 == 'EBUS' || productCategory2 == 'EBUS') { // acc.OPD_EU_ME2__c += 1; // } // if (productCategory1 == 'OTV-S190' || productCategory2 == 'OTV-S190') { // acc.OPD_OTV_S190__c += 1; // } // if (productCategory1 == 'STMS' || productCategory2 == 'STMS') { // acc.OPD_STMS__c += 1; // } // if (productCategory1 == 'ERCP(含导丝)' || productCategory2 == 'ERCP(含导丝)') { // acc.OPD_GW__c += 1; // } // if (productCategory1 == 'OER-AW' || productCategory2 == 'OER-AW') { // acc.OPD_OER_AW__c += 1; // } // if (productCategory1 == 'OTV-S400' || productCategory2 == 'OTV-S400') { // acc.OPD_OTV_S400__c += 1; // } // if (productCategory1 == 'CH-S400-XZ' || productCategory2 == 'CH-S400-XZ') { // acc.OPD_CH_S400_XZ__c += 1; // } // if (productCategory1 == 'UCES-3' || productCategory2 == 'UCES-3') { // acc.OPD_UCES_3__c += 1; // } // } //} for (Report__c report : [ select Id, Hospital_Reference__c, Department_Class_Ref__c, RecordType.DeveloperName, OPD_ProductCategory1__c, OPD_ProductCategory2__c, Date__c, Important_product1__c, Important_product2__c, Important_product3__c, Important_product4__c, Important_product5__c, Important_product6__c, Important_product7__c, Important_product8__c, Important_product9__c, Important_product10__c, Important_product11__c, Important_product12__c, Important_product13__c, Important_product14__c, Important_product15__c, Important_product16__c, Important_product17__c, Important_product18__c, Important_product19__c, Important_product20__c, Important_product21__c, Important_product22__c, Important_product23__c, Important_product24__c, Important_product25__c, Important_product26__c, Important_product27__c, Important_product28__c, Important_product29__c, Important_product30__c from Report__c where RecordType.DeveloperName in ('OPD', 'SIS') and Status__c in ('批准', '提交') and Inportant_Product_total__c = 1 and Date__c >= : thisYd and Date__c < : nextYd and Department_Class_Ref__c in : dcListMap.values() ]) { Id dcid = report.Department_Class_Ref__c; Account2__c dcacc = updateAccount.get(dcid); // String tmpKey = ''; List tempKeyList =new List(); for (Integer i = 1; i <= 30; i++) { if (report.get('Important_product' + i + '__c') == 1) { tempKeyList.add(String.ValueOf(i)); } } for (Integer i = 0; i < tempKeyList.size(); i++) { System.debug('======0623======dcid='+ dcid); System.debug('======0623======i='+ i); setOpdCount(dcacc, tempKeyList[i], 1, OldAccount2, depToOtherDepAcc2Map , updateAccount); } } // LHJ SWAG-BQ75WE 20200620 End // 医療従事者 TTC参加次数,HCP for (Contact cont : [ select Id, Number_of_participant_for_TTC__c, HCP__c, Strategic_dept_Class__r.ParentId, Strategic_dept_Class__c from Contact where Strategic_dept_Class__r.ParentId in : hpList and Strategic_dept_Class__c in : dcListMap.values() ]) { Id hpid = cont.Strategic_dept_Class__r.ParentId; Account2__c hpacc = updateAccount.get(hpid); Id dcid = cont.Strategic_dept_Class__c; Account2__c dcacc = updateAccount.get(dcid); Decimal decTTc = cont.Number_of_participant_for_TTC__c == null ? 0 : cont.Number_of_participant_for_TTC__c; String strHCP = cont.HCP__c == null ? '' : cont.HCP__c; setContactCount(hpacc, decTTc, strHCP); setContactCount(dcacc, decTTc, strHCP); } // SWAG-BD24SU 检索对应的保有设备,赋值到战略科室的客户2对应的发货数 start for (Asset Ast : [ select Id, Department_Class__c, Important_product1__c, Important_product2__c, Important_product3__c, Important_product4__c, Important_product5__c, Important_product6__c, Important_product7__c, Important_product8__c, Important_product9__c, Important_product10__c, Important_product11__c, Important_product12__c, Important_product13__c, Important_product14__c, Important_product15__c, Important_product16__c, Important_product17__c, Important_product18__c, Important_product19__c, Important_product20__c, Important_product21__c, Important_product22__c, Important_product23__c, Important_product24__c, Important_product25__c, Important_product26__c, Important_product27__c, Important_product28__c, Important_product29__c, Important_product30__c // WLIG-BTNDLX start , AssetPacking_list__c //WLIG-BTNDLX end //WLIG-BXT9DQ 【委托】【重要】目标客户统计中的“发货数”需求 精琢技术 2021/02/26 start ,Shipping_Finished_Day_Func__c //WLIG-BXT9DQ 【委托】【重要】目标客户统计中的“发货数”需求 精琢技术 2021/02/26 end from Asset //注释原逻辑 替换为询价上的20.最新发货日 start //WLIG-BXT9DQ 【委托】【重要】目标客户统计中的“发货数”需求 精琢技术 2021/02/26 start //SWAG-C66D25 恢复为发货日,另外增加手工除外的条件 Start where Product2.Important_product__c = true and Posting_Date__c >= :thisYd and Posting_Date__c < :nextYd and Department_Class__c in : dcListMap.values() and RecordTypeID__c = '01210000000kOPMAA2' and Account.parent.parent.Management_Code__c != '9999999' and Information_From__c != '手动输入' // where Product2.Important_product__c = true // and Shipping_Finished_Day_Func__c // >= :thisYd // and Shipping_Finished_Day_Func__c < :nextYd // and Department_Class__c in : dcListMap.values() // and RecordTypeID__c = '01210000000kOPMAA2' // and Account.parent.parent.Management_Code__c != '9999999' //注释原逻辑 替换为询价上的20.最新发货日 end ////SWAG-C66D25 恢复为发货日,另外增加手工除外的条件 End //WLIG-BXT9DQ 【委托】【重要】目标客户统计中的“发货数”需求 精琢技术 2021/02/26 end ]) { Id dcid = Ast.Department_Class__c; Account2__c dcacc = updateAccount.get(dcid); String tmpKey = ''; // WLIG-BTNDLX start Decimal tmpCnt = Ast.AssetPacking_list__c == null ? 1: Ast.AssetPacking_list__c ; // 原逻辑 //Decimal tmpCnt = 1; // WLIG-BTNDLX end for (Integer i = 1; i <= 30; i++) { if (Ast.get('Important_product' + i + '__c') == true) { tmpKey = '' + i; break; } } // SWAG-BQ75WE update by vivek 2020/06/11 start // setDeliveryCount(dcacc, tmpKey, tmpCnt, OldAccount2, HPtoGIAcc2Map , updateAccount); setDeliveryCount(dcacc, tmpKey, tmpCnt, OldAccount2, depToOtherDepAcc2Map , updateAccount); // SWAG-BQ75WE update by vivek 2020/06/11 end } // SWAG-BD24SU 检索对应的保有设备,赋值到战略科室的客户2对应的发货数 end System.debug('======thisYd'+thisYd); System.debug('======nextYd'+nextYd); //Map keyMap = new Map(); for (OpportunityLineItem oli : [ select Id, Quantity, OpportunityId, Opportunity.Department_Class__c, Opportunity.Contract_recognized_day_1__c, Opportunity.Close_Forecasted_Date__c, Opportunity.Competitor__c, OCM_Sales_Forecast_Product1_Number__c, OCM_Sales_Forecast_Product2_Number__c, OCM_Sales_Forecast_Product3_Number__c, OCM_Sales_Forecast_Product4_Number__c, OCM_Sales_Forecast_Product5_Number__c, OCM_Sales_Forecast_Product6_Number__c, OCM_Sales_Forecast_Product7_Number__c, OCM_Sales_Forecast_Product8_Number__c, OCM_Sales_Forecast_Product9_Number__c, OCM_Sales_Forecast_Product10_Number__c, OCM_Sales_Forecast_Product11_Number__c, OCM_Sales_Forecast_Product12_Number__c, OCM_Sales_Forecast_Product13_Number__c, OCM_Sales_Forecast_Product14_Number__c, OCM_Sales_Forecast_Product15_Number__c, OCM_Sales_Forecast_Product16_Number__c, OCM_Sales_Forecast_Product17_Number__c, OCM_Sales_Forecast_Product18_Number__c, OCM_Sales_Forecast_Product19_Number__c, OCM_Sales_Forecast_Product20_Number__c, OCM_Sales_Forecast_Product21_Number__c, OCM_Sales_Forecast_Product22_Number__c, OCM_Sales_Forecast_Product23_Number__c, OCM_Sales_Forecast_Product24_Number__c, OCM_Sales_Forecast_Product25_Number__c, OCM_Sales_Forecast_Product26_Number__c, OCM_Sales_Forecast_Product27_Number__c, OCM_Sales_Forecast_Product28_Number__c, OCM_Sales_Forecast_Product29_Number__c, OCM_Sales_Forecast_Product30_Number__c from OpportunityLineItem where PricebookEntry.Product2.Important_product__c = true and Opportunity.order_Date_For_Report__c >= :thisYd and Opportunity.order_Date_For_Report__c < :nextYd and Opportunity.StageName__c in ('注残', '发货', '完毕') and Opportunity.Department_Class__c in : dcListMap.values() ]) { Id dcid = oli.Opportunity.Department_Class__c; Account2__c dcacc = updateAccount.get(dcid); String tmpKey = ''; Decimal tmpCnt = oli.Quantity == null ? 0 : oli.Quantity; for (Integer i = 1; i <= 30; i++) { if (oli.get('OCM_Sales_Forecast_Product' + i + '_Number__c') == 'true') { tmpKey = '' + i; break; } } //String cntKey = oli.OpportunityId + '_' + tmpKey; //if (keyMap.containsKey(cntKey) == false) { //keyMap.put(cntKey, cntKey); // 2020-06-12 SWAG-BQ75WE 额外传递depToOtherDepAcc2Map和updateAccount start // setOrderCount(dcacc, tmpKey, tmpCnt, OldAccount2); setOrderCount(dcacc, tmpKey, tmpCnt, OldAccount2, depToOtherDepAcc2Map , updateAccount); // 2020-06-12 SWAG-BQ75WE 额外传递depToOtherDepAcc2Map和updateAccount end //} } //Map keyMap2 = new Map(); for (OpportunityLineItem oli : [ select Id, Quantity, OpportunityId, Opportunity.Department_Class__c, Opportunity.Contract_recognized_day_1__c, Opportunity.Close_Forecasted_Date__c, Opportunity.Competitor__c, OCM_Sales_Forecast_Product1_Number__c, OCM_Sales_Forecast_Product2_Number__c, OCM_Sales_Forecast_Product3_Number__c, OCM_Sales_Forecast_Product4_Number__c, OCM_Sales_Forecast_Product5_Number__c, OCM_Sales_Forecast_Product6_Number__c, OCM_Sales_Forecast_Product7_Number__c, OCM_Sales_Forecast_Product8_Number__c, OCM_Sales_Forecast_Product9_Number__c, OCM_Sales_Forecast_Product10_Number__c, OCM_Sales_Forecast_Product11_Number__c, OCM_Sales_Forecast_Product12_Number__c, OCM_Sales_Forecast_Product13_Number__c, OCM_Sales_Forecast_Product14_Number__c, OCM_Sales_Forecast_Product15_Number__c, OCM_Sales_Forecast_Product16_Number__c, OCM_Sales_Forecast_Product17_Number__c, OCM_Sales_Forecast_Product18_Number__c, OCM_Sales_Forecast_Product19_Number__c, OCM_Sales_Forecast_Product20_Number__c, OCM_Sales_Forecast_Product21_Number__c, OCM_Sales_Forecast_Product22_Number__c, OCM_Sales_Forecast_Product23_Number__c, OCM_Sales_Forecast_Product24_Number__c, OCM_Sales_Forecast_Product25_Number__c, OCM_Sales_Forecast_Product26_Number__c, OCM_Sales_Forecast_Product27_Number__c, OCM_Sales_Forecast_Product28_Number__c, OCM_Sales_Forecast_Product29_Number__c, OCM_Sales_Forecast_Product30_Number__c from OpportunityLineItem where PricebookEntry.Product2.Important_product__c = true and Opportunity.Shipping_Date_For_Report__c >= :thisYd and Opportunity.StageName__c = '询价' and Opportunity.Shipping_Date_For_Report__c < :nextYd and Opportunity.Competitor__c in ('A1', 'A', 'B', 'C') and Opportunity.Department_Class__c in : dcListMap.values() ]) { Id dcid = oli.Opportunity.Department_Class__c; Account2__c dcacc = updateAccount.get(dcid); String tmpKey = ''; Decimal tmpCnt = oli.Quantity == null ? 0 : oli.Quantity; for (Integer i = 1; i <= 30; i++) { if (oli.get('OCM_Sales_Forecast_Product' + i + '_Number__c') == 'true') { tmpKey = '' + i; break; } } //String cntKey = oli.OpportunityId + '_' + tmpKey; //if (keyMap2.containsKey(cntKey) == false) { //keyMap2.put(cntKey, cntKey); // 2020-06-12 SWAG-BQ75WE 额外传递depToOtherDepAcc2Map和updateAccount start // setOppCount(dcacc, tmpKey, tmpCnt, OldAccount2); setOppCount(dcacc, tmpKey, tmpCnt, OldAccount2, depToOtherDepAcc2Map , updateAccount); // 2020-06-12 SWAG-BQ75WE 额外传递depToOtherDepAcc2Map和updateAccount end //} } //20200825 ljh SWAG-BRY6PF add start for (AggregateResult oli:[select Rental_Apply__c,Product2__c,Rental_Apply__r.Strategic_dept__c from Rental_Apply_Equipment_Set__c where //IsOPD_Account__c = 1 AND Rental_Apply__r.Strategic_dept__c in : dcListMap.values() AND Demo_purpose1__c = '产品试用' and Bollow_Date__c >= :thisYd and Bollow_Date__c < :nextYd group by Rental_Apply__c,Product2__c,Rental_Apply__r.Strategic_dept__c ]) { Id dcid = ID.valueOf(String.valueOf(oli.get('Strategic_dept__c'))); Account2__c dcacc = updateAccount.get(dcid); String tmpKey = ''; String tempProduct2 = String.valueOf(oli.get('Product2__c')); if(tempProduct2 != null&&String.isNotBlank(tempProduct2)){ tmpKey = tempProduct2.substring(0,2); } setRentalCount(dcacc, tmpKey, 1, OldAccount2, depToOtherDepAcc2Map , updateAccount); } //20200825 ljh SWAG-BRY6PF add end //SWAG-C9WCE5 战略科室和目标客户设定页面增加字段 lt 20211228 start //Map<战略科室,数量> (CountHostsNumber) Map CountHostsMap = new Map(); //所有主机 Map CountRivalHostsMap = new Map(); //对手主机 for(Asset chn : [ Select Id, Department_Class__c, Product2.ProductClass__c, Product2.Brand_Name__c, Product2.ProductCategory__c From Asset Where ((Product2.ProductClass__c = '主机' ) Or (Product2.ProductClass__c = '能量' And (Product2.ProductCategory__c = 'STMS' Or Product2.ProductCategory__c = 'ESG-400' Or Product2.ProductCategory__c = '主机'))) And Department_Class__c in : dcListMap.values() ]){ //所有主机数量 if(CountHostsMap.containsKey(chn.Department_Class__c)){ CountHostsMap.put(chn.Department_Class__c, CountHostsMap.get(chn.Department_Class__c)+1); }else{ CountHostsMap.put(chn.Department_Class__c, 1); } //对手主机数量 System.debug('主机厂商:' + chn.Product2.Brand_Name__c); System.debug('判断是否奥林巴斯主机:' + (!'奥林巴斯'.equals(chn.Product2.Brand_Name__c)) + '|' + (chn.Product2.Brand_Name__c != '奥林巴斯')); if(!'奥林巴斯'.equals(chn.Product2.Brand_Name__c)){ if(CountRivalHostsMap.containsKey(chn.Department_Class__c)){ CountRivalHostsMap.put(chn.Department_Class__c, CountRivalHostsMap.get(chn.Department_Class__c)+1); }else{ CountRivalHostsMap.put(chn.Department_Class__c, 1); } } Id dcid = chn.Department_Class__c; //战略科室id Account2__c acc = updateAccount.get(dcid); //战略科室对应得 客户2 if(acc != null){ Integer CountHostsNumber = CountHostsMap.containsKey(dcid)?CountHostsMap.get(dcid):0; Integer CountRivalHostsNumber = CountRivalHostsMap.containsKey(dcid)?CountRivalHostsMap.get(dcid):0; acc.AllHostsNumber__c = CountHostsNumber; //所有主机数 acc.AllHostsNumber_first__c = CountHostsNumber; //所有主机数(期初) acc.RivalHostsNumber__c = CountRivalHostsNumber; //对手主机数 acc.RivalHostsNumber_first__c = CountRivalHostsNumber; //对手主机数(期初) } } //SWAG-C9WCE5 战略科室和目标客户设定页面增加字段 lt 20211228 end StaticParameter.EscapeNFM001Trigger = true; StaticParameter.EscapeNFM001AgencyContractTrigger = true; // for (Account2__c acc : updateAccount.values()) { // System.debug(acc); // } update updateAccount.values(); } global void finish(Database.BatchableContext BC) { // 今回はやることないです } // batch集計の基準日 public static Date getTargetDay() { Date targetDay2 = null; { Date targetDay = Date.today(); if (targetDay.month() == 4 && targetDay.day() <= intYearDelayDay) { targetDay2 = Date.valueOf(targetDay.year() + '-4-1').addDays(-1); } else { targetDay2 = targetDay.addDays(-1); } } return targetDay2; } private void initAccountCount(Account2__c acc, Integer targetmonth) { // if (acc.Id == '0011000000V9OU4') { // BatchIF_Log__c iflog = new BatchIF_Log__c(); // iflog.Type__c = 'RollupToHPBatch'; // iflog.Log__c = '0011000000V9OU4 initAccountCount(' + targetmonth + ')\n'; // insert iflog; // } acc.Latest_Proposal_document_Submit_day__c = null; acc.Proposal_Submit_Status__c = null; acc.SpecialAsset_CV_Count__c = 0; acc.SpecialAsset_CV_Other_Count__c = 0; acc.SpecialAsset_GIF_Count__c = 0; acc.SpecialAsset_OTV_Count__c = 0; acc.JF_TJF_scope_count__c = 0; acc.USG_400_count__c = 0; acc.SpecialAsset_C3_Electronic_Mirror__c = 0; acc.SpecialAsset_C3_Fiber_Mirror__c = 0; acc.CV_290_Count__c = 0; acc.CV_260SL_Count__c = 0; acc.CV_260_Count__c = 0; acc.CV_240_Other_Count__c = 0; acc.CV_Other_Count__c = 0; acc.D3_System_Count__c = 0; acc.CV_190_Count__c = 0; acc.OTV_S190_Count__c = 0; acc.OTV_S7Pro_Count__c = 0; acc.CV_180_Count__c = 0; acc.OTV_S7_Count__c = 0; acc.OTV_S6_Count__c = 0; acc.OTV_Other_Count__c = 0; acc.SSG2_Count__c = 0; acc.ESG_400_Count__c = 0; acc.G400_Count__c = 0; acc.HD_EndoEYE_Count__c = 0; acc.SD_EndoEYE_Count__c = 0; acc.Video_URF_Count__c = 0; acc.Video_CYF_Count__c = 0; acc.Video_ENF_Count__c = 0; acc.Competitor_Count__c = 0; acc.Competitor_Count_SP__c = 0; acc.Energy_Processor_Count__c = 0; acc.Energy_Processor_Count_SP__c = 0; acc.Other_Competitor_Product_Count__c = 0; //20200825 ljh SWAG-BRY6PF add start acc.Rental_Cnt_CV290__c = 0; acc.Rental_Cnt_290MiroGI__c = 0; acc.Rental_Cnt_290MiroGI_Plus__c = 0; acc.Rental_Cnt_290MiroGI_CF__c = 0; acc.Rental_Cnt_GFUCT260__c = 0; acc.Rental_Cnt_EUME2__c = 0; acc.Rental_Cnt_290MiroBF__c = 0; acc.Rental_Cnt_OTVS400__c = 0; acc.Rental_Cnt_OTVS300__c = 0; acc.Rental_Cnt_CV170__c = 0; acc.Rental_Cnt_CV190__c = 0; acc.Rental_Cnt_OTVS190__c = 0; acc.Rental_Cnt_ESG400__c = 0; acc.Rental_Cnt_USG400__c = 0; acc.Rental_Cnt_TB__c = 0; //SWAG-BSC5WP you-20201021 start acc.Asset_Cnt_290MiroBF__c = 0; acc.Asset_Cnt_290MiroGI__c = 0; acc.Asset_Cnt_290MiroGI_CF__c = 0; acc.Asset_Cnt_290MiroGI_Plus__c = 0; acc.Asset_Cnt_CV170__c = 0; acc.Asset_Cnt_CV190__c = 0; acc.Asset_Cnt_CV290__c = 0; acc.Asset_Cnt_ESG400__c = 0; acc.Asset_Cnt_EUME2__c = 0; acc.Asset_Cnt_GFUCT260__c = 0; acc.Asset_Cnt_OTVS190__c = 0; acc.Asset_Cnt_OTVS300__c = 0; acc.Asset_Cnt_OTVS400__c = 0; acc.Asset_Cnt_TB__c = 0; acc.Asset_Cnt_USG400__c = 0; //SWAG-BSC5WP you-20201021 end //20220601 WLIG-CEWDWS you start acc.Asset_Cnt_TB_0520__c = 0; acc.Asset_Cnt_TB_0535__c = 0; //20220601 WLIG-CEWDWS you end //20200825 ljh SWAG-BRY6PF add start for (Integer columnNameInt = targetmonth + intMonth; columnNameInt <= targetmonth; columnNameInt++) { String columnNameStr = columnNameInt + '__c'; if (columnNameInt <= 0) { columnNameStr = (columnNameInt + 12) + '__c'; } acc.put('This_year_inspection_times' + columnNameStr, 0); acc.put('This_year_inspection_count' + columnNameStr, 0); } acc.AVG_Elapsed_day_from_Repair__c = 0; acc.AVG_Elapsed_day_from_Repair2__c = 0; acc.SUM_Repair_List_Price__c = 0; acc.SUM_Repair_Billing_Amount__c = 0; acc.AVG_Elapsed_day_from_Repair_Lastyear__c = 0; acc.AVG_Elapsed_day_from_Repair2_Lastyear__c = 0; acc.SUM_Repair_List_Price_Lastyear__c = 0; acc.SUM_Repair_Billing_Amount_Lastyear__c = 0; acc.SUM_Unpaid_Amount__c = 0; acc.RANK_A_tax_HP__c = 0; acc.RANK_B_tax_HP__c = 0; acc.RANK_C_tax_HP__c = 0; acc.RANK_D_tax_HP__c = 0; acc.RANK_E_tax_HP__c = 0; acc.Forecast_Amount_HP__c = 0; acc.ShippedAmount_HP__c = 0; acc.Opp_Actual_ThousandY__c = 0; acc.BO_Forecast_ThousandY__c = 0; acc.OP_ThousandY__c = 0; acc.Opp_Forecast_ThousandY__c = 0; acc.Opportunity_ThousandY__c = 0; acc.Amount_Without_Tax_Thousand__c = 0; //20230327 DB202303372329 you start acc.OP_ThousandY_Order__c = 0; acc.OrderThisYearQY__c =0; acc.Opportunity__c =0; //20230327 DB202303372329 you end //20220111 SWAG-C8MBB6 加7.询价 lt start acc.AllOP_ThousandY__c = 0; //20220111 SWAG-C8MBB6 加7.询价 lt end //20230222 you start acc.LostPrices__c = 0; acc.Dealer_Final_Price__c = 0; acc.HospitalTransactionAmount__c = 0; //20230222 you end acc.Important_product1__c = 0; acc.Important_product2__c = 0; acc.Important_product3__c = 0; acc.Important_product4__c = 0; acc.Important_product5__c = 0; acc.Important_product6__c = 0; acc.Important_product7__c = 0; acc.Important_product8__c = 0; acc.Important_product9__c = 0; acc.Important_product10__c = 0; acc.Important_product11__c = 0; acc.Important_product12__c = 0; acc.Important_product13__c = 0; acc.Important_product14__c = 0; acc.Important_product15__c = 0; acc.Important_product16__c = 0; acc.Important_product17__c = 0; acc.Important_product18__c = 0; acc.Important_product19__c = 0; acc.Important_product20__c = 0; acc.CDS_training_number_this_year__c = 0; acc.ThisYear1__c = 0; acc.ThisYear2__c = 0; acc.ThisYear3__c = 0; acc.ThisYear4__c = 0; acc.ThisYear5__c = 0; acc.ThisYear6__c = 0; acc.ThisYear7__c = 0; acc.ThisYear8__c = 0; acc.ThisYear9__c = 0; acc.ThisYear10__c = 0; acc.ThisYear11__c = 0; acc.ThisYear12__c = 0; acc.ThisYear1_FSE__c = 0; acc.ThisYear2_FSE__c = 0; acc.ThisYear3_FSE__c = 0; acc.ThisYear4_FSE__c = 0; acc.ThisYear5_FSE__c = 0; acc.ThisYear6_FSE__c = 0; acc.ThisYear7_FSE__c = 0; acc.ThisYear8_FSE__c = 0; acc.ThisYear9_FSE__c = 0; acc.ThisYear10_FSE__c = 0; acc.ThisYear11_FSE__c = 0; acc.ThisYear12_FSE__c = 0; // SWAG-BBBAKG start 能量拜访数初始化 start acc.ThisYear1_Eng__c = 0; acc.ThisYear2_Eng__c = 0; acc.ThisYear3_Eng__c = 0; acc.ThisYear4_Eng__c = 0; acc.ThisYear5_Eng__c = 0; acc.ThisYear6_Eng__c = 0; acc.ThisYear7_Eng__c = 0; acc.ThisYear8_Eng__c = 0; acc.ThisYear9_Eng__c = 0; acc.ThisYear10_Eng__c = 0; acc.ThisYear11_Eng__c = 0; acc.ThisYear12_Eng__c = 0; // SWAG-BBBAKG start 能量拜访数初始化 end acc.DoNTCHospital_ThisYear1__c = 0; acc.DoNTCHospital_ThisYear2__c = 0; acc.DoNTCHospital_ThisYear3__c = 0; acc.DoNTCHospital_ThisYear4__c = 0; acc.DoNTCHospital_ThisYear5__c = 0; acc.DoNTCHospital_ThisYear6__c = 0; acc.DoNTCHospital_ThisYear7__c = 0; acc.DoNTCHospital_ThisYear8__c = 0; acc.DoNTCHospital_ThisYear9__c = 0; acc.DoNTCHospital_ThisYear10__c = 0; acc.DoNTCHospital_ThisYear11__c = 0; acc.DoNTCHospital_ThisYear12__c = 0; acc.DoOPDHospital_ThisYear1__c = 0; acc.DoOPDHospital_ThisYear2__c = 0; acc.DoOPDHospital_ThisYear3__c = 0; acc.DoOPDHospital_ThisYear4__c = 0; acc.DoOPDHospital_ThisYear5__c = 0; acc.DoOPDHospital_ThisYear6__c = 0; acc.DoOPDHospital_ThisYear7__c = 0; acc.DoOPDHospital_ThisYear8__c = 0; acc.DoOPDHospital_ThisYear9__c = 0; acc.DoOPDHospital_ThisYear10__c = 0; acc.DoOPDHospital_ThisYear11__c = 0; acc.DoOPDHospital_ThisYear12__c = 0; acc.DoOPDHospital_ThisYear1_FSE__c = 0; acc.DoOPDHospital_ThisYear2_FSE__c = 0; acc.DoOPDHospital_ThisYear3_FSE__c = 0; acc.DoOPDHospital_ThisYear4_FSE__c = 0; acc.DoOPDHospital_ThisYear5_FSE__c = 0; acc.DoOPDHospital_ThisYear6_FSE__c = 0; acc.DoOPDHospital_ThisYear7_FSE__c = 0; acc.DoOPDHospital_ThisYear8_FSE__c = 0; acc.DoOPDHospital_ThisYear9_FSE__c = 0; acc.DoOPDHospital_ThisYear10_FSE__c = 0; acc.DoOPDHospital_ThisYear11_FSE__c = 0; acc.DoOPDHospital_ThisYear12_FSE__c = 0; acc.Service_contract_active_number_HP__c = 0; acc.Sum_Number_of_participant_for_TTC__c = 0; acc.Academic_HCP_Count__c = 0; acc.General_HCP_Count__c = 0; acc.Product_HCP_Count__c = 0; acc.OPD_3D_pre__c = 0; acc.OPD_CV_170_pre__c = 0; acc.OPD_CV_190_pre__c = 0; acc.OPD_CV_290_pre__c = 0; acc.OPD_EU_ME2_pre__c = 0; acc.OPD_OTV_S190_pre__c = 0; acc.OPD_STMS_pre__c = 0; acc.OPD_GW_pre__c = 0; // SWAG-BC832V 初始化 CYF 为 0 start acc.OPD_CYF_pre__c = 0; acc.OPD_CYF__c = 0; // SWAG-BC832V 初始化 CYF 为 0 end acc.OPD_3D__c = 0; acc.OPD_CV_170__c = 0; acc.OPD_CV_190__c = 0; acc.OPD_CV_290__c = 0; acc.OPD_EU_ME2__c = 0; acc.OPD_OTV_S190__c = 0; acc.OPD_STMS__c = 0; acc.OPD_GW__c = 0; acc.OPD_OER_AW__c = 0; acc.OPD_OTV_S400__c = 0; acc.OPD_CH_S400_XZ__c = 0; acc.OPD_UCES_3__c = 0; acc.Order_cnt_290Miro__c = 0; acc.Order_cnt_3D__c = 0; acc.Order_cnt_CHS400XZ__c = 0; acc.Order_cnt_CV170__c = 0; acc.Order_cnt_CV190__c = 0; acc.Order_cnt_CV290__c = 0; acc.Order_cnt_EUME2__c = 0; acc.Order_cnt_OERAW__c = 0; acc.Order_cnt_OTVS190__c = 0; acc.Order_cnt_OTVS400__c = 0; acc.Order_cnt_UCES3__c = 0; acc.Order_cnt_USG400__c = 0; acc.Order_cnt_GW__c = 0; // SWAG-BD24SU 初始化发货数 start acc.Delivery_cnt_3D__c = 0; acc.Delivery_cnt_CV290__c = 0; acc.Delivery_cnt_CYF__c = 0; acc.Delivery_cnt_EUME2__c = 0; acc.Delivery_cnt_OERAW__c = 0; acc.Delivery_cnt_OTVS400__c = 0; acc.Delivery_cnt_USG400__c = 0; acc.Delivery_cnt_CV170__c = 0; acc.Delivery_cnt_CV190__c = 0; acc.Delivery_cnt_OTVS190__c = 0; // SWAG-BD24SU 初始化发货数 end // SWAG-BC832V 初始化 CYF 为 0 start acc.Order_cnt_CYF__c = 0; acc.Opp_cnt_CYF__c = 0; // SWAG-BC832V 初始化 CYF 为 0 end acc.Opp_cnt_290Miro__c = 0; acc.Opp_cnt_3D__c = 0; acc.Opp_cnt_CHS400XZ__c = 0; acc.Opp_cnt_CV170__c = 0; acc.Opp_cnt_CV190__c = 0; acc.Opp_cnt_CV290__c = 0; acc.Opp_cnt_EUME2__c = 0; acc.Opp_cnt_OERAW__c = 0; acc.Opp_cnt_OTVS190__c = 0; acc.Opp_cnt_OTVS400__c = 0; acc.Opp_cnt_UCES3__c = 0; acc.Opp_cnt_USG400__c = 0; acc.Opp_cnt_GW__c = 0; // SWAG-BQ75WE 20200609 Start acc.Opp_cnt_290MiroBF__c = 0; acc.Opp_cnt_290MiroGI__c = 0; acc.Opp_cnt_290MiroGI_Plus__c = 0; acc.Opp_cnt_290MiroGI_CF__c = 0; acc.Opp_cnt_GFUCT260__c = 0; acc.Opp_cnt_OTVS300__c = 0; acc.Opp_cnt_ESG400__c = 0; acc.Opp_cnt_TB__c = 0; //20220601 WLIG-CEWDWS you start acc.Opp_cnt_TB_0520__c = 0; acc.Opp_cnt_TB_0535__c = 0; //20220601 WLIG-CEWDWS you end acc.Delivery_cnt_290MiroBF__c = 0; acc.Delivery_cnt_290MiroGI__c = 0; acc.Delivery_cnt_290MiroGI_Plus__c = 0; acc.Delivery_cnt_290MiroGI_CF__c = 0; acc.Delivery_cnt_GFUCT260__c = 0; acc.Delivery_cnt_OTVS300__c = 0; acc.Delivery_cnt_ESG400__c = 0; acc.Delivery_cnt_TB__c = 0; //20220601 WLIG-CEWDWS you start acc.Delivery_cnt_TB_0520__c = 0; acc.Delivery_cnt_TB_0535__c = 0; //20220601 WLIG-CEWDWS you end acc.Order_cnt_290MiroBF__c = 0; acc.Order_cnt_290MiroGI__c = 0; acc.Order_cnt_290MiroGI_Plus__c = 0; acc.Order_cnt_290MiroGI_CF__c = 0; acc.Order_cnt_GFUCT260__c = 0; acc.Order_cnt_OTVS300__c = 0; acc.Order_cnt_ESG400__c = 0; acc.Order_cnt_TB__c = 0; //20220601 WLIG-CEWDWS you start acc.Order_cnt_TB_0520__c = 0; acc.Order_cnt_TB_0535__c = 0; //20220601 WLIG-CEWDWS you end acc.OPD_USG400__c = 0; acc.OPD_OTV_S400__c = 0; acc.OPD_290Miro_BF__c = 0; acc.OPD_290Miro_GI__c = 0; acc.OPD_290Miro_GICF__c = 0; acc.OPD_290Miro_GIPlus__c = 0; acc.OPD_GFUCT260__c = 0; acc.OPD_OTV_S300__c = 0; acc.OPD_ESG400__c = 0; acc.OPD_TB__c = 0; // SWAG-BQ75WE 20200609 End //20220601 WLIG-CEWDWS you start acc.OPD_TB_0520__c = 0; acc.OPD_TB_0535__c = 0; //20220601 WLIG-CEWDWS you end } private void setTimesAndCounts(Account2__c acc, Integer iMonth, Decimal times, Decimal counts) { acc.put('This_year_inspection_times' + iMonth + '__c', (Decimal) acc.get('This_year_inspection_times' + iMonth + '__c') + times); acc.put('This_year_inspection_count' + iMonth + '__c', (Decimal) acc.get('This_year_inspection_count' + iMonth + '__c') + counts); } private void setAssetCategoryCount(Account2__c acc, String strDCL, String strC3, String strC4, String strC5, Integer cntId) { // if (acc.Id == '0011000000V9OU4') { // BatchIF_Log__c iflog = new BatchIF_Log__c(); // iflog.Type__c = 'RollupToHPBatch'; // iflog.Log__c = '0011000000V9OU4 ' + strDCL + ' start\n'; // iflog.Log__c += 'strC3=' + strC3 + '\n'; // iflog.Log__c += 'strC4=' + strC4 + '\n'; // iflog.Log__c += 'strC5=' + strC5 + '\n'; // iflog.Log__c += 'cntId=' + cntId + '\n'; // insert iflog; // } if ((strDCL == '消化科' || strDCL == '呼吸科') && strC4 == 'CV') { acc.SpecialAsset_CV_Count__c += cntId; } if (!(strDCL == '消化科' || strDCL == '呼吸科') && strC4 == 'CV') { acc.SpecialAsset_CV_Other_Count__c += cntId; } if (strC3 == '电子镜' && strC4 == 'GIF') { acc.SpecialAsset_GIF_Count__c += cntId; } if (strC3 == '电子镜') { acc.SpecialAsset_C3_Electronic_Mirror__c += cntId; } if (strC3 == '纤维镜') { acc.SpecialAsset_C3_Fiber_Mirror__c += cntId; } if (strC4 == 'OTV') { acc.SpecialAsset_OTV_Count__c += cntId; } if (strC4 == 'JF') { acc.JF_TJF_scope_count__c += cntId; } if (strC5 == 'USG-400') { acc.USG_400_count__c += cntId; } if (strC4 == 'CV' && strC5 == '290系列') { acc.CV_290_Count__c += cntId; } if (strC4 == 'CV' && strC5 == '260SL系列') { acc.CV_260SL_Count__c += cntId; } if (strC4 == 'CV' && strC5 == '260系列') { acc.CV_260_Count__c += cntId; } if (strC4 == 'CV' && (strC5 == '240系列' || strC5 == '200系列其他')) { acc.CV_240_Other_Count__c += cntId; } if (strC4 == 'CV' && !(strC5 == '290系列' || strC5 == '260SL系列' || strC5 == '260系列' || strC5 == '240系列' || strC5 == '200系列其他')) { acc.CV_Other_Count__c += cntId; } if (strC4 == 'CV' && strC5 == '190系列') { acc.CV_190_Count__c += cntId; } if (strC4 == 'OTV' && strC5 == 'OTV-S190系列') { acc.OTV_S190_Count__c += cntId; } if (strC4 == 'OTV' && strC5 == 'OTV-S7Pro系列') { acc.OTV_S7Pro_Count__c += cntId; } if (strC4 == 'CV' && strC5 == '180系列') { acc.CV_180_Count__c += cntId; } if (strC4 == 'OTV' && strC5 == 'OTV-S7系列') { acc.OTV_S7_Count__c += cntId; } if (strC4 == 'OTV' && strC5 == 'OTV-S6系列') { acc.OTV_S6_Count__c += cntId; } if (strC4 == 'OTV' && !(strC5 == 'OTV-S190系列' || strC5 == 'OTV-S7Pro系列' || strC5 == 'OTV-S7系列' || strC5 == 'OTV-S6系列')) { acc.OTV_Other_Count__c += cntId; } if (strC3 == '能量主机' && strC5 == 'G2') { acc.SSG2_Count__c += cntId; } if (strC3 == '能量主机' && strC5 == 'G400') { acc.G400_Count__c += cntId; } if (strC3 == '电子腹腔镜' && strC5 == 'HD EndoEYE') { acc.HD_EndoEYE_Count__c += cntId; } if (strC3 == '电子腹腔镜' && strC5 == 'SD EndoEYE') { acc.SD_EndoEYE_Count__c += cntId; } if (strC3 == '电子镜' && strC4 == 'URF') { acc.Video_URF_Count__c += cntId; } if (strC3 == '电子镜' && strC4 == 'CYF') { acc.Video_CYF_Count__c += cntId; } if (strC3 == '电子镜' && strC4 == 'ENF') { acc.Video_ENF_Count__c += cntId; } if ((strDCL == '消化科' || strDCL == '呼吸科') && strC3 == '主机' && strC5 == '竞争对手') { acc.Competitor_Count__c += cntId; } if (!(strDCL == '消化科' || strDCL == '呼吸科') && strC3 == '主机' && strC5 == '竞争对手') { acc.Competitor_Count_SP__c += cntId; } if ((strDCL == '消化科' || strDCL == '呼吸科') && strC3 == '能量主机' && strC5 == '竞争对手') { acc.Energy_Processor_Count__c += cntId; } if (!(strDCL == '消化科' || strDCL == '呼吸科') && strC3 == '能量主机' && strC5 == '竞争对手') { acc.Energy_Processor_Count_SP__c += cntId; } if (strC5 == '竞争对手' && !(strC3 == '主机' || strC3 == '能量主机')) { acc.Other_Competitor_Product_Count__c += cntId; } // if (acc.Id == '0011000000V9OU4') { // BatchIF_Log__c iflog = new BatchIF_Log__c(); // iflog.Type__c = 'RollupToHPBatch'; // iflog.Log__c = '0011000000V9OU4 ' + strDCL + ' end\n'; // iflog.Log__c += 'Competitor_Count__c=' + acc.Competitor_Count__c + '\n'; // iflog.Log__c += 'Competitor_Count_SP__c=' + acc.Competitor_Count_SP__c + '\n'; // iflog.Log__c += 'Energy_Processor_Count__c=' + acc.Energy_Processor_Count__c + '\n'; // iflog.Log__c += 'Energy_Processor_Count_SP__c=' + acc.Energy_Processor_Count_SP__c + '\n'; // iflog.Log__c += 'Other_Competitor_Product_Count__c=' + acc.Other_Competitor_Product_Count__c + '\n'; // insert iflog; // } } private void setAssetPcodeCount(Account2__c acc, String strPcode, Integer cntId) { if (strPcode == 'N4491360') { acc.D3_System_Count__c += cntId; } if (strPcode == 'WB91051C') { acc.ESG_400_Count__c += cntId; } } // SWAG-BBBAKG start 保存能量的拜访情况 private void setEventCount_Eng(Account2__c acc, Integer iMonth, Integer cntId) { acc.put('ThisYear' + iMonth + '_Eng__c', (Decimal) acc.get('ThisYear' + iMonth + '_Eng__c') + cntId); } // SWAG-BBBAKG end private void setEventCount(Account2__c acc, Integer iMonth, Integer cntId, String jobCategory) { if (jobCategory == '销售推广') { acc.put('ThisYear' + iMonth + '__c', (Decimal) acc.get('ThisYear' + iMonth + '__c') + cntId); } else if (jobCategory == '销售服务') { acc.put('ThisYear' + iMonth + '_FSE__c', (Decimal) acc.get('ThisYear' + iMonth + '_FSE__c') + cntId); } } private void setRankTaxCount(Account2__c acc, Decimal a1, Decimal a2, Decimal a3, Decimal a4, Decimal a5, Decimal fa, Decimal sa) { // 正式环境空指针报错处理 2021-11-15 if (acc == null) { return; } acc.RANK_A_tax_HP__c += a1; acc.RANK_B_tax_HP__c += a2; acc.RANK_C_tax_HP__c += a3; acc.RANK_D_tax_HP__c += a4; acc.RANK_E_tax_HP__c += a5; acc.Forecast_Amount_HP__c += fa; acc.ShippedAmount_HP__c += sa; } private void setOppAmount(Account2__c acc, Decimal o1, Decimal o2, Decimal o3, Decimal o4, Decimal o5, Decimal o6, Decimal o7,Decimal o8,Decimal o9,Decimal o10,Decimal o11,Decimal o12,Decimal o13) { acc.Opp_Actual_ThousandY__c += o1; acc.BO_Forecast_ThousandY__c += o2; acc.OP_ThousandY__c += o3; acc.Opp_Forecast_ThousandY__c += o4; acc.Opportunity_ThousandY__c += o5; acc.Amount_Without_Tax_Thousand__c += o6; //20220111 SWAG-C8MBB6 加7.询价 lt start acc.AllOP_ThousandY__c += o7; //20220111 SWAG-C8MBB6 加7.询价 lt end //20230222 you start acc.LostPrices__c += o8; acc.Dealer_Final_Price__c += o9; acc.HospitalTransactionAmount__c += o10; //20230222 you end //20230327 DB202303372329 you start acc.OP_ThousandY_Order__c += o11; acc.OrderThisYearQY__c += o12; acc.Opportunity__c += o13; //20230327 DB202303372329 you end } private void setOpdIproductCount(Account2__c acc, Decimal decIP1, Decimal decIP2, Decimal decIP3, Decimal decIP4, Decimal decIP5, Decimal decIP6, Decimal decIP7, Decimal decIP8, Decimal decIP9, Decimal decIP10, Decimal decIP11, Decimal decIP12, Decimal decIP13, Decimal decIP14, Decimal decIP15, Decimal decIP16, Decimal decIP17, Decimal decIP18, Decimal decIP19, Decimal decIP20) { acc.Important_product1__c += decIP1; acc.Important_product2__c += decIP2; acc.Important_product3__c += decIP3; acc.Important_product4__c += decIP4; acc.Important_product5__c += decIP5; acc.Important_product6__c += decIP6; acc.Important_product7__c += decIP7; acc.Important_product8__c += decIP8; acc.Important_product9__c += decIP9; acc.Important_product10__c += decIP10; acc.Important_product11__c += decIP11; acc.Important_product12__c += decIP12; acc.Important_product13__c += decIP13; acc.Important_product14__c += decIP14; acc.Important_product15__c += decIP15; acc.Important_product16__c += decIP16; acc.Important_product17__c += decIP17; acc.Important_product18__c += decIP18; acc.Important_product19__c += decIP19; acc.Important_product20__c += decIP20; } private void setNtcCdsCount(Account2__c acc, Decimal cds) { acc.CDS_training_number_this_year__c += cds; } private void setDoCount(Account2__c acc, Integer iMonth, String dName, String jobCategory) { if (dName == 'OPD') { if (jobCategory == '销售推广') { acc.put('DoOPDHospital_ThisYear' + iMonth + '__c', (Decimal) acc.get('DoOPDHospital_ThisYear' + iMonth + '__c') + 1); } else if (jobCategory == '销售服务') { acc.put('DoOPDHospital_ThisYear' + iMonth + '_FSE__c', (Decimal) acc.get('DoOPDHospital_ThisYear' + iMonth + '_FSE__c') + 1); } } else if (dName == 'NTC') { acc.put('DoNTCHospital_ThisYear' + iMonth + '__c', (Decimal) acc.get('DoNTCHospital_ThisYear' + iMonth + '__c') + 1); } } private void setContactCount(Account2__c acc, Decimal decTTC, String strHCP) { acc.Sum_Number_of_participant_for_TTC__c += decTTC; if (strHCP == '学術HCP') { acc.Academic_HCP_Count__c += 1; } else if (strHCP == '製品HCP') { acc.Product_HCP_Count__c += 1; } else if (strHCP == '一般HCP') { acc.General_HCP_Count__c += 1; } } // SWAG-BD24SU 累加发货数的方法 start // update by vivek SWAG-BQ75WE 2020/06/11 修改参数 start private void setDeliveryCount(Account2__c acc, String tmpKey, Decimal tmpCnt , Map OldAccount2 , // Map HPtoGIAcc2Map, Map depToOtherDepAcc2Map, Map updateAccount) { // update by vivek SWAG-BQ75WE 2020/06/11 修改参数 end // switch on tmpKey { // when '8' {acc.Delivery_cnt_3D__c += tmpCnt;} // when '1' { // Account2__c acc2 = OldAccount2.get(acc.Id); // if (acc2 != null && // !acc2.Account_Org__r.RecordType_DeveloperName__c.equals('Department_Class_BF')) { // ID depGIId = HPtoGIAcc2Map.get(acc2.Account_Org__r.parentID); // Account2__c acc2GI = updateAccount.get(depGIId); // acc2GI.Delivery_cnt_CV290__c += tmpCnt; // } else{ // acc.Delivery_cnt_CV290__c += tmpCnt; // } // } // when '18' {acc.Delivery_cnt_CYF__c += tmpCnt;} // when '4' { // Account2__c acc2 = OldAccount2.get(acc.Id); // if (acc2 != null && // !acc2.Account_Org__r.RecordType_DeveloperName__c.equals('Department_Class_BF')) { // ID depGIId = HPtoGIAcc2Map.get(acc2.Account_Org__r.parentID); // Account2__c acc2GI = updateAccount.get(depGIId); // acc2GI.Delivery_cnt_EUME2__c += tmpCnt; // } else{ // acc.Delivery_cnt_EUME2__c += tmpCnt; // } // } // when '27' { // Account2__c acc2 = OldAccount2.get(acc.Id); // if (acc2 != null && // !acc2.Account_Org__r.RecordType_DeveloperName__c.equals('Department_Class_BF')) { // ID depGIId = HPtoGIAcc2Map.get(acc2.Account_Org__r.parentID); // Account2__c acc2GI = updateAccount.get(depGIId); // acc2GI.Delivery_cnt_OERAW__c += tmpCnt; // } else{ // acc.Delivery_cnt_OERAW__c += tmpCnt; // } // } // when '29' {acc.Delivery_cnt_OTVS400__c += tmpCnt;} // when '25' {acc.Delivery_cnt_USG400__c += tmpCnt;} // when '3' {acc.Delivery_cnt_CV170__c += tmpCnt;} // when '9' {acc.Delivery_cnt_CV190__c += tmpCnt;} // when '10' {acc.Delivery_cnt_OTVS190__c += tmpCnt;} // when else { // system.debug('=====setDeliveryCount else:' + tmpKey + '_x_' + tmpCnt); // } // update by vivek SWAG-BQ75WE 2020/06/12 通用方法修改 start List> allList = new List>(); allList = getImportantProductModel(tmpKey, '2'); Account2__c acc2 = OldAccount2.get(acc.Id); String nameType = 'Delivery_cnt_'; String departmentE = acc2.Account_Org__r.RecordType_DeveloperName__c.substring(17); countImportantProduct(acc,nameType,tmpCnt,tmpKey,allList,departmentE,depToOtherDepAcc2Map, updateAccount, OldAccount2); } //SWAG-BD24SU 累加发货数的方法 end // 2020-06-12 SWAG-BQ75WE 额外传递depToOtherDepAcc2Map和updateAccount start // 2018-09-14 CHAN-B4J9TC start 额外传递下客户2对象map,用来判断战略科室 // private void setOrderCount(Account2__c acc, String tmpKey, Decimal tmpCnt , Map OldAccount2) { private void setOrderCount(Account2__c acc, String tmpKey, Decimal tmpCnt , Map OldAccount2,Map depToOtherDepAcc2Map, Map updateAccount) { // 2018-09-14 CHAN-B4J9TC end 额外传递下客户2对象map,用来判断战略科室 // 2020-06-12 SWAG-BQ75WE 额外传递depToOtherDepAcc2Map和updateAccount end // switch on tmpKey { // 2018-09-14 CHAN-B4J9TC start 消化科统计GI 290镜子,呼吸科统计 BF-290 镜子 // when '2' { // Account2__c acc2 = OldAccount2.get(acc.Id); // if (acc2 != null && acc2.Account_Org__r.RecordType_DeveloperName__c.equals('Department_Class_GI')) { // acc.Order_cnt_290Miro__c += tmpCnt; // } // } // when '5' { // Account2__c acc2 = OldAccount2.get(acc.Id); // if (acc2 != null && acc2.Account_Org__r.RecordType_DeveloperName__c.equals('Department_Class_BF')) { // acc.Order_cnt_290Miro__c += tmpCnt; // } // } // // 2018-09-14 CHAN-B4J9TC end 消化科统计GI 290镜子,呼吸科统计 BF-290 镜子 // // CHAN-B496KE 2018/09/04 订货数3D所指的重点产品,由重点製品11 LTF-3D 改为 重点产品08 3DV-190 start // when '8' {acc.Order_cnt_3D__c += tmpCnt;} // // CHAN-B496KE 2018/09/04 订货数3D所指的重点产品,由重点製品11 LTF-3D 改为 重点产品08 3DV-190 end // when '30' {acc.Order_cnt_CHS400XZ__c += tmpCnt;} // when '3' {acc.Order_cnt_CV170__c += tmpCnt;} // when '9' {acc.Order_cnt_CV190__c += tmpCnt;} // when '1' {acc.Order_cnt_CV290__c += tmpCnt;} // when '4' {acc.Order_cnt_EUME2__c += tmpCnt;} // when '27' {acc.Order_cnt_OERAW__c += tmpCnt;} // when '10' {acc.Order_cnt_OTVS190__c += tmpCnt;} // when '29' {acc.Order_cnt_OTVS400__c += tmpCnt;} // when '28' {acc.Order_cnt_UCES3__c += tmpCnt;} // when '25' {acc.Order_cnt_USG400__c += tmpCnt;} // when '6' {acc.Order_cnt_GW__c += tmpCnt;} // // SWAG-BC832V 订货数:CYF 累加 // when '18' {acc.Order_cnt_CYF__c += tmpCnt;} // // SWAG-BC832V // when else { // system.debug('=====setOrderCount else:' + tmpKey + '_x_' + tmpCnt); // } // SWAG-BQ75WE 2020-06-12 start List> allList = new List>(); allList = getImportantProductModel(tmpKey, '2'); Account2__c acc2 = OldAccount2.get(acc.Id); String nameType = 'Order_cnt_'; String departmentE = acc2.Account_Org__r.RecordType_DeveloperName__c.substring(17); countImportantProduct(acc,nameType,tmpCnt,tmpKey,allList,departmentE,depToOtherDepAcc2Map, updateAccount, OldAccount2); // SWAG-BQ75WE 2020-06-12 start } // 2020-06-12 SWAG-BQ75WE 额外传递depToOtherDepAcc2Map和updateAccount start // 2018-09-14 CHAN-B4J9TC start 额外传递下客户2对象map,用来判断战略科室 private void setOppCount(Account2__c acc, String tmpKey, Decimal tmpCnt , Map OldAccount2,Map depToOtherDepAcc2Map, Map updateAccount) { // 2018-09-14 CHAN-B4J9TC end 额外传递下客户2对象map,用来判断战略科室 // 2020-06-12 SWAG-BQ75WE 额外传递depToOtherDepAcc2Map和updateAccount end // switch on tmpKey { // 2018-09-14 CHAN-B4J9TC start 消化科统计GI 290镜子,呼吸科统计 BF-290 镜子 // when '2' { // Account2__c acc2 = OldAccount2.get(acc.Id); // if (acc2 != null && acc2.Account_Org__r.RecordType_DeveloperName__c.equals('Department_Class_GI')) { // acc.Opp_cnt_290Miro__c += tmpCnt; // } // } // when '5' { // Account2__c acc2 = OldAccount2.get(acc.Id); // if (acc2 != null && acc2.Account_Org__r.RecordType_DeveloperName__c.equals('Department_Class_BF')) { // acc.Opp_cnt_290Miro__c += tmpCnt; // } // } // // 2018-09-14 CHAN-B4J9TC end 消化科统计GI 290镜子,呼吸科统计 BF-290 镜子 // // CHAN-B496KE 2018/09/04 询价数3D所指的重点产品,由重点製品11 LTF-3D 改为 重点产品08 3DV-190 start // when '8' {acc.Opp_cnt_3D__c += tmpCnt;} // // CHAN-B496KE 2018/09/04 询价数3D所指的重点产品,由重点製品11 LTF-3D 改为 重点产品08 3DV-190 end // when '30' {acc.Opp_cnt_CHS400XZ__c += tmpCnt;} // when '3' {acc.Opp_cnt_CV170__c += tmpCnt;} // when '9' {acc.Opp_cnt_CV190__c += tmpCnt;} // when '1' {acc.Opp_cnt_CV290__c += tmpCnt;} // when '4' {acc.Opp_cnt_EUME2__c += tmpCnt;} // when '27' {acc.Opp_cnt_OERAW__c += tmpCnt;} // when '10' {acc.Opp_cnt_OTVS190__c += tmpCnt;} // when '29' {acc.Opp_cnt_OTVS400__c += tmpCnt;} // when '28' {acc.Opp_cnt_UCES3__c += tmpCnt;} // when '25' {acc.Opp_cnt_USG400__c += tmpCnt;} // when '6' {acc.Opp_cnt_GW__c += tmpCnt;} // // SWAG-BC832V 订货数:CYF 累加 // when '18' { // acc.Opp_cnt_CYF__c += tmpCnt; // system.debug('=====setOppCount else:' + tmpKey + '_x_' + tmpCnt); // } // // SWAG-BC832V // when else { // system.debug('=====setOppCount else:' + tmpKey + '_x_' + tmpCnt); // } // SWAG-BQ75WE 2020-06-12 start List> allList = new List>(); allList = getImportantProductModel(tmpKey, '2'); Account2__c acc2 = OldAccount2.get(acc.Id); String nameType = 'Opp_cnt_'; String departmentE = acc2.Account_Org__r.RecordType_DeveloperName__c.substring(17); countImportantProduct(acc,nameType,tmpCnt,tmpKey,allList,departmentE,depToOtherDepAcc2Map, updateAccount, OldAccount2); // SWAG-BQ75WE 2020-06-12 end } //20200825 ljh SWAG-BRY6PF add start private void setRentalCount(Account2__c acc, String tmpKey, Integer tmpCnt , Map OldAccount2,Map depToOtherDepAcc2Map, Map updateAccount) { switch on tmpKey { when '01' {acc.Rental_Cnt_CV290__c += tmpCnt;} when '02' {acc.Rental_Cnt_290MiroGI__c += tmpCnt;} when '03' {acc.Rental_Cnt_290MiroGI_Plus__c += tmpCnt;} when '04' {acc.Rental_Cnt_290MiroGI_CF__c += tmpCnt;} when '07' {acc.Rental_Cnt_GFUCT260__c += tmpCnt;} when '05' {acc.Rental_Cnt_EUME2__c += tmpCnt;} when '09' {acc.Rental_Cnt_290MiroBF__c += tmpCnt;} when '14' {acc.Rental_Cnt_OTVS400__c += tmpCnt;} when '15' {acc.Rental_Cnt_OTVS300__c += tmpCnt;} when '16' {acc.Rental_Cnt_CV170__c += tmpCnt;} when '17' {acc.Rental_Cnt_CV190__c += tmpCnt;} when '18' {acc.Rental_Cnt_OTVS190__c += tmpCnt;} when '28' {acc.Rental_Cnt_ESG400__c += tmpCnt;} when '29' {acc.Rental_Cnt_USG400__c += tmpCnt;} when '30' {acc.Rental_Cnt_TB__c += tmpCnt;} when else { system.debug('=====setRentalCount else:' + tmpKey + '_x_' + tmpCnt); } } } //20200825 ljh SWAG-BRY6PF add end //SWAG-BSC5WP you-20201021 start private void setAssetCount(Account2__c acc, String tmpKey, Integer tmpCnt , Map OldAccount2,Map depToOtherDepAcc2Map, Map updateAccount) { switch on tmpKey { when '01' {acc.Asset_Cnt_CV290__c += tmpCnt;} when '02' {acc.Asset_Cnt_290MiroGI__c += tmpCnt;} when '03' {acc.Asset_Cnt_290MiroGI_Plus__c += tmpCnt;} when '04' {acc.Asset_Cnt_290MiroGI_CF__c += tmpCnt;} when '07' {acc.Asset_Cnt_GFUCT260__c += tmpCnt;} when '05' {acc.Asset_Cnt_EUME2__c += tmpCnt;} when '09' {acc.Asset_Cnt_290MiroBF__c += tmpCnt;} when '14' {acc.Asset_Cnt_OTVS400__c += tmpCnt;} when '15' {acc.Asset_Cnt_OTVS300__c += tmpCnt;} when '16' {acc.Asset_Cnt_CV170__c += tmpCnt;} when '17' {acc.Asset_Cnt_CV190__c += tmpCnt;} when '18' {acc.Asset_Cnt_OTVS190__c += tmpCnt;} when '28' {acc.Asset_Cnt_ESG400__c += tmpCnt;} when '29' {acc.Asset_Cnt_USG400__c += tmpCnt;} //20220601 WLIG-CEWDWS you start //when '30' {acc.Asset_Cnt_TB__c += tmpCnt;} when '20' {acc.Asset_Cnt_TB_0535__c += tmpCnt;} when '21' {acc.Asset_Cnt_TB_0520__c += tmpCnt;} //20220601 WLIG-CEWDWS you end when else { system.debug('=====setAssetCount else:' + tmpKey + '_x_' + tmpCnt); } } } //SWAG-BSC5WP you-20201021 end // update by vivek SWAG-BQ75WE 2020/06/11 start // 计算重点产品区分 private void countImportantProduct(Account2__c acc,String nameType,Decimal tmpCnt,String tmpKey, List> modelList,String departmentE,Map depToOtherDepAcc2Map,Map updateAccount,Map OldAccount2){ System.debug('======acc'+acc); System.debug('======nameType'+nameType); System.debug('======tmpCnt'+tmpCnt); System.debug('======tmpKey'+tmpKey); System.debug('======modelList'+modelList); System.debug('======departmentE'+departmentE); System.debug('======depToOtherDepAcc2Map'+depToOtherDepAcc2Map); System.debug('======updateAccount'+updateAccount); System.debug('======OldAccount2'+OldAccount2); // 全部计算的科室 List allCountDepList = new List(); // 不计算的科室 List noCountDepList = new List(); // 只计算的科室 List onlyCountDepList = new List(); // 通过编号获取需要更新的字段名称 String filedName = filedNameMap.get(tmpKey); System.debug('======filedName'+filedName); if(filedName != null){ if(modelList.size() == 3){ allCountDepList = modelList[0]; noCountDepList = modelList[1]; onlyCountDepList = modelList[2]; } if(allCountDepList.size() == 0 && noCountDepList.size() == 0 && onlyCountDepList.size() == 0){ // 都是单独计算的,都计算自己对应的战略科室 // Decimal tmpCntOld = (Decimal)acc.get('Delivery_cnt_'+filedName); Decimal tmpCntOld = (Decimal)acc.get(nameType+filedName); if(tmpCntOld == null){ // acc.put('Delivery_cnt_'+filedName,tmpCnt); acc.put(nameType+filedName,tmpCnt); }else{ // acc.put('Delivery_cnt_'+filedName,tmpCntOld+tmpCnt); acc.put(nameType+filedName,tmpCntOld+tmpCnt); } }else{ // 需要判断具体计算哪个战略科室 // 如果当前科室在全部计算科室中,计算全部科室中第一个科室。 if(allCountDepList.size() > 0 && allCountDepList.contains(departmentE)){ Account2__c acc2 = OldAccount2.get(acc.Id); ID depGIId = depToOtherDepAcc2Map.get(acc2.Account_Org__r.parentID+'Department_Class_'+allCountDepList[0]); System.debug('depGIId======'+depGIId); System.debug('======depart:'+'Department_Class_'+allCountDepList[0]); Account2__c acc2Oth = updateAccount.get(depGIId); // Decimal tmpCntOld = (Decimal)acc2Oth.get('Delivery_cnt_'+filedName); Decimal tmpCntOld = (Decimal)acc2Oth.get(nameType+filedName); if(tmpCntOld == null){ // acc2Oth.put('Delivery_cnt_'+filedName,tmpCnt); acc2Oth.put(nameType+filedName,tmpCnt); }else{ // acc2Oth.put('Delivery_cnt_'+filedName,tmpCntOld+tmpCnt); acc2Oth.put(nameType+filedName,tmpCntOld+tmpCnt); } System.debug(acc2Oth); } // 如果当前科室在不计算的科室中,不需要任何操作。 // 如果当前科室在只计算的科室中,直接计算自己对应的战略科室。 else if(onlyCountDepList.size() > 0 && onlyCountDepList.contains(departmentE)){ // acc.put('Delivery_cnt_'+filedName, acc.get('Delivery_cnt_'+filedName)+tmpCnt); Decimal tmpCntOld = (Decimal)acc.get(nameType+filedName); if(tmpCntOld == null){ // acc.put('Delivery_cnt_'+filedName,tmpCnt); acc.put(nameType+filedName,tmpCnt); }else{ // acc.put('Delivery_cnt_'+filedName,tmpCntOld+tmpCnt); acc.put(nameType+filedName,tmpCntOld+tmpCnt); } } } } } // 建立重点产品区分计算模型 public List> getImportantProductModel(String i, String StrType){ // filedNameMap 赋值,名称匹配 // if(filedNameMap == null){ // filedNameMap.clear(); if (StrType == '1') { filedNameMap = new Map(); filedNameMap.put('1', 'CV_290__c'); filedNameMap.put('2', '290Miro_GI__c'); filedNameMap.put('3', '290Miro_GIPlus__c'); filedNameMap.put('4', '290Miro_GICF__c'); filedNameMap.put('7', 'GFUCT260__c'); // 20210602 SWAG-C3K6L7 Start //filedNameMap.put('5', 'EU_ME2__c'); // 20210602 SWAG-C3K6L7 End filedNameMap.put('9', '290Miro_BF__c'); filedNameMap.put('14', 'OTV_S400__c'); filedNameMap.put('15', 'OTV_S300__c'); filedNameMap.put('16', 'CV_170__c'); filedNameMap.put('17', 'CV_190__c'); // 20210602 SWAG-C3K6L7 Start //filedNameMap.put('18', 'OTV_S190__c'); // 20210602 SWAG-C3K6L7 End filedNameMap.put('28', 'ESG400__c'); filedNameMap.put('29', 'USG400__c'); //记录you 上财年没有29 ,只不过没有注释,今年有,所以不用动 //20220601 WLIG-CEWDWS you start //filedNameMap.put('30', 'TB__c'); filedNameMap.put('20', 'TB_0535__c'); filedNameMap.put('21', 'TB_0520__c'); //20220601 WLIG-CEWDWS you end } else { filedNameMap = new Map(); filedNameMap.put('1', 'CV290__c'); filedNameMap.put('2', '290MiroGI__c'); filedNameMap.put('3', '290MiroGI_Plus__c'); filedNameMap.put('4', '290MiroGI_CF__c'); filedNameMap.put('7', 'GFUCT260__c'); // 20210602 SWAG-C3K6L7 Start //filedNameMap.put('5', 'EUME2__c'); // 20210602 SWAG-C3K6L7 End filedNameMap.put('9', '290MiroBF__c'); filedNameMap.put('14', 'OTVS400__c'); filedNameMap.put('15', 'OTVS300__c'); filedNameMap.put('16', 'CV170__c'); filedNameMap.put('17', 'CV190__c'); // 20210602 SWAG-C3K6L7 Start //filedNameMap.put('18', 'OTVS190__c'); // 20210602 SWAG-C3K6L7 End filedNameMap.put('28', 'ESG400__c'); filedNameMap.put('29', 'USG400__c'); //20220601 WLIG-CEWDWS you start //filedNameMap.put('30', 'TB__c'); filedNameMap.put('20', 'TB_0535__c'); filedNameMap.put('21', 'TB_0520__c'); //20220601 WLIG-CEWDWS you end // } } // 全部科室简称 String departmentBF = 'BF'; // 呼吸科 String departmentENT = 'ENT'; // 耳鼻喉科 // String departmentET = 'ET'; // ET耗材 String departmentGI = 'GI'; // 消化科 String departmentGS = 'GS'; // 普外科 String departmentGYN = 'GYN'; // 妇科 String departmentOTH = 'OTH'; // 其他 String departmentURO = 'URO'; // 泌尿科 // 全部科室的list List allDepList = new List(); allDepList.add(departmentBF); allDepList.add(departmentENT); allDepList.add(departmentGI); allDepList.add(departmentGS); allDepList.add(departmentGYN); allDepList.add(departmentURO); allDepList.add(departmentOTH); List> allList = new List>(); // 全部计算的科室 List allCountDepList = new List(); // 不计算的科室 List noCountDepList = new List(); // 只计算的科室 List onlyCountDepList = new List(); // 20210602 SWAG-C3K6L7 Start //if(i == '1' || i == '5'){ if(i == '1'){ // 20210602 SWAG-C3K6L7 End // 这里是需要修改的 start allCountDepList.add(departmentGI); // noCountDepList.add() 这里没有不需要计算的科室 onlyCountDepList.add(departmentBF); // 这里是需要修改的 end for(String str :allDepList){ if(!allCountDepList.contains(str) && !noCountDepList.contains(str) && !onlyCountDepList.contains(str)){ allCountDepList.add(str); } } allList.add(allCountDepList); allList.add(noCountDepList); allList.add(onlyCountDepList); }else if(i == '2' || i == '3' || i == '4' || i == '7'){ // 这里是需要修改的 start allCountDepList.add(departmentGI); // noCountDepList.add() 这里没有不需要计算的科室 // onlyCountDepList.add(departmentBF); 这里也没有直接算的科室,都算在消化科里 // 这里是需要修改的 end for(String str :allDepList){ if(!allCountDepList.contains(str) && !noCountDepList.contains(str) && !onlyCountDepList.contains(str)){ allCountDepList.add(str); } } allList.add(allCountDepList); allList.add(noCountDepList); allList.add(onlyCountDepList); }else if(i == '9'){ // 这里是需要修改的 start allCountDepList.add(departmentBF); // 都计算在呼吸科里 // noCountDepList.add() 这里没有不需要计算的科室 // onlyCountDepList.add(departmentBF); 这里也没有直接算的科室,都算在呼吸科里 // 这里是需要修改的 end for(String str :allDepList){ if(!allCountDepList.contains(str) && !noCountDepList.contains(str) && !onlyCountDepList.contains(str)){ allCountDepList.add(str); } } allList.add(allCountDepList); allList.add(noCountDepList); allList.add(onlyCountDepList); // 20210602 SWAG-C3K6L7 Start //}else if(i == '14' || i == '15' || i == '17' || i == '18' || i == '29' || i == '28' || i == '30'){ //} else if(i == '14' || i == '15' || i == '17' || i == '29' || i == '28' || i == '30'){ // 20210602 SWAG-C3K6L7 End //20220601 WLIG-CEWDWS you start } else if(i == '14' || i == '15' || i == '17' || i == '29' || i == '28' || i == '20' || i == '21'){ //20220601 WLIG-CEWDWS you end // 这里是需要修改的 start allCountDepList.add(departmentGS); // 都计算在普外科里 // noCountDepList.add() 这里没有不需要计算的科室 onlyCountDepList.add(departmentGYN); //这里也没有直接算的科室,都算在呼吸科里 onlyCountDepList.add(departmentENT); onlyCountDepList.add(departmentURO); // 这里是需要修改的 end for(String str :allDepList){ if(!allCountDepList.contains(str) && !noCountDepList.contains(str) && !onlyCountDepList.contains(str)){ allCountDepList.add(str); } } allList.add(allCountDepList); allList.add(noCountDepList); allList.add(onlyCountDepList); }else if(i == '16'){ // 这里是需要修改的 start allCountDepList.add(departmentGS); // 都计算在普外科里 noCountDepList.add(departmentBF); // 这里不包含呼吸科 noCountDepList.add(departmentGI); // 这里不包含消化科 // onlyCountDepList.add(departmentBF); // 这里没有只计算的内容 onlyCountDepList.add(departmentGYN); //这里也没有直接算的科室,都算在呼吸科里 onlyCountDepList.add(departmentENT); onlyCountDepList.add(departmentURO); // 这里是需要修改的 end for(String str :allDepList){ if(!allCountDepList.contains(str) && !noCountDepList.contains(str) && !onlyCountDepList.contains(str)){ allCountDepList.add(str); } } allList.add(allCountDepList); allList.add(noCountDepList); allList.add(onlyCountDepList); }else{ // 都是直接计算自己对应的战略科室下 allList.add(allCountDepList); allList.add(noCountDepList); allList.add(onlyCountDepList); } return allList; } // update by vivek SWAG-BQ75WE 2020/06/11 end private void setOpdCount(Account2__c acc, String tmpKey, Decimal tmpCnt , Map OldAccount2,Map depToOtherDepAcc2Map, Map updateAccount) { List> allList = new List>(); allList = getImportantProductModel(tmpKey, '1'); Account2__c acc2 = OldAccount2.get(acc.Id); String nameType = 'Opd_'; String departmentE = acc2.Account_Org__r.RecordType_DeveloperName__c.substring(17); countImportantProduct(acc,nameType,tmpCnt,tmpKey,allList,departmentE,depToOtherDepAcc2Map, updateAccount, OldAccount2); } @TestVisible private static void test() { Integer i = 0; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; } }