From d8dc84a3d56df839895f1c417a4d9cbee763d262 Mon Sep 17 00:00:00 2001
From: 高章伟 <gaozhangwei@prec-tech.com>
Date: 星期五, 03 三月 2023 14:50:59 +0800
Subject: [PATCH] gzw 测试环境代码更新

---
 force-app/main/default/classes/AssetModifyBelongsChangeHandler.cls |  150 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 130 insertions(+), 20 deletions(-)

diff --git a/force-app/main/default/classes/AssetModifyBelongsChangeHandler.cls b/force-app/main/default/classes/AssetModifyBelongsChangeHandler.cls
index a0f1e46..27ca753 100644
--- a/force-app/main/default/classes/AssetModifyBelongsChangeHandler.cls
+++ b/force-app/main/default/classes/AssetModifyBelongsChangeHandler.cls
@@ -41,11 +41,15 @@
         // 鍚堝悓璇环缂栫爜   缁翠慨鍚堝悓/淇濇湁璁惧闆嗗悎
         Map<String,List<Maintenance_Contract_Asset__c>> OppAssMap = new Map<String,List<Maintenance_Contract_Asset__c>>();
         // 鐩爣瀹㈡埛  鍚堝悓璇环缂栫爜set
-        Map <string, Set<Maintenance_Contract_Asset__c>> vMOppMap = new  map <string, Set<Maintenance_Contract_Asset__c>>();
+        Map <string, Set<Maintenance_Contract__c>> vMOppMap = new  map <string, Set<Maintenance_Contract__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
-    	List<Maintenance_Contract__c> MainCList=new List<Maintenance_Contract__c>();
+    	Map<String,Maintenance_Contract__c> MainCMap=new Map<String,Maintenance_Contract__c>();
         //LJPH-C493WW  fy	銆愬鎵樸�� 銆愬骞翠繚鍚堝悓銆戝骞翠繚璁惧杞Щ閫犳垚鐨勫悎鍚岄棶棰�  end
         if(idList != null && idList.size() > 0){
     		
@@ -116,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"
@@ -135,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)) {
@@ -152,11 +156,23 @@
                         //update by rentx LJPH-C493WW  start
                         //LJPH-C493WW  fy	銆愬鎵樸�� 銆愬骞翠繚鍚堝悓銆戝骞翠繚璁惧杞Щ閫犳垚鐨勫悎鍚岄棶棰�  start
                         if (!vMOppMap.containsKey(accountIdStr)) {
-                            vMOppMap.put(accountIdStr, new Set<Maintenance_Contract_Asset__c>());
+                            vMOppMap.put(accountIdStr, new Set<Maintenance_Contract__c>());
+                            // vMOppMap.put(accountIdStr, new Set<Maintenance_Contract_Asset__c>());
                         }
-                        vMOppMap.get(accountIdStr).add(maAssetMap.get(asset.Id));
+                        Maintenance_Contract__c maintenancecontc=new Maintenance_Contract__c();
+                        maintenancecontc.Id = maAssetMap.get(asset.Id).Maintenance_Contract__c;
+                        maintenancecontc.Add_Number__c = maAssetMap.get(asset.Id).Maintenance_Contract__r.Add_Number__c;
+                        maintenancecontc.Management_Code__c = maAssetMap.get(asset.Id).Maintenance_Contract__r.Management_Code__c;
+                        vMOppMap.get(accountIdStr).add(maintenancecontc);
+                        // vMOppMap.get(accountIdStr).add(maAssetMap.get(asset.Id));
                         //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);
@@ -167,18 +183,54 @@
 
                 //
                 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_Asset__c> vset = vMOppMap.get(str);
+                        Set<Maintenance_Contract__c> vset = vMOppMap.get(str);
+                        //Set<Maintenance_Contract_Asset__c> vset = vMOppMap.get(str);
                         //LJPH-C493WW  fy	銆愬鎵樸�� 銆愬骞翠繚鍚堝悓銆戝骞翠繚璁惧杞Щ閫犳垚鐨勫悎鍚岄棶棰�  start
-                        for (Maintenance_Contract_Asset__c mcodes : vset) {
+                        for (Maintenance_Contract__c mcodes : vset) {
+                        //for (Maintenance_Contract_Asset__c mcodes : vset) {
                             Maintenance_Contract__c vmc = new Maintenance_Contract__c();
                             vmc.Name = accMap.get(str).Parent.Parent.Name + '澶氬勾淇濅慨';
                             vmc.Status__c = '濂戠磩';
                             system.debug('mcodes==='+mcodes);
                             // List<String> mcodestrList= mcodes.split('@');
-                            String mcode =mcodes.Maintenance_Contract__r.Management_Code__c;
-                            String mcid=(String)mcodes.Maintenance_Contract__c;
+                            // String mcode =mcodes.Maintenance_Contract__r.Management_Code__c;
+                            // String mcid=(String)mcodes.Maintenance_Contract__c;
+                            String mcode =mcodes.Management_Code__c;
+                            String mcid=(String)mcodes.Id;
                             // String addNumber =mcodestrList[1];
                             Map<String,Decimal> addnumMap = new Map<String,Decimal>();
                             if (String.isNotBlank(mcode) && mcode.substring(mcode.length()-3,mcode.length()-2) == '-' ) {
@@ -186,17 +238,24 @@
                                 Integer count = Integer.valueOf(mcode.substring(mcode.length()-2,mcode.length()));
                                 
                                 vmc.Management_CodeVM__c = startstr + String.valueOf(count +1).leftPad(2,'0');
-                                mcodes.Maintenance_Contract__r.Add_Number__c=count +1;
-                                addnumMap.put(mcid,mcodes.Maintenance_Contract__r.Add_Number__c);
+                                // mcodes.Maintenance_Contract__r.Add_Number__c=count +1;
+                                // addnumMap.put(mcid,mcodes.Maintenance_Contract__r.Add_Number__c);
+                                mcodes.Add_Number__c=count +1;
+                                addnumMap.put(mcid,mcodes.Add_Number__c);
                             }else{
-                                    system.debug('mcodes.Maintenance_Contract__r.Add_Number__c'+mcodes.Maintenance_Contract__r.Add_Number__c);
-                                    if(mcodes.Maintenance_Contract__r.Add_Number__c==null||mcodes.Maintenance_Contract__r.Add_Number__c==0){
+                                    system.debug('mcodes.Maintenance_Contract__r.Add_Number__c'+mcodes.Add_Number__c);
+                                    if(mcodes.Add_Number__c==null||mcodes.Add_Number__c==0){
+                                    // if(mcodes.Maintenance_Contract__r.Add_Number__c==null||mcodes.Maintenance_Contract__r.Add_Number__c==0){
                                         vmc.Management_CodeVM__c = mcode + '-01';
-                                        mcodes.Maintenance_Contract__r.Add_Number__c=1;
-                                        addnumMap.put(mcid,mcodes.Maintenance_Contract__r.Add_Number__c);
+                                        // mcodes.Maintenance_Contract__r.Add_Number__c=1;
+                                        // addnumMap.put(mcid,mcodes.Maintenance_Contract__r.Add_Number__c);
+                                        mcodes.Add_Number__c=1;
+                                        addnumMap.put(mcid,mcodes.Add_Number__c);
                                     }else{
-                                        Decimal addnum = mcodes.Maintenance_Contract__r.Add_Number__c+1;
-                                        if(mcodes.Maintenance_Contract__r.Add_Number__c<=9){
+                                        // Decimal addnum = mcodes.Maintenance_Contract__r.Add_Number__c+1;
+                                        // if(mcodes.Maintenance_Contract__r.Add_Number__c<=9){
+                                        Decimal addnum = mcodes.Add_Number__c+1;
+                                        if(mcodes.Add_Number__c<=9){
                                             vmc.Management_CodeVM__c = mcode + '-0'+addnum;
                                         }else{
                                             vmc.Management_CodeVM__c = mcode + '-'+addnum;
@@ -206,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;
@@ -231,10 +296,15 @@
                                 //LJPH-C493WW  fy	銆愬鎵樸�� 銆愬骞翠繚鍚堝悓銆戝骞翠繚璁惧杞Щ閫犳垚鐨勫悎鍚岄棶棰�  start
                                 mctrobject.Id=mac.Maintenance_Contract__c;
                                 mctrobject.Add_Number__c=addnumMap.get(mac.Maintenance_Contract__c);
-                                MainCList.add(mctrobject);
+                                MainCMap.put(mctrobject.Id,mctrobject);
                                 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);
@@ -303,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;
             // 鏇存柊鐜版湁鍚堝悓鐨勭淮淇悎鍚屼繚鏈夎澶�
@@ -316,8 +425,9 @@
         	update assetList;
         }
         //LJPH-C493WW  fy	銆愬鎵樸�� 銆愬骞翠繚鍚堝悓銆戝骞翠繚璁惧杞Щ閫犳垚鐨勫悎鍚岄棶棰�  start
-        if(MainCList != null && MainCList.size() > 0){
-            update MainCList;
+        if(MainCMap != null && MainCMap.size() > 0){
+            List<Maintenance_Contract__c> mainList=MainCMap.values();
+            update mainList;
         }
         //LJPH-C493WW  fy	銆愬鎵樸�� 銆愬骞翠繚鍚堝悓銆戝骞翠繚璁惧杞Щ閫犳垚鐨勫悎鍚岄棶棰�  end
     }

--
Gitblit v1.9.1