123
chenjingwu
2024-04-25 f7da22d3d9ee245ba7b6efe658ecfa149a6b2ec7
force-app/main/default/classes/MaintenanceProductDataController.cls
@@ -53,7 +53,9 @@
    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,Integer> muCountViewMap {get; set; }
    public Map<String,List<ExMpdDetailsInfo>>  exmpdDetailsRecordsMap { get; set; }
    public Map<String,List<ExMpdDetailsInfo>>  exmpdDetailsRecordsViewMap { get; set; }
    // chenjingwu 3+2多年保修 end
     /*****************画面表示Bean******************/
@@ -537,22 +539,31 @@
                }
                // chenjingwu 3+2多年保修 20240417 end
                // chenjingwu 3+2多年保修 20240417 start
                exmpdDetailsRecordsMap = new Map<String,List<ExMpdDetailsInfo>>();
                exmpdDetailsRecordsMap = new Map<String,List<ExMpdDetailsInfo>>();
                exmpdDetailsRecordsViewMap = new Map<String,List<ExMpdDetailsInfo>>();
                muCountMap = new Map<String,Integer>();
                muCountViewMap = new Map<String,Integer>();
                List<Maintenance_Product_Data_Details__c> exDetailList = [select Id,MultiYearWarranty__c,MultiYearWarranty__r.AgeLimit__c,MultiYearWarranty__r.MultiOneYearWarrantyPrice__c,MultiYearWarranty__r.AmountWithheld__c,AgeLimit__c,AgeLimit_Old__c,MultiOneYearWarrantyPrice__c,MultiOneYearWarrantyPrice_Old__c,AmountWithheld__c,AmountWithheld_Old__c,ProductsID__c,ProductsID__r.Name 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>();
                        List<ExMpdDetailsInfo> exViewList = new List<ExMpdDetailsInfo>();
                        for(Maintenance_Product_Data_Details__c mpdd: exDetailList){
                            if(id == mpdd.ProductsID__c){
                                exList.add(new ExMpdDetailsInfo(mpdd));
                                exViewList.add(new ExMpdDetailsInfo(mpdd));
                            }
                        }
                        exList.add(new ExMpdDetailsInfo());
                        if(exList.size() <= 0){
                            exViewList.add(new ExMpdDetailsInfo());
                        }
                        ExMpdDetailsInfo exd = new ExMpdDetailsInfo();
                        exd.mpdrdd.ProductsID__c = id;
                        exList.add(exd);
                        muCountMap.put(id,exList.size());
                        muCountViewMap.put(id,exViewList.size());
                        exmpdDetailsRecordsMap.put(id,exList);
                        exmpdDetailsRecordsViewMap.put(id,exViewList);
                    }
                }
                System.debug('chenjingwu=>' + idList);
                System.debug('chenjingwu=>' + muCountMap);
                System.debug('chenjingwu=>' + exmpdDetailsRecordsMap);
@@ -651,7 +662,8 @@
                //更新
                mpd_Name = [SELECT id,Name FROM Maintenance_Product_Data__c WHERE id =:id];
            }
            List<Maintenance_Product_Data_Details__c> mpdd_Name = [SELECT id,Name FROM Maintenance_Product_Data_Details__c where Maintenance_Product_Data__c =:id order by Name desc Limit 1 ];
            String str1 = '%ex%';
            List<Maintenance_Product_Data_Details__c> mpdd_Name = [SELECT id,Name FROM Maintenance_Product_Data_Details__c where Maintenance_Product_Data__c =:id and (NOT Name like:str1) order by Name desc Limit 1 ];
            if(mpdd_Name.size()>0){
                String[] nameI= mpdd_Name[0].Name.split('-');
                i = Integer.valueOf(nameI[1])+1;
@@ -895,16 +907,16 @@
                }
                List<Maintenance_Product_Data_Details__c> exIntList = new List<Maintenance_Product_Data_Details__c>();
                if(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
                     List<String> idList = new List<String>();
                     for(MaintenanceProductDataDetailsInfo ass :mpdDetailsRecordsView){
                         if(ass.check == true){
                             idList.add(ass.Prod.id);
                         }
                     }
                     // chenjingwu 3+2多年保修 20240417 end
                    List<Maintenance_Product_Data_Details__c> exDetailList = [select Id,MultiYearWarranty__c,MultiYearWarranty__r.AgeLimit__c,MultiYearWarranty__r.MultiOneYearWarrantyPrice__c,MultiYearWarranty__r.AmountWithheld__c,AgeLimit__c,AgeLimit_Old__c,MultiOneYearWarrantyPrice__c,MultiOneYearWarrantyPrice_Old__c,AmountWithheld__c,AmountWithheld_Old__c,ProductsID__c,ProductsID__r.Name from Maintenance_Product_Data_Details__c where ProductsID__c in:idList and RecordTypeId = '012C50000000jefIAA'];
                    if(exDetailList.size() <= 0){
                        // 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];
                        Integer str = 0;
@@ -927,24 +939,27 @@
                            str++;
                        }
                    } else{
                        delete exDetailList;
                        Integer str = 0;
                        for(List<ExMpdDetailsInfo> li: exmpdDetailsRecordsMap.values()){
                            for(ExMpdDetailsInfo ex: li){
                                Maintenance_Product_Data_Details__c InsAfterDel = new Maintenance_Product_Data_Details__c();
                                InsAfterDel.Maintenance_Product_Data__c = mpd_Name[0].id;
                                InsAfterDel.Name = mpd_Name[0].Name + '-ex'+ str;
                                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.ProductsID__c = ex.mpdrdd.ProductName__c;
                                if(ex.mpdrdd.AgeLimit__c > 0){
                                    Maintenance_Product_Data_Details__c InsAfterDel = new Maintenance_Product_Data_Details__c();
                                    InsAfterDel.Maintenance_Product_Data__c = mpd_Name[0].id;
                                    InsAfterDel.Name = mpd_Name[0].Name + '-ex'+ str;
                                    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.ProductsID__c = ex.mpdrdd.ProductsID__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);
                                str++;
                                    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);
                                    str++;
                                }
                            }
                        }
                    }
@@ -1158,11 +1173,46 @@
                        }
                        Ins.add(upMpd);    
                    }
                    List<Maintenance_Product_Data_Details__c> exIntList = new List<Maintenance_Product_Data_Details__c>();
                    List<Maintenance_Product_Data_Details__c> exDetailList = new List<Maintenance_Product_Data_Details__c>();
                    if(RecordTypeName.equals('GuranteeMain')){
                        List<Maintenance_Product_Data__c> mpd_Name = new List<Maintenance_Product_Data__c>();
                        mpd_Name = [SELECT id,Name FROM Maintenance_Product_Data__c WHERE id =:id];
                        exDetailList = [SELECT id,Name FROM Maintenance_Product_Data_Details__c where Maintenance_Product_Data__c =:id and RecordTypeId = '012C50000000jefIAA'];
                        Integer str = 0;
                        for(List<ExMpdDetailsInfo> li: exmpdDetailsRecordsMap.values()){
                            for(ExMpdDetailsInfo ex: li){
                                if(ex.mpdrdd.AgeLimit__c > 0){
                                    Maintenance_Product_Data_Details__c InsAfterDel = new Maintenance_Product_Data_Details__c();
                                    InsAfterDel.Maintenance_Product_Data__c = mpd_Name[0].id;
                                    InsAfterDel.Name = mpd_Name[0].Name + '-ex'+ str;
                                    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.ProductsID__c = ex.mpdrdd.ProductsID__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);
                                    str++;
                                }
                            }
                        }
                    // chenjingwu 3+2多年保修   20240417 end
                   }
                   System.debug('chenjingwu=>' + exIntList);
                    if(isWarning){
                        return null;
                    }else{
                        if(Ins.size()>0){
                            update Ins;
                            if(exIntList.size() > 0){
                                delete exDetailList;
                                upsert exIntList;
                            }
                            return UnabletoEdit();
                        }
                        else{ 
@@ -1341,6 +1391,20 @@
        ref.setRedirect(true);
        return ref;
    }
    public String ProId {get;set;}
    public Integer index{get;set;}
    public PageReference addEx(){
        ExMpdDetailsInfo ex = new ExMpdDetailsInfo();
        ex.mpdrdd.ProductsID__c = ProId;
        exmpdDetailsRecordsMap.get(ProId).add(ex);
        muCountMap.get(ProId);
        return null;
    }
    public PageReference deleteEx(){
        exmpdDetailsRecordsMap.get(ProId).remove(index);
        muCountMap.get(ProId);
        return null;
    }
    
    //搜索时的sql
    public String makeSoql(String Family,String Category2,String Category3,String Category4,String Category5,String CateName,String ProductCode_Ext,String GuranteeType){