public without sharing class MCLastMContractController { // public estimateInfo estimate { get; set; } public String targetEstimateId { get; private set; } public List mccList {get; set;} public mccInfo mcc {get;set;} public Maintenance_Contract_Estimate__c mcec; public void init() { this.targetEstimateId = (String)(ApexPages.currentPage().getParameters().get('id')); if (String.isNotBlank(this.targetEstimateId)) { setThisEstimate(); }else{ } } //update by rentongxiao 2020-09-09 start /* private void setThisEstimate() { Maintenance_Contract_Estimate__c mCestimate = [SELECT Id, LastMContract1__r.Management_Code__c,LastMContract1__c,LastMContract1_AssetCount__c,LastMContract1_ConCount__c, LastMContract1__r.Contract_Esti_Start_Date__c,LastMContract1__r.Contract_Esti_End_Date__c,LastMContract1__r.Contract_Period__c, LastMContract2__r.Management_Code__c,LastMContract2__c,LastMContract2_AssetCount__c,LastMContract2_ConCount__c, LastMContract2__r.Contract_Esti_Start_Date__c,LastMContract2__r.Contract_Esti_End_Date__c,LastMContract2__r.Contract_Period__c, LastMContract3__r.Management_Code__c,LastMContract3__c,LastMContract3_AssetCount__c,LastMContract3_ConCount__c, LastMContract3__r.Contract_Esti_Start_Date__c,LastMContract3__r.Contract_Esti_End_Date__c,LastMContract3__r.Contract_Period__c, LastMContract4__r.Management_Code__c,LastMContract4__c,LastMContract4_AssetCount__c,LastMContract4_ConCount__c, LastMContract4__r.Contract_Esti_Start_Date__c,LastMContract4__r.Contract_Esti_End_Date__c,LastMContract4__r.Contract_Period__c, LastMContract5__r.Management_Code__c,LastMContract5__c,LastMContract5_AssetCount__c,LastMContract5_ConCount__c, LastMContract5__r.Contract_Esti_Start_Date__c,LastMContract5__r.Contract_Esti_End_Date__c,LastMContract5__r.Contract_Period__c, Maintenance_Contract__r.Management_Code__c,Maintenance_Contract__c,Maintenance_Contract__r.Estimate_Asset_Cnt__c,Maintenance_Contract__r.ConAsset_count__c, Contract_Esti_Start_Date__c,Contract_Esti_End_Date__c,Contract_Range__c FROM Maintenance_Contract_Estimate__c WHERE Id = :this.targetEstimateId]; if (mCestimate != null) { estimate = new estimateInfo(mCestimate); } } public class estimateInfo { public Maintenance_Contract_Estimate__c mc { get; set; } public Decimal notcon1 { get; set; } public Decimal notcon2 { get; set; } public Decimal notcon3 { get; set; } public Decimal notcon4 { get; set; } public Decimal notcon5 { get; set; } public Decimal notconall { get; set; } public estimateInfo(Maintenance_Contract_Estimate__c in_mc) { mc = in_mc; if (mc.LastMContract1__c != null) { notcon1 = in_mc.LastMContract1_AssetCount__c - in_mc.LastMContract1_ConCount__c; } if (mc.LastMContract2__c != null) { notcon2 = in_mc.LastMContract2_AssetCount__c - in_mc.LastMContract2_ConCount__c; } if (mc.LastMContract3__c != null) { notcon3 = in_mc.LastMContract3_AssetCount__c - in_mc.LastMContract3_ConCount__c; } if (mc.LastMContract4__c != null) { notcon4 = in_mc.LastMContract4_AssetCount__c - in_mc.LastMContract4_ConCount__c; } if (mc.LastMContract5__c != null) { notcon5 = in_mc.LastMContract5_AssetCount__c - in_mc.LastMContract5_ConCount__c; } notconall = in_mc.Maintenance_Contract__r.Estimate_Asset_Cnt__c - in_mc.Maintenance_Contract__r.ConAsset_count__c; } } */ /* 1.获取当前合同的所有保有设备的上一期维修合同,group by 上一期维修合同id并count出其对应的续签过来的设备个数 2.将上一期维修合同的id和从该合同续签过来的保有设备的个数组成一个map集合 3.通过该map集合,获取其对应的维修合同的各个需要展示的数据,其中续签至申请合同的资产件数及未续签资产件数 需要手动计算 4.设置值 */ private void setThisEstimate(){ //update by rentongxiao 2020-09-25 JZHG-BQ36H8 把传入的id换为维修合同报价的id String mcId = ''; //1. 根据当前的维修合同报价获取该报价所对应的合同信息 List tmlist = [SELECT Maintenance_Contract__c,Contract_Esti_Start_Date__c,Contract_Esti_End_Date__c,Contract_Range__c FROM Maintenance_Contract_Estimate__c WHERE Id = :this.targetEstimateId]; if (tmlist.size() > 0) { this.mcec = tmlist.get(0); mcId = tmlist.get(0).Maintenance_Contract__c; } //1.获取当前合同的所有保有设备的上一期维修合同(根据上一期合同id去重) 以及许倩过来的设备的个数 AggregateResult[] aggArr = [ SELECT LastMContract__c,count(Id) cnt FROM Maintenance_Contract_Asset__c WHERE Maintenance_Contract__c = :mcId and LastMContract__c != null group by LastMContract__c ]; //2.获取维修合同id,以及续签过来设备的个数,放进map Map aggMap = new Map(); for (AggregateResult ar :aggArr ) { if (String.valueOf(ar.get('LastMContract__c')) != null && String.valueOf(ar.get('LastMContract__c')) != '') { if (Integer.valueOf(ar.get('cnt')) != null) { aggMap.put(String.valueOf(ar.get('LastMContract__c')), Integer.valueOf(ar.get('cnt'))); } } } //3.查询需要展示的维修合同信息 List mccList1 = [ SELECT Id,Management_Code__c,Estimate_Asset_Cnt__c,Contract_Start_Date__c,Contract_End_Date__c,Contract_Period__c,ConAsset_count__c ,Contract_Consumption_rate__c,Contract_Amount__c //LJPH-C7Z5GC 20211027 lt add FROM Maintenance_Contract__c WHERE Id in : aggMap.keySet() order by Contract_Start_Date__c desc ]; //4.赋值 List tempmccList = new List(); for(Maintenance_Contract__c mcc : mccList1){ System.debug('维修合同::'+mcc); for (String temp : aggMap.keySet()) { if (temp.equals(mcc.Id)) { estimateInfo es = new estimateInfo(mcc,aggMap.get(mcc.Id)); tempmccList.add(es); } } } mccList = tempmccList; //获取当前合同的信息 Maintenance_Contract__c tempmcc = [ SELECT Id,Management_Code__c,Estimate_Asset_Cnt__c,Contract_Esti_Start_Date__c,Contract_Esti_End_Date__c,Contract_Period__c,ConAsset_count__c ,Contract_Consumption_rate__c,Contract_Amount__c //LJPH-C7Z5GC 20211027 lt add FROM Maintenance_Contract__c WHERE Id = :mcId ]; //赋值 if (tempmcc != null) { mcc = new mccInfo(tempmcc,mccList,mcec); } } public class estimateInfo { //续签至申请合同的资产件数 public Decimal concount {get;set;} //未续签资产件数 public Decimal noconcount {get;set;} public Maintenance_Contract__c mc {get;set;} public estimateInfo(Maintenance_Contract__c in_mc,Integer count) { mc = in_mc; concount = count; noconcount = in_mc.Estimate_Asset_Cnt__c - count; } } public class mccInfo { //续签至申请合同的资产件数 public Decimal allconcount {get;set;} //未续签资产件数 public Decimal allnoconcount {get;set;} public String beginDate {get;set;} public String endDate {get;set;} public Decimal qijian {get;set;} public Maintenance_Contract__c mc {get;set;} public mccInfo(Maintenance_Contract__c in_mc,List mccList,Maintenance_Contract_Estimate__c mcec){ mc = in_mc; allnoconcount = 0; allconcount = 0; beginDate = String.valueOf(mcec.Contract_Esti_Start_Date__c); endDate = String.valueOf(mcec.Contract_Esti_End_Date__c); qijian = mcec.Contract_Range__c; for (estimateInfo est : mccList ) { allconcount += est.concount; } allnoconcount = in_mc.Estimate_Asset_Cnt__c - allconcount; } } //update by rentongxiao 2020-09-09 end }