123
chenjingwu
2024-04-23 b51b57a619d3f0075ccaa13303c99c9e849bf23a
force-app/main/default/classes/MaintenanceProductDataController.cls
@@ -53,6 +53,7 @@
    public List<MultiYearWarranty__c> muList { get; set; }
    public Map<String,List<MultiYearWarranty__c>> muMap { get; set; }
    public Map<String,Integer> muCountMap {get; set; }
    public Map<String,List<ExMpdDetailsInfo>>  exmpdDetailsRecordsMap { get; set; }
    // chenjingwu 3+2多年保修 end
     /*****************画面表示Bean******************/
@@ -527,7 +528,32 @@
                    ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO,  '还没有上传附件,请上传附件!'));
                } 
            }
            //System.debug('============02:'+mpdDetailsRecords);
            //System.debug('============02:'+mpdDetailsRecords);
            if(mpdDetailsRecords.size() > 0 && RecordTypeName.equals('GuranteeMain')){
                // chenjingwu 3+2多年保修 20240417 start
                List<String> idList = new List<String>();
                for(MpdDetailsInfo mp :mpdDetailsRecords){
                    idList.add(mp.mpded.ProductsID__c);
                }
                // chenjingwu 3+2多年保修 20240417 end
                // chenjingwu 3+2多年保修 20240417 start
                exmpdDetailsRecordsMap = new Map<String,List<ExMpdDetailsInfo>>();
                muCountMap = new Map<String,Integer>();
                List<Maintenance_Product_Data_Details__c> exDetailList = [select Id,MultiYearWarranty__c,AgeLimit__c,AgeLimit_Old__c,MultiOneYearWarrantyPrice__c,MultiOneYearWarrantyPrice_Old__c,AmountWithheld__c,AmountWithheld_Old__c,ProductsID__c from Maintenance_Product_Data_Details__c where ProductsID__c in:idList and RecordTypeId = '012C50000000jefIAA'];
                if(exDetailList.size() > 0){
                    for(String id: idList){
                        List<ExMpdDetailsInfo> exList = new List<ExMpdDetailsInfo>();
                        for(Maintenance_Product_Data_Details__c mpdd: exDetailList){
                            if(id == mpdd.ProductsID__c){
                                exList.add(new ExMpdDetailsInfo(mpdd));
                            }
                        }
                        exList.add(new ExMpdDetailsInfo());
                        exmpdDetailsRecordsMap.put(id,exList);
                    }
                }
                // chenjingwu 3+2多年保修   20240417 end
            }
        }    
    }
    // 检索
