高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/OpportunityLineItemTrigger.cls
@@ -22,7 +22,7 @@
        List<OpportunityLineItem> retList =
            [Select Id, OpportunityId, Category3__c, Product2.MDM_Model_No__c, Opportunity.STMS_Package_Sale__c
             , Opportunity.State_Owner__c, Product2.Family, Opportunity.EnergyHost__c
             , Opportunity.State_Owner__c, Product2.Family, Opportunity.EnergyHost__c, Product2.Asset_Model_No__c
             from OpportunityLineItem
             where OpportunityId in: selIds
             order by OpportunityId];
@@ -51,6 +51,14 @@
                }
            }
            Map<String, Opportunity> updateOpportunityMap = new Map<String, Opportunity>();
            Boolean flg_usg =false;
            Boolean flg_usg1 =false;
            for (OpportunityLineItem oli1 : retList) {
                if(oli1.Product2.Asset_Model_No__c != null && oli1.Product2.Asset_Model_No__c.contains('USG-400')){
                    flg_usg1 = true;
                    break;
                }
            }
            for (OpportunityLineItem oli : retList) {
                // 获取原字段值
                String oppId = oli.OpportunityId;
@@ -67,16 +75,30 @@
                        // 判断 询价产品是否含有 ENG 主机 产品
                        string mapkey1 = 'ENG_主机';
                        string mapkey2 = 'ENG_能量主机';
                        //if (oli.Product2.Asset_Model_No__c != null && oli.Product2.Asset_Model_No__c.contains('USG-400')) {
                        //     flg_usg = true;
                        // }
                        if (familyMap.containsKey(mapkey1) || familyMap.containsKey(mapkey2)) {
                            OpportunityLineItem FamMap1 = familyMap.get(mapkey1);
                            OpportunityLineItem FamMap2 = familyMap.get(mapkey2);
                            if((FamMap1 !=null && FamMap1.Product2.Asset_Model_No__c != null && FamMap1.Product2.Asset_Model_No__c.contains('USG-400')) || (FamMap2 !=null &&FamMap2.Product2.Asset_Model_No__c != null && FamMap2.Product2.Asset_Model_No__c.contains('USG-400'))){
                               flg_usg = true;
                            }
                            system.debug('flg_usg=='+flg_usg+'========='+familyMap.size());
                            // 只含有 ENG 主机产品
                            if (familyMap.size() == 1 ) {
                                //能量打包 False
                                //能量主机 True
                                if (getOldStmsPackageSale || !getOldEnergyHost) {
                                //if (getOldStmsPackageSale || !getOldEnergyHost) {
                                    updateOpportunity.STMS_Package_Sale__c = false;
                                    updateOpportunity.EnergyHost__c =  true;
                                    //updateOpportunity.EnergyHost__c =  true;
                                    if(flg_usg){
                                        updateOpportunity.EnergyHost__c =  true;
                                    }else{
                                        updateOpportunity.EnergyHost__c =  false;
                                    }
                                    updateOpportunityMap.put(oppId, updateOpportunity);
                                }
                                //}
                            } else {
                                //判断是否都是主机
                                Boolean principalMachine = true;
@@ -84,6 +106,7 @@
                                Boolean energyHost = true;
                                Boolean notContains = true;
                                Boolean principalMachinENG = false;
                                for(String key :familyMap.keySet()) {
@@ -99,17 +122,26 @@
                                            principalMachinENG = true;
                                        }
                                    } 
                                }
                                system.debug(energyHost+'===='+notContains+'===='+principalMachinENG);
                                
                                system.debug('==='+flg_usg1);
                                if (energyHost ) {
                                    // 都是能量主机
                                    //能量打包 False
                                    //能量主机 True
                                    if (getOldStmsPackageSale || !getOldEnergyHost) {
                                    system.debug('能量打包=='+getOldStmsPackageSale+'==能量主机=='+getOldEnergyHost);
                                    //if (getOldStmsPackageSale || !getOldEnergyHost) {
                                        updateOpportunity.STMS_Package_Sale__c = false;
                                        updateOpportunity.EnergyHost__c =  true;
                                        //updateOpportunity.EnergyHost__c =  true;
                                        if(flg_usg1){
                                            updateOpportunity.EnergyHost__c =  true;
                                        }else{
                                            updateOpportunity.EnergyHost__c =  false;
                                        }
                                        updateOpportunityMap.put(oppId, updateOpportunity);
                                    }
                                    //}
                                   
                                   
                                } else {
@@ -117,27 +149,42 @@
                                        // 只有 ENG 主机
                                        //能量打包 False
                                        //能量主机 True
                                        if (getOldStmsPackageSale || !getOldEnergyHost) {
                                        //if (getOldStmsPackageSale || !getOldEnergyHost) {
                                            updateOpportunity.STMS_Package_Sale__c = false;
                                            updateOpportunity.EnergyHost__c =  true;
                                            //updateOpportunity.EnergyHost__c =  true;
                                            if(flg_usg1){
                                                updateOpportunity.EnergyHost__c =  true;
                                            }else{
                                                updateOpportunity.EnergyHost__c =  false;
                                            }
                                            updateOpportunityMap.put(oppId, updateOpportunity);
                                        }
                                        //}
                                    } else {
                                        if (principalMachinENG ) {
                                            // 能量打包 True
                                            // 能量主机 False
                                            if (!getOldStmsPackageSale || getOldEnergyHost) {
                                            //if (!getOldStmsPackageSale || getOldEnergyHost) {
                                                updateOpportunity.STMS_Package_Sale__c = true;
                                                updateOpportunity.EnergyHost__c =  false;
                                                //updateOpportunity.EnergyHost__c =  false;
                                                if(flg_usg1){
                                                    updateOpportunity.EnergyHost__c =  true;
                                                }else{
                                                    updateOpportunity.EnergyHost__c =  false;
                                                }
                                                updateOpportunityMap.put(oppId, updateOpportunity);
                                            }
                                            //}
                                        } else {
                                            if (getOldStmsPackageSale || getOldEnergyHost) {
                                            //if (getOldStmsPackageSale || getOldEnergyHost) {
                                                updateOpportunity.STMS_Package_Sale__c = false;
                                                updateOpportunity.EnergyHost__c =  false;
                                                //updateOpportunity.EnergyHost__c =  false;
                                                if(flg_usg1){
                                                    updateOpportunity.EnergyHost__c =  true;
                                                }else{
                                                    updateOpportunity.EnergyHost__c =  false;
                                                }
                                                updateOpportunityMap.put(oppId, updateOpportunity);
                                            }
                                            //}
                                        }
                                    }
                                }
@@ -175,7 +222,6 @@
                    }
                }
            }