| | |
| | | public String query; |
| | | public List < String > accountIdList; |
| | | private BatchIF_Log__c iflog; |
| | | public Date td = Date.today(); |
| | | public Date td = Date.today(); //如2022.10.15 |
| | | public String OCSM_Period_half; |
| | | public String OCSM_Period; |
| | | public Date sTime; |
| | | public Date eTime; |
| | | public Date eTime=td.toStartOfMonth(); //如 2022.10.1 |
| | | public Date sTime=eTime.addYears(-3); // 2019.10.1 |
| | | |
| | | global EquipmentRepairBatch() { |
| | | this.query = query; |
| | |
| | | OCSM_Period_half = '2H'; |
| | | } |
| | | |
| | | if(td.month() >= 4){ |
| | | sTime = Date.newInstance(td.year()-3,4,1); |
| | | eTime = Date.newInstance(td.year(),3,31); |
| | | // if(td.month() >= 4){ |
| | | // sTime = Date.newInstance(td.year()-3,4,1); |
| | | // eTime = Date.newInstance(td.year(),3,31); |
| | | |
| | | }else{ |
| | | sTime = Date.newInstance(td.year()-4,4,1); |
| | | eTime = Date.newInstance(td.year()-1,3,31); |
| | | } |
| | | // }else{ |
| | | // sTime = Date.newInstance(td.year()-4,4,1); |
| | | // eTime = Date.newInstance(td.year()-1,3,31); |
| | | // } |
| | | // query ='select Id,Hospital__c,Product2.ServiceCategory__c from Asset where Id not in (Select Asset__c from Maintenance_Contract_Asset__c) and Id in (select Delivered_Product__c from Repair__c)';//没有维修合同的数据 |
| | | // query += 'and IF_Coverage_Target_Asset_F__c=1'; |
| | | //不再查询是否有维修合同 |
| | |
| | | |
| | | //最后upsert客户服务目标对象 list目标 |
| | | List<Account_Service_Of_Target__c> asslist = new List<Account_Service_Of_Target__c>(); |
| | | //amaplist |
| | | //保有设备为单位 过去三年维修实绩 |
| | | Map<Id,Decimal> ThreeYearPriceSumMap = new Map<Id,Decimal>(); |
| | | |
| | | //过去三年维修实际 2022/10/13 修改 为当前时间的上一个月最后一天 往前推三年 |
| | | for(Repair__c rp :[SELECT Hospital__c,PurchaseOrInstallationDate__c,Repair_List_Price_formula__c,Delivered_Product__c |
| | | FROM Repair__c WHERE Delivered_Product__c in:mids |
| | | AND Repair_List_Price_formula__c !=null |
| | | AND Repair_List_Price_formula__c!=0 |
| | | AND Status1__c!='0.删除' |
| | | AND Status1__c!='0.取消' |
| | | AND Status2__c!='00.删除' |
| | | AND Status2__c!='00.取消' |
| | | AND Agreed_Date__c >=:sTime |
| | | AND Agreed_Date__c <:eTime |
| | | ]){ |
| | | Date purDate = rp.PurchaseOrInstallationDate__c; |
| | | if(purDate!=null){ |
| | | Decimal bDay = purDate.daysBetween(eTime); |
| | | Decimal hmoney = 0; |
| | | if(bDay < 0){ |
| | | bDay *=-1; |
| | | } |
| | | //设备年龄不足三年的 按平均每天计算 再乘 365 再乘 3 |
| | | if((bDay < 365*3) && bDay>0){ |
| | | hmoney = (rp.Repair_List_Price_formula__c / bDay) *365*3; |
| | | }else{ |
| | | hmoney = rp.Repair_List_Price_formula__c / 3; |
| | | } |
| | | if(ThreeYearPriceSumMap.containsKey(rp.Delivered_Product__c)){ |
| | | ThreeYearPriceSumMap.put(rp.Delivered_Product__c, ThreeYearPriceSumMap.get(rp.Delivered_Product__c)+hmoney); |
| | | }else{ |
| | | ThreeYearPriceSumMap.put(rp.Delivered_Product__c, hmoney); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | //修改时间为过去三个完成财年 |
| | | |
| | | // Date LastThirdYearDate = td.addYears(-3); |
| | | // System.debug(LoggingLevel.INFO, '*** LastThirdYearDate: ' + LastThirdYearDate); |
| | | List<AggregateResult> ThreeyearList = [ |
| | | select |
| | | sum(Discount_Price_formula__c) SumPrice, |
| | | sum(Repair_Quotation_Id__r.sales_discount__c) sales_discount, |
| | | sum(Repair_Quotation_Id__r.Contract_target__c) contract_target, |
| | | sum(Repair_Quotation_Id__r.Loaner_repair__c) loaner_repair, |
| | | sum(Repair_Quotation_Id__r.long_term_insurance__c) long_term_insurance, |
| | | sum(Repair_Quotation_Id__r.Set_discount__c) set_discount, |
| | | sum(Repair_Quotation_Id__r.Servince_contract_discount_amount__c) sercince, |
| | | sum(Repair_Quotation_Id__r.long_term_insurance_MD__c) long_term_insuranceMD, |
| | | sum(Repair_Quotation_Id__r.Delivery_compensation__c) delivery, |
| | | sum(Repair_Quotation_Id__r.Other_discount__c) other, |
| | | AVG(Delivered_Product__r.Last_Years_Repair_Month__c) threeYearM, |
| | | Delivered_Product__c |
| | | from |
| | | Repair__c |
| | | where |
| | | Delivered_Product__c in:mids |
| | | and Agreed_Date__c != null |
| | | and Agreed_Date__c <= :eTime |
| | | and Agreed_Date__c >= :sTime |
| | | group by Delivered_Product__c |
| | | ]; |
| | | Map<Id, Decimal> ThreeYearPriceSumMap = new Map<id, Decimal>(); |
| | | Map<Id, Decimal> ThiYearMonthMap = new Map<id, Decimal>(); |
| | | // List<AggregateResult> ThreeyearList = [ |
| | | // select |
| | | // sum(Repair_List_Price_formula__c) SumPrice, |
| | | // sum(Repair_Quotation_Id__r.sales_discount__c) sales_discount, |
| | | // sum(Repair_Quotation_Id__r.Contract_target__c) contract_target, |
| | | // sum(Repair_Quotation_Id__r.Loaner_repair__c) loaner_repair, |
| | | // sum(Repair_Quotation_Id__r.long_term_insurance__c) long_term_insurance, |
| | | // sum(Repair_Quotation_Id__r.Set_discount__c) set_discount, |
| | | // sum(Repair_Quotation_Id__r.Servince_contract_discount_amount__c) sercince, |
| | | // sum(Repair_Quotation_Id__r.long_term_insurance_MD__c) long_term_insuranceMD, |
| | | // sum(Repair_Quotation_Id__r.Delivery_compensation__c) delivery, |
| | | // sum(Repair_Quotation_Id__r.Other_discount__c) other, |
| | | // AVG(Delivered_Product__r.Last_Years_Repair_Month__c) threeYearM, |
| | | // Delivered_Product__c |
| | | // from |
| | | // Repair__c |
| | | // where |
| | | // Delivered_Product__c in:mids |
| | | // and Agreed_Date__c != null |
| | | // and Agreed_Date__c <= :eTime |
| | | // and Agreed_Date__c >= :sTime |
| | | // and Repair_List_Price_formula__c!=0 |
| | | // and Repair_List_Price_formula__c!=null |
| | | // and Status1__c!='0.删除' |
| | | // and Status1__c!='0.取消' |
| | | // and Status2__c!='00.删除' |
| | | // and Status2__c!='00.取消' |
| | | // group by Delivered_Product__c |
| | | // ]; |
| | | // Map<Id, Decimal> ThreeYearPriceSumMap = new Map<id, Decimal>(); |
| | | // Map<Id, Decimal> ThiYearMonthMap = new Map<id, Decimal>(); |
| | | |
| | | for (AggregateResult Rpc : ThreeyearList) { |
| | | id idf = String.valueOf(Rpc.get('Delivered_Product__c')); |
| | | //Decimal Defir = decimal.valueOf(Rpc.get('SumPrice')+''); |
| | | Decimal threeYearM = decimal.valueOf(Rpc.get('threeYearM') + ''); |
| | | Decimal Defir = sumPrice1(Rpc); |
| | | ThreeYearPriceSumMap.put(idf, Defir); |
| | | ThiYearMonthMap.put(idf, threeYearM); |
| | | } |
| | | // System.debug(LoggingLevel.INFO, '*** ThreeyearList: ' + ThreeyearList); |
| | | // for (AggregateResult Rpc : ThreeyearList) { |
| | | // id idf = String.valueOf(Rpc.get('Delivered_Product__c')); |
| | | // //Decimal Defir = decimal.valueOf(Rpc.get('SumPrice')+''); |
| | | // Decimal threeYearM = decimal.valueOf(Rpc.get('threeYearM') + ''); |
| | | // Decimal Defir = sumPrice1(Rpc); |
| | | // ThreeYearPriceSumMap.put(idf, Defir); |
| | | // ThiYearMonthMap.put(idf, threeYearM); |
| | | // } |
| | | |
| | | //以医院为对象存储医院所有保有设备List |
| | | Map<Id,List<Asset>> aMapLists = new Map<Id,List<Asset>>(); |
| | |
| | | } |
| | | } |
| | | } |
| | | // update resultList; |
| | | update resultList; |
| | | System.debug(LoggingLevel.INFO, '*** updated resultList: ' + resultList); |
| | | for (Id mapId : aMapLists.keySet()) { |
| | | |
| | |
| | | |
| | | for (Asset asset : aMapLists.get(mapId) ) { |
| | | sumThreePrice += asset.Three_Years_Repair_Cost_Text__c; |
| | | System.debug(LoggingLevel.INFO, '*** sumThreePrice: ' + sumThreePrice); |
| | | |
| | | System.debug(LoggingLevel.INFO, '*** asset.Product2.ServiceCategory__c: ' + asset.Product2.ServiceCategory__c); |
| | | System.debug(LoggingLevel.INFO, '*** asset.Is_Has_Contract_History__c: ' + asset.Is_Has_Contract_History__c); |
| | | |
| | | //分别统计软、硬、周边 1.定价总计 2.(未参保)过去三年平均维修实绩 3.未参保数量 |
| | | if(asset.Product2.ServiceCategory__c!=null){ |
| | | if(asset.Product2.ServiceCategory__c == '软性镜'){ |
| | |
| | | } |
| | | } |
| | | } |
| | | System.debug(LoggingLevel.INFO, '*** 周边未参保金额: ' + periE); |
| | | System.debug(LoggingLevel.INFO, '*** 硬 未参保金额: ' + hardE); |
| | | System.debug(LoggingLevel.INFO, '*** 软 未参保金额: ' + softE); |
| | | |
| | | Account_Service_Of_Target__c astItem = new Account_Service_Of_Target__c(); |
| | | if(targetMap.containsKey(mapId)){ |
| | | astItem = targetMap.get(mapId); |
| | |
| | | astItem.Uninsured_Quantity_Lightsource__c = periCount; |
| | | asslist.add(astItem); |
| | | System.debug(LoggingLevel.INFO, '*** 软性镜总个数: ' + softCountall); |
| | | System.debug(LoggingLevel.INFO, '*** 软性镜未参保个数: ' + astItem.Uninsured_Quantity_Soft_Mirror__c); |
| | | System.debug(LoggingLevel.INFO, '*** :astItem.Three_Years_Repair_Cost_Soft_Mirror__c ' + astItem.Three_Years_Repair_Cost_Soft_Mirror__c); |
| | | |
| | | |
| | | } |
| | | update resultList; |
| | | upsert asslist; |
| | | // System.debug(LoggingLevel.INFO, '*** asslist: ' + asslist); |
| | | // update resultList; |
| | | upsert asslist; |
| | | // update asslist; |
| | | |
| | | System.debug(LoggingLevel.INFO, '***更新后 asslist: ' + asslist); |
| | | |
| | | |
| | | } |
| | | |
| | | global void finish(Database.BatchableContext BC) { |
| | |
| | | |
| | | } |
| | | |
| | | private static Decimal sumPrice1(AggregateResult rpc) { |
| | | Decimal SumPrice = Decimal.valueOf(rpc.get('SumPrice') + ''); |
| | | Decimal sales_discount = Decimal.valueOf((rpc.get('sales_discount') == null ? 0 : rpc.get('sales_discount')) + '') * -1; |
| | | Decimal contract_target = Decimal.valueOf((rpc.get('contract_target') == null ? 0 : rpc.get('contract_target')) + '') * -1; |
| | | Decimal loaner_repair = Decimal.valueOf((rpc.get('loaner_repair') == null ? 0 : rpc.get('loaner_repair')) + '') * -1; |
| | | Decimal long_term_insurance = Decimal.valueOf((rpc.get('long_term_insurance') == null ? 0 : rpc.get('long_term_insurance')) + '') * -1; |
| | | Decimal set_discount = Decimal.valueOf((rpc.get('set_discount') == null ? 0 : rpc.get('set_discount')) + '') * -1; |
| | | Decimal sercince = Decimal.valueOf((rpc.get('sercince') == null ? 0 : rpc.get('sercince')) + '') * -1; |
| | | Decimal long_term_insuranceMD = Decimal.valueOf((rpc.get('long_term_insuranceMD') == null ? 0 : rpc.get('long_term_insuranceMD')) + '') * -1; |
| | | Decimal delivery = Decimal.valueOf((rpc.get('delivery') == null ? 0 : rpc.get('delivery')) + '') * -1; |
| | | Decimal other = Decimal.valueOf((rpc.get('other') == null ? 0 : rpc.get('other')) + '') * -1; |
| | | system.debug(rpc.get('SumPrice') + '--' + rpc.get('sales_discount') + '--' + rpc.get('contract_target') + '--' + |
| | | rpc.get('loaner_repair') + '--' + rpc.get('long_term_insurance') + '--' + rpc.get('set_discount') + '--' + rpc.get('long_term_insuranceMD') |
| | | + '--' + rpc.get('delivery') + '--' + rpc.get('other') + '--'); |
| | | return SumPrice + sales_discount + contract_target + loaner_repair + long_term_insurance + sercince + set_discount + long_term_insuranceMD + delivery + other; |
| | | } |
| | | // private static Decimal sumPrice1(AggregateResult rpc) { |
| | | // Decimal SumPrice = Decimal.valueOf(rpc.get('SumPrice') + ''); |
| | | // Decimal sales_discount = Decimal.valueOf((rpc.get('sales_discount') == null ? 0 : rpc.get('sales_discount')) + '') * -1; |
| | | // Decimal contract_target = Decimal.valueOf((rpc.get('contract_target') == null ? 0 : rpc.get('contract_target')) + '') * -1; |
| | | // Decimal loaner_repair = Decimal.valueOf((rpc.get('loaner_repair') == null ? 0 : rpc.get('loaner_repair')) + '') * -1; |
| | | // Decimal long_term_insurance = Decimal.valueOf((rpc.get('long_term_insurance') == null ? 0 : rpc.get('long_term_insurance')) + '') * -1; |
| | | // Decimal set_discount = Decimal.valueOf((rpc.get('set_discount') == null ? 0 : rpc.get('set_discount')) + '') * -1; |
| | | // Decimal sercince = Decimal.valueOf((rpc.get('sercince') == null ? 0 : rpc.get('sercince')) + '') * -1; |
| | | // Decimal long_term_insuranceMD = Decimal.valueOf((rpc.get('long_term_insuranceMD') == null ? 0 : rpc.get('long_term_insuranceMD')) + '') * -1; |
| | | // Decimal delivery = Decimal.valueOf((rpc.get('delivery') == null ? 0 : rpc.get('delivery')) + '') * -1; |
| | | // Decimal other = Decimal.valueOf((rpc.get('other') == null ? 0 : rpc.get('other')) + '') * -1; |
| | | // system.debug(rpc.get('SumPrice') + '--' + rpc.get('sales_discount') + '--' + rpc.get('contract_target') + '--' + |
| | | // rpc.get('loaner_repair') + '--' + rpc.get('long_term_insurance') + '--' + rpc.get('set_discount') + '--' + rpc.get('long_term_insuranceMD') |
| | | // + '--' + rpc.get('delivery') + '--' + rpc.get('other') + '--'); |
| | | // return SumPrice + sales_discount + contract_target + loaner_repair + long_term_insurance + sercince + set_discount + long_term_insuranceMD + delivery + other; |
| | | // } |
| | | |
| | | |
| | | } |