@@ -656,9 +682,6 @@
                //20200618 类型一致不一致不能保存 add start
                Boolean isWarning = false;
                String  contentWarning = '';
                // chenjingwu 3+2多年保修 20240417 start
                List<String> idList = new List<String>();
                // chenjingwu 3+2多年保修 20240417 end
                for (MaintenanceProductDataDetailsInfo ass : mpdDetailsRecordsView)  {
                    Roll = Roll+1;
                    if(ass.check == true){
@@ -672,9 +695,6 @@
                        InsAfterDel.Maintenance_Product_Data__c = mpd_Name[0].id;
                        InsAfterDel.Name = mpd_Name[0].Name + '-'+ str;
                        InsAfterDel.ProductsID__c = ass.Prod.id;
                        // chenjingwu 3+2多年保修 20240417 start
                        idList.add(ass.Prod.id);
                        // chenjingwu 3+2多年保修 20240417 end
                        switch on RecordTypeName {
                            when 'ImportantProduct'{
                                //InsAfterDel.RecordTypeName__c = 'ImportantProduct';
@@ -868,27 +888,61 @@
                        Ins.add(InsAfterDel);     
                    }
                }
                // chenjingwu 3+2多年保修 20240417 start
                muList = [select Id,AgeLimit__c,MultiOneYearWarrantyPrice__c,AmountWithheld__c,ProductName__c from MultiYearWarranty__c where ProductName__c in: idList order By ProductName__c];
                  for(AggregateResult  objAgr: [select ProductName__c,COUNT(Id) total from MultiYearWarranty__c where ProductName__c in:idList group by ProductName__c]){
                    muCountMap.put((String)objAgr.get('ProductName__c'), (Integer)objAgr.get('total'));
                  }
                for(String id: idList){
                    List<MultiYearWarranty__c> mus = new List<MultiYearWarranty__c>();
                    for(MultiYearWarranty__c mu: muList){
                        if(id == mu.ProductName__c){
                            mus.add(mu);
                List<Maintenance_Product_Data_Details__c> exIntList = new List<Maintenance_Product_Data_Details__c>();
                if(mpdDetailsRecords.size() > 0 && RecordTypeName.equals('GuranteeMain')){
                    if(exmpdDetailsRecordsMap == null){
                        // chenjingwu 3+2多年保修 20240417 start
                        List<String> idList = new List<String>();
                        for(MaintenanceProductDataDetailsInfo ass :mpdDetailsRecordsView){
                            if(ass.check == true){
                                idList.add(ass.Prod.id);
                            }
                        }
                        // chenjingwu 3+2多年保修 20240417 end
                        // chenjingwu 3+2多年保修 20240417 start
                        muList = [select Id,AgeLimit__c,MultiOneYearWarrantyPrice__c,AmountWithheld__c,ProductName__r.Name,ProductName__c from MultiYearWarranty__c where ProductName__c in: idList order By ProductName__c];
                        for(MultiYearWarranty__c mu: muList){
                            Maintenance_Product_Data_Details__c insmpdd = new Maintenance_Product_Data_Details__c();
                            insmpdd.AgeLimit__c = mu.AgeLimit__c;
                            insmpdd.MultiYearWarranty__c = mu.Id;
                            insmpdd.MultiOneYearWarrantyPrice__c = mu.MultiOneYearWarrantyPrice__c;
                            insmpdd.AmountWithheld__c = mu.AmountWithheld__c;
                            insmpdd.AgeLimit_Old__c = mu.AgeLimit__c;
                            insmpdd.MultiOneYearWarrantyPrice_Old__c = mu.MultiOneYearWarrantyPrice__c;
                            insmpdd.AmountWithheld_Old__c = mu.AmountWithheld__c;
                            insmpdd.RecordTypeId = '012C50000000jefIAA';
                            exIntList.add(insmpdd);
                        }
                    } else{
                        for(List<ExMpdDetailsInfo> li: exmpdDetailsRecordsMap.values()){
                            for(ExMpdDetailsInfo ex: li){
                                Maintenance_Product_Data_Details__c InsAfterDel = new Maintenance_Product_Data_Details__c();
                                InsAfterDel.AgeLimit__c = ex.mpdrdd.AgeLimit__c;
                                InsAfterDel.MultiYearWarranty__c = ex.mpdrdd.MultiYearWarranty__c;
                                InsAfterDel.MultiOneYearWarrantyPrice__c = ex.mpdrdd.MultiOneYearWarrantyPrice__c;
                                InsAfterDel.AmountWithheld__c = ex.mpdrdd.AmountWithheld__c;
                                InsAfterDel.AgeLimit_Old__c = ex.Prod.AgeLimit__c;
                                InsAfterDel.MultiOneYearWarrantyPrice_Old__c = ex.Prod.MultiOneYearWarrantyPrice__c;
                                InsAfterDel.AmountWithheld_Old__c = ex.Prod.AmountWithheld__c;
                                InsAfterDel.RecordTypeId = '012C50000000jefIAA';
                                exIntList.add(InsAfterDel);
                            }
                        }
                    }
                    mus.add(new MultiYearWarranty__c(ProductName__c = id));
                    muMap.put(id,mus);
                    // chenjingwu 3+2多年保修   20240417 end
                }
                // chenjingwu 3+2多年保修   20240417 end
                if(isWarning){
                    return null;
                }else{
                    if(Ins.size()>0){
                        upsert Ins;
                        upsert exIntList;
                        return setEditAble();
                    }else{
                        return null;
@@ -1481,4 +1535,35 @@
        }
    }
    class ExMpdDetailsInfo  {
        public Boolean check { get; set; }
        public Boolean oldCheck { get; set; }
        public Boolean canSelect { get; set; }
        public MultiYearWarranty__c Prod { get; set; }
        public Maintenance_Product_Data_Details__c mpdrdd {get; set;}
        public ExMpdDetailsInfo(Maintenance_Product_Data_Details__c e) {
            check = true;
            oldCheck = true;
            mpdrdd = e;
            Prod = e.MultiYearWarranty__r;
            canSelect = true;
        }
        public ExMpdDetailsInfo(MultiYearWarranty__c e) {
            check = false;
            oldCheck = false;
            mpdrdd = new Maintenance_Product_Data_Details__c();
            Prod = e;
            canSelect = true;
        }
        public ExMpdDetailsInfo() {
            check = false;
            oldCheck = false;
            mpdrdd = new Maintenance_Product_Data_Details__c();
            Prod = new MultiYearWarranty__c();
            canSelect = true;
        }
    }
}