高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/AssetModifyBelongsChangeHandler.cls
@@ -42,7 +42,10 @@
        Map<String,List<Maintenance_Contract_Asset__c>> OppAssMap = new Map<String,List<Maintenance_Contract_Asset__c>>();
        // 目标客户  合同询价编码set
        Map <string, Set<Maintenance_Contract__c>> vMOppMap = new  map <string, Set<Maintenance_Contract__c>>();
        // Map <string, Set<Maintenance_Contract_Asset__c>> vMOppMap = new  map <string, Set<Maintenance_Contract_Asset__c>>();
        // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 start
        Map<String, List<Id>> rpMcaNameMap = new Map<String, List<Id>>();
        Map<String, String> ChangeRepAssMap = new Map<String, String>();
        // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 end
        //add by rentx LJPH-C493WW  
        //LJPH-C493WW  fy   【委托】 【多年保合同】多年保设备转移造成的合同问题  start
@@ -117,6 +120,7 @@
                for (AssetModifyBelongsChangeDetail__c ambcDetail :ambcDetailList){
                    String accountIdStr = ambcDetail.ChangeAndChangeDetail__r.AccountField__c;
                    System.debug('accountIdStr:'+ ambcDetail.ChangeAndChangeDetail__r.AccountField__c);
                    Account acc = accMap.get(accountIdStr);
                    Asset asset = new Asset();
                    //判断目标客户的类型是否是"战略科室ET"
@@ -136,7 +140,6 @@
                    asset.Nameno__c = ambcDetail.ChangeAndChangeDetail__c;
                    asset.ChangeReasons__c = ambcDetail.ChangeAndChangeDetail__r.ChangeReason__c;
                    assetList.add(asset);
                    // 变更虚拟维修合同信息整理 start
                    if (maAssetMap.containsKey(asset.Id)) {
                        // if (changeAccMap.containsKey(accountIdStr)) {
@@ -165,6 +168,11 @@
                        //LJPH-C493WW  fy   【委托】 【多年保合同】多年保设备转移造成的合同问题  end
                        //update by rentx LJPH-C493WW  end
                        System.debug('maAssetMap.get(asset.Id)=====:'+maAssetMap.get(asset.Id));
                        // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 start
                        if(ambcDetail.ChangeAndChangeDetail__r.ChangeReason__c == '总院分院间调用'){
                            ChangeRepAssMap.put(maAssetMap.get(asset.Id).Maintenance_Contract__r.Management_Code__c, ambcDetail.ChangeAndChangeDetail__r.ChangeReason__c);
                        }
                        // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 end
                    }
                }
                System.debug('154::: vMOppMap '+vMOppMap);
@@ -175,6 +183,38 @@
                //
                if (vMOppMap.size() > 0) {
                    // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 start
                    List<String> mcaIdList = new List<String>();
                    Map<String, List<String>> RepairIdMap = new Map<String, List<String>>();
                    for (String accountId : vMOppMap.keySet()) {
                        System.debug('accountId1:' + accountId);
                        Set<Maintenance_Contract__c> mcSet = vMOppMap.get(accountId);
                        for(Maintenance_Contract__c mc : mcSet){
                            System.debug('ChangeRepAssMap1:' + ChangeRepAssMap);
                            System.debug('mc.Management_Code__c1:' + mc.Management_Code__c);
                            if(ChangeRepAssMap.containsKey(mc.Management_Code__c)){
                                mcaIdList.add(mc.Id);
                            }
                        }
                    }
                    System.debug('mcaIdList1:' + mcaIdList);
                    if(mcaIdList.size() > 0){
                        List<Repair__c> RepairList = [select Id, VM_Maintenance_Contract__c from Repair__c where VM_Maintenance_Contract__c   IN :mcaIdList];
                        if(RepairList.size() > 0){
                            for(Repair__c rp : RepairList){
                                List<String> newRepairIdList = new List<String>();
                                if(RepairIdMap.containsKey(rp.VM_Maintenance_Contract__c)){
                                    newRepairIdList = RepairIdMap.get(rp.VM_Maintenance_Contract__c);
                                    newRepairIdList.add(rp.Id);
                                    RepairIdMap.put(rp.VM_Maintenance_Contract__c, newRepairIdList);
                                } else{
                                    newRepairIdList.add(rp.Id);
                                    RepairIdMap.put(rp.VM_Maintenance_Contract__c, newRepairIdList);
                                }
                            }
                        }
                    }
                    // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 end
                    for (String str : vMOppMap.keySet()) {
                        //update by rentx LJPH-C493WW  start
                        Set<Maintenance_Contract__c> vset = vMOppMap.get(str);
@@ -225,6 +265,12 @@
                                    system.debug('vmc.Management_CodeVM__c ======'+vmc.Management_CodeVM__c);
                                    system.debug('addnumMap ======'+addnumMap);
                            }
                            // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 start
                            if(ChangeRepAssMap.containsKey(mcodes.Management_Code__c) && RepairIdMap.containsKey(mcodes.Id)){
                                rpMcaNameMap.put(vmc.Management_CodeVM__c, RepairIdMap.get(mcodes.Id));
                            }
                            System.debug('rpMcaNameMap====' + rpMcaNameMap);
                            // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 end
                            //LJPH-C493WW  fy   【委托】 【多年保合同】多年保设备转移造成的合同问题  end
                            vmc.Department__c = accMap.get(str).Id;
                            vmc.Department_Class__c = accMap.get(str).ParentId;
@@ -254,6 +300,11 @@
                                system.debug('mctrobject.Id===='+mctrobject.Id);
                                system.debug('mctrobject.Add_Number__c======='+mctrobject.Add_Number__c);
                                //LJPH-C493WW  fy   【委托】 【多年保合同】多年保设备转移造成的合同问题  end
                                // 给总院分院间调用的维修合同保有设备的总院分院间变更标识赋true thh 20220426 start
                                if(ChangeRepAssMap.containsKey(mac.Maintenance_Contract__r.Management_Code__c)){
                                    mac.General_Branch_Changeflag__c = true;
                                }
                                // 给总院分院间调用的维修合同保有设备的总院分院间变更标识赋true thh 20220426 end
                                v_MCdetUpList.add(mac);
                            }
                            v_MCdetnewMap.put(mcode, mcatempList);
@@ -322,9 +373,48 @@
                    mca.Maintenance_Contract__c = v_MCMap.get(str).Id;
                    mca.startDateGurantee_changgeAcc__c = Date.today();
                    mca.ChangeAcc_flag__c = true;
                    // 给总院分院间调用的维修合同保有设备的总院分院间变更标识赋true thh 20220426 start
                    if(ChangeRepAssMap.containsKey(mca.Maintenance_Contract__r.Management_Code__c)){
                        mca.General_Branch_Changeflag__c = true;
                    }
                    // 给总院分院间调用的维修合同保有设备的总院分院间变更标识赋true thh 20220426 end
                    v_MCdetinList.add(mca);
                }
            }
            // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 Start
            List<Repair__c> updateRpList = new List<Repair__c>();
            Map<Id, Repair__c> rpMap = new Map<Id, Repair__c>();
            List<Repair__c> rpList = new List<Repair__c>();
            List<String> rpIdList = new List<String>();
            for(String str : v_MCMap.keySet()){
                Maintenance_Contract__c mc = v_MCMap.get(str);
                rpIdList = rpMcaNameMap.get(mc.Management_CodeVM__c);
            }
            if(rpIdList != null && rpIdList.size() > 0){
                rpList = [select Id, VM_Maintenance_Contract__c from Repair__c where Id IN : rpIdList];
            }
            if(rpList.size() > 0){
                for(Repair__c rp : rpList){
                    rpMap.put(rp.Id, rp);
                }
            }
            for(String str : v_MCMap.keySet()){
                Maintenance_Contract__c mc = v_MCMap.get(str);
                if(rpMcaNameMap.containsKey(mc.Management_CodeVM__c)){
                    List<String> newrpIdList = rpMcaNameMap.get(mc.Management_CodeVM__c);
                    if(newrpIdList != null && newrpIdList.size() > 0){
                        for(Id rpId : newrpIdList){
                            Repair__c rp = rpMap.get(rpId);
                            rp.VM_Maintenance_Contract__c = mc.Id;
                            updateRpList.add(rp);
                        }
                    }
                }
            }
            if(updateRpList.size() > 0){
                update updateRpList;
            }
            // 总院分院间调用的保有设备,变更前发送的修理要计入到变更后的合同里 thh 20220418 end
            // 插入变更新合同的维修合同保有设备
            insert v_MCdetinList;
            // 更新现有合同的维修合同保有设备