高章伟
2022-02-18 8b5f4c6c281cfa548f92de52c8021e37aa81901e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
public without sharing class MCLastMContractController {
    // public estimateInfo estimate { get; set; }
    public String targetEstimateId { get; private set; }
    public List<estimateInfo> 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<Maintenance_Contract_Estimate__c> 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<String,Integer> aggMap = new Map<String,Integer>();
        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<Maintenance_Contract__c> 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<estimateInfo> tempmccList = new List<estimateInfo>();
        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<estimateInfo> 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
}