From 64b3629116e6f3f5eb3debf9b451d100f4010fa5 Mon Sep 17 00:00:00 2001
From: 游畅 <youchang@prec-tech.com>
Date: 星期五, 22 四月 2022 13:50:56 +0800
Subject: [PATCH] 询问单相关修改

---
 force-app/main/default/classes/InquiryFormHandler.cls |  379 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 288 insertions(+), 91 deletions(-)

diff --git a/force-app/main/default/classes/InquiryFormHandler.cls b/force-app/main/default/classes/InquiryFormHandler.cls
index 735a187..0f96d2d 100644
--- a/force-app/main/default/classes/InquiryFormHandler.cls
+++ b/force-app/main/default/classes/InquiryFormHandler.cls
@@ -15,118 +15,315 @@
 
     protected override void beforeInsert() {
         beforeExecute();
+        //瀹㈡埛浜哄憳褰曞叆鍚�,銆愮數璇濄�戙�愰偖绠便�戣嚜鍔ㄥ綍鍏� thh 20220321 start
+        // getContactInformation();
+        //瀹㈡埛浜哄憳褰曞叆鍚�,銆愮數璇濄�戙�愰偖绠便�戣嚜鍔ㄥ綍鍏� thh 20220321 end
     }
     protected override void beforeUpdate() {
         beforeExecute();
+        //瀹㈡埛浜哄憳褰曞叆鍚�,銆愮數璇濄�戙�愰偖绠便�戣嚜鍔ㄥ綍鍏� thh 20220321 start
+        // getContactInformation();
+        //瀹㈡埛浜哄憳褰曞叆鍚�,銆愮數璇濄�戙�愰偖绠便�戣嚜鍔ㄥ綍鍏� thh 20220321 end
     }
 
     protected override void afterInsert() {
-        shareToOSCM();
+        //FSE涓绘媴褰撳叡浜�
+        shareToFSEMain();
     }
 
      protected override void afterUpdate() {
-        shareToOSCM();
+        shareToFSEMain();
     }
      //Before鍑︾悊
     private void beforeExecute() {
-        Map<Id,Inquiry_form__c> accMap = new Map<Id,Inquiry_form__c>();
+        Map<Id,Account> accMap = new Map<Id,Account>();
+        Inquiry_form__c oObj = null;
+        List<String> depIDList = new List<String>();
+        List<Account> accList = new List<Account>();
+
+        for(Inquiry_form__c nnObj : newList) {
+            if (oldMap != null && oldMap.containsKey(nnObj.Id)) {
+                oObj = oldMap.get(nnObj.Id);
+            }
+            if (String.isNotBlank(nnObj.Hospital_Name__c) && (Trigger.isInsert || oObj.Hospital_Name__c != nnObj.Hospital_Name__c || System.Label.Inquiry_form_flag == 'True')) {
+                depIDList.add(nnObj.Hospital_Name__c);
+            }
+            if (Trigger.isUpdate && String.isBlank(nnObj.Hospital_Name__c)){
+                nnObj.Depart_Owner__c = null;     //鎴樼暐绉戝鎵�鏈変汉           
+                nnObj.OwnerId = nnObj.CreatedById; //鎵�鏈変汉
+                nnObj.Department_Class__c = null; //鎴樼暐绉戝
+                nnObj.HospitalName__c = null;     //鍖婚櫌鍚�
+                nnObj.Hospital__c = null;         //鍖婚櫌
+            }
+            //20220419 you SWAG-CBUB2W start
+            //鍏紡鑰冩枃鏈�  缁橣SE鎷呭綋璧嬪��
+            System.debug(nnObj.FSE_Owner_id__c+'==123=='+nnObj.FSE_Owner__c);
+            if(nnObj.FSE_Owner_id__c != nnObj.FSE_Owner__c){
+                nnObj.FSE_Owner__c = nnObj.FSE_Owner_id__c;
+            }
+            if(Trigger.isInsert && (nnObj.Request1__c.indexOf('鏈嶅姟瀵瑰簲') !=-1 || nnObj.ServiceCorrespond__c ==true)){
+                nnObj.Service_Status__c ='01.鏈窡杩�';
+            }
+            //20220419 you SWAG-CBUB2W end
+        }
+
+        if (depIDList.size()>0) {
+            accList  = [Select Id,OwnerId,
+                            Hospital__c,Hospital__r.Name,
+                            Department_Class__c 
+                            from Account where Id =: depIDList]; 
+            if (accList.size()>0) {
+                for(Account acc : accList){
+                    accMap.put(acc.Id, acc);
+                }
+            }   
+        }
+        
         for(Inquiry_form__c nObj : newList) {
-        	List<Account> accList  = [Select Id,OwnerId from Account where Id =: nObj.Department_ID__c];
-        	for(Account acc : accList){
-        		nObj.Depart_Owner__c = acc.OwnerId;
-        	}
+            if (accMap.containsKey(nObj.Hospital_Name__c)){
+                nObj.Depart_Owner__c = accMap.get(nObj.Hospital_Name__c).OwnerId;                  //鎴樼暐绉戝鎵�鏈変汉
+                nObj.OwnerId = accMap.get(nObj.Hospital_Name__c).OwnerId;                          //鎵�鏈変汉
+                nObj.Department_Class__c = accMap.get(nObj.Hospital_Name__c).Department_Class__c; //鎴樼暐绉戝
+                nObj.HospitalName__c = accMap.get(nObj.Hospital_Name__c).Hospital__r.Name;        //鍖婚櫌鍚�
+                nObj.Hospital__c = accMap.get(nObj.Hospital_Name__c).Hospital__c;                 //鍖婚櫌
+            }
+            
+        	//浜у搧淇℃伅鐨勬嫾鎺�
+            if (String.isNotBlank(nObj.Product1__c) && String.isNotBlank(nObj.Product1_Manual__c)){
+                nObj.Product1__c = nObj.Product1__c +';'+nObj.Product1_Manual__c;
+            }else if (String.isBlank(nObj.Product1__c) && String.isNotBlank(nObj.Product1_Manual__c)){
+                nObj.Product1__c = nObj.Product1_Manual__c;
+            }else if (String.isNotBlank(nObj.Product1__c) && String.isBlank(nObj.Product1_Manual__c)) {
+                nObj.Product1__c = nObj.Product1__c;
+            }else {
+                nObj.Product1__c = '';
+            }
+
+            //浜у搧鍜ㄨ鍗曞悕绉�
+            if (String.isNotBlank(nObj.Product1__c)&& String.isNotBlank(nObj.HospitalName__c)){
+                nObj.Name = nObj.HospitalName__c+'-'+nObj.Product1__c;         
+            }else if (String.isBlank(nObj.HospitalName__c)&& String.isNotBlank(nObj.Product1__c)) {
+                nObj.Name = nObj.Product1__c;
+            }else if (String.isNotBlank(nObj.HospitalName__c)&& String.isBlank(nObj.Product1__c)){
+                nObj.Name = nObj.HospitalName__c;                              
+            }else{
+                nObj.Name = '*';
+            }
+            
+            nObj.Product1_Manual__c = '';
         }
     }
-    
+    //20220419 you SWAG-CBUB2W start
+    private void shareToFSEMain() {
+         //瀛樻斁鐢ㄤ簬鏂板鐨勫叡浜暟鎹�
+         List<Inquiry_form__Share> insertList = new List<Inquiry_form__Share>();
+         //瀛樻斁(浜у搧鍜ㄨ鍗昳d,鍏变韩瀵硅薄)
+         Map<Id,Inquiry_form__Share> insertMap = new Map<Id,Inquiry_form__Share>();
+         //瀛樻斁鏈�鍚庨渶瑕佹柊澧炵殑鍏变韩鏁版嵁
+         List<Inquiry_form__Share> lastInsertList = new List<Inquiry_form__Share>();
+         //瀛樻斁宸叉湁鐨勭浉鍚岀殑鍏变韩鍘熷洜鐨勬暟鎹�
+         List<Id> deleteTargetAOIdList = new List<Id>();
+         //瀛樻斁鐢ㄤ簬鐨刬d
+         List<Id> userIdList = new List<Id>();
+         // String rowCause = 'Manual';
+         //鏂板涓�涓叡浜師鍥�
+         String rowCause = Schema.Inquiry_form__Share.RowCause.FSE_Owner_c_User__c;
+         System.debug('rowCause:'+rowCause);
+         String ownerCause = 'Owner';
+         //Apex鍏辨湁銇悊鐢卞悕OCSM_Owner_c_User
+         for(Inquiry_form__c nObj : newList) {
+             Inquiry_form__c oObj = null;
+             System.debug('FSE涓绘媴褰擄細'+nObj.FSE_Owner__c);
+             if (oldMap != null && oldMap.containsKey(nObj.Id)) {
+                 oObj = oldMap.get(nObj.Id);
+             }
+            
+
+             if ( nObj.FSE_Owner__c != null && (oObj == null || oObj.FSE_Owner__c != nObj.FSE_Owner__c)) {
+                 Inquiry_form__Share aos = new Inquiry_form__Share(
+                         RowCause = rowCause,
+                         ParentId = nObj.Id,
+                         UserOrGroupId = nObj.FSE_Owner__c,
+                         AccessLevel = 'Edit');
+                 //瀛樻斁瑕佹柊澧炵殑鍏变韩鏁版嵁
+                 insertList.add(aos);
+                 System.debug('key:'+nObj.Id);
+                 //瀛樻斁锛堜骇鍝佸挩璇㈠崟id,鍏变韩瀵硅薄锛�;
+                 insertMap.put(nObj.Id,aos);
+                 //瀛樻斁鐢ㄦ埛id 鐢ㄤ綔妫�绱㈡潯浠�
+                 userIdList.add(nObj.FSE_Owner__c);
+             }
+             if(oObj != null && oObj.FSE_Owner__c != nObj.FSE_Owner__c){
+                deleteTargetAOIdList.add(nObj.Id);     
+             }
+         }
+         System.debug('insertList:'+insertList);
+         System.debug('insertMap1:'+insertMap);
+         System.debug('IDlIST:'+deleteTargetAOIdList);
+         // 鍏� Delete 鍚� Insert
+         if (deleteTargetAOIdList.size() > 0) {
+             List<Inquiry_form__Share> deleteList = [SELECT Id
+                 FROM Inquiry_form__Share
+                 WHERE RowCause = :rowCause
+                   AND ParentId IN :deleteTargetAOIdList
+             ];
+             delete deleteList;
+         }
+         //鍒ゆ柇闇�瑕佸叡浜殑浜�  鏄笉鏄垱寤轰汉 濡傛灉鏄垯璇存槑鏈変竴鏉¤繖涓汉鐨刼wner鏁版嵁 鍒欎笉鏂板
+         if (insertMap!= null) {
+             List<Inquiry_form__Share> ownerList = [SELECT Id,ParentId,UserOrGroupId
+                 FROM Inquiry_form__Share
+                 WHERE RowCause = :ownerCause
+                   AND ParentId IN :insertMap.keySet()
+                   AND UserOrGroupId IN :userIdList
+             ];
+             System.debug('ownerList:'+ownerList);
+             if(ownerList.size() > 0){
+                 for( Inquiry_form__Share  inq:ownerList){
+                     String id = String.valueOf(inq.ParentId);
+                     System.debug('id:'+id);
+                     if(insertMap.containsKey(id)){
+                         insertMap.remove(inq.ParentId);
+                     }
+                 }
+             }
+            
+         }
+         System.debug('insertMap2:'+insertMap);
+        
+         if(insertMap != null){
+                 for(Inquiry_form__Share inquiry : insertMap.values()){
+                     lastInsertList.add(inquiry);
+                 }
+         }
+        
+
+         System.debug('鍏变韩鍐呭:' +lastInsertList);
+         if(lastInsertList.size() > 0){
+             insert lastInsertList;
+         }
+        
+     }
+     //20220419 you SWAG-CBUB2W end
+
+    //瀹㈡埛浜哄憳褰曞叆鍚�,銆愮數璇濄�戙�愰偖绠便�戣嚜鍔ㄥ綍鍏� thh 20220321 start
+    // private void getContactInformation(){
+    //     List<String> ContactIdList = new List<String>();
+    //     List<Contact> ContactList = new List<Contact>();
+    //     Map<String, Contact> ContactMap = new Map<String, Contact>();
+    //     for(Inquiry_form__c nnObj : newList) {
+    //         if(String.isNotBlank(nnObj.Contact_Name__c)){
+    //             ContactIdList.add(nnObj.Contact_Name__c);
+    //         }
+    //     }
+    //     if(ContactIdList.size() > 0){
+    //         ContactList = [select id, Phone, Email from Contact where Id IN :ContactIdList];
+    //         for(Contact contact : ContactList){
+    //             ContactMap.put(contact.Id, contact);
+    //         }
+    //     }
+    //     for(Inquiry_form__c nnObj : newList) {
+    //         if(String.isNotBlank(nnObj.Contact_Name__c)){
+    //             if(String.isNotBlank(ContactMap.get(nnObj.Contact_Name__c).Phone)){
+    //                 nnObj.Phone__c = ContactMap.get(nnObj.Contact_Name__c).Phone;
+    //             }
+    //             if(String.isNotBlank(ContactMap.get(nnObj.Contact_Name__c).Email)){
+    //                 nnObj.Email__c = ContactMap.get(nnObj.Contact_Name__c).Email;
+    //             }
+    //         }
+    //     }
+    // }
+    //瀹㈡埛浜哄憳褰曞叆鍚�,銆愮數璇濄�戙�愰偖绠便�戣嚜鍔ㄥ綍鍏� thh 20220321 end
+
      // 鎴樼暐绉戝鐨勪富鎷呭綋 銈掑彇寰椼�両nquiry_form__Share銇ō瀹�(Read)
-    private void shareToOSCM() {
-        //瀛樻斁鐢ㄤ簬鏂板鐨勫叡浜暟鎹�
-        List<Inquiry_form__Share> insertList = new List<Inquiry_form__Share>();
-        //瀛樻斁(浼氳璇㈤棶鍗昳d,鍏变韩瀵硅薄)
-        Map<Id,Inquiry_form__Share> insertMap = new Map<Id,Inquiry_form__Share>();
-        //瀛樻斁鏈�鍚庨渶瑕佹柊澧炵殑鍏变韩鏁版嵁
-        List<Inquiry_form__Share> lastInsertList = new List<Inquiry_form__Share>();
-        //瀛樻斁宸叉湁鐨勭浉鍚岀殑鍏变韩鍘熷洜鐨勬暟鎹�
-        List<Id> deleteTargetAOIdList = new List<Id>();
-        //瀛樻斁鐢ㄤ簬鐨刬d
-        List<Id> userIdList = new List<Id>();
-        // String rowCause = 'Manual';
-        //鏂板涓�涓叡浜師鍥�
-        String rowCause = Schema.Inquiry_form__Share.RowCause.OCSM_Owner_c_User__c;
-        System.debug('rowCause:'+rowCause);
-        String ownerCause = 'Owner';
-        //Apex鍏辨湁銇悊鐢卞悕OCSM_Owner_c_User
-        for(Inquiry_form__c nObj : newList) {
-            Inquiry_form__c oObj = null;
-            System.debug('鎴樼暐绉戝鎷呭綋锛�'+nObj.Depart_Owner__c);
-            if (oldMap != null && oldMap.containsKey(nObj.Id)) {
-                oObj = oldMap.get(nObj.Id);
-            }
+    // private void shareToOSCM() {
+    //     //瀛樻斁鐢ㄤ簬鏂板鐨勫叡浜暟鎹�
+    //     List<Inquiry_form__Share> insertList = new List<Inquiry_form__Share>();
+    //     //瀛樻斁(浼氳璇㈤棶鍗昳d,鍏变韩瀵硅薄)
+    //     Map<Id,Inquiry_form__Share> insertMap = new Map<Id,Inquiry_form__Share>();
+    //     //瀛樻斁鏈�鍚庨渶瑕佹柊澧炵殑鍏变韩鏁版嵁
+    //     List<Inquiry_form__Share> lastInsertList = new List<Inquiry_form__Share>();
+    //     //瀛樻斁宸叉湁鐨勭浉鍚岀殑鍏变韩鍘熷洜鐨勬暟鎹�
+    //     List<Id> deleteTargetAOIdList = new List<Id>();
+    //     //瀛樻斁鐢ㄤ簬鐨刬d
+    //     List<Id> userIdList = new List<Id>();
+    //     // String rowCause = 'Manual';
+    //     //鏂板涓�涓叡浜師鍥�
+    //     String rowCause = Schema.Inquiry_form__Share.RowCause.OCSM_Owner_c_User__c;
+    //     System.debug('rowCause:'+rowCause);
+    //     String ownerCause = 'Owner';
+    //     //Apex鍏辨湁銇悊鐢卞悕OCSM_Owner_c_User
+    //     for(Inquiry_form__c nObj : newList) {
+    //         Inquiry_form__c oObj = null;
+    //         System.debug('鎴樼暐绉戝鎷呭綋锛�'+nObj.Depart_Owner__c);
+    //         if (oldMap != null && oldMap.containsKey(nObj.Id)) {
+    //             oObj = oldMap.get(nObj.Id);
+    //         }
             
 
-            if ( nObj.Depart_Owner__c != null && (oObj == null || oObj.Depart_Owner__c != nObj.Depart_Owner__c)) {
-                Inquiry_form__Share aos = new Inquiry_form__Share(
-                        RowCause = rowCause,
-                        ParentId = nObj.Id,
-                        UserOrGroupId = nObj.Depart_Owner__c,
-                        AccessLevel = 'Edit');
-                //瀛樻斁瑕佹柊澧炵殑鍏变韩鏁版嵁
-                insertList.add(aos);
-                System.debug('key:'+nObj.Id);
-                //瀛樻斁锛堜細璁闂崟id,鍏变韩瀵硅薄锛�;
-                insertMap.put(nObj.Id,aos);
-                //瀛樻斁鐢ㄦ埛id 鐢ㄤ綔妫�绱㈡潯浠�
-                userIdList.add(nObj.Depart_Owner__c);
-                if (oObj != null && oObj.Depart_Owner__c != nObj.Depart_Owner__c) {
-                    deleteTargetAOIdList.add(nObj.Id);
-                }
-            }
-        }
-        System.debug('insertList:'+insertList);
-        System.debug('insertMap1:'+insertMap);
-        System.debug('IDlIST:'+deleteTargetAOIdList);
-        // 鍏� Delete 鍚� Insert
-        if (deleteTargetAOIdList.size() > 0) {
-            List<Inquiry_form__Share> deleteList = [SELECT Id
-                FROM Inquiry_form__Share
-                WHERE RowCause = :rowCause
-                  AND ParentId IN :deleteTargetAOIdList
-            ];
-            delete deleteList;
-        }
-        //鍒ゆ柇闇�瑕佸叡浜殑浜�  鏄笉鏄垱寤轰汉 濡傛灉鏄垯璇存槑鏈変竴鏉¤繖涓汉鐨刼wner鏁版嵁 鍒欎笉鏂板
-        if (insertMap!= null) {
-            List<Inquiry_form__Share> ownerList = [SELECT Id,ParentId,UserOrGroupId
-                FROM Inquiry_form__Share
-                WHERE RowCause = :ownerCause
-                  AND ParentId IN :insertMap.keySet()
-                  AND UserOrGroupId IN :userIdList
-            ];
-            System.debug('ownerList:'+ownerList);
-            if(ownerList.size() > 0){
-                for( Inquiry_form__Share  inq:ownerList){
-                    String id = String.valueOf(inq.ParentId);
-                    System.debug('id:'+id);
-                    if(insertMap.containsKey(id)){
-                        insertMap.remove(inq.ParentId);
-                    }
-                }
-            }
+    //         if ( nObj.Depart_Owner__c != null && (oObj == null || oObj.Depart_Owner__c != nObj.Depart_Owner__c)) {
+    //             Inquiry_form__Share aos = new Inquiry_form__Share(
+    //                     RowCause = rowCause,
+    //                     ParentId = nObj.Id,
+    //                     UserOrGroupId = nObj.Depart_Owner__c,
+    //                     AccessLevel = 'Edit');
+    //             //瀛樻斁瑕佹柊澧炵殑鍏变韩鏁版嵁
+    //             insertList.add(aos);
+    //             System.debug('key:'+nObj.Id);
+    //             //瀛樻斁锛堜細璁闂崟id,鍏变韩瀵硅薄锛�;
+    //             insertMap.put(nObj.Id,aos);
+    //             //瀛樻斁鐢ㄦ埛id 鐢ㄤ綔妫�绱㈡潯浠�
+    //             userIdList.add(nObj.Depart_Owner__c);
+    //             if (oObj != null && oObj.Depart_Owner__c != nObj.Depart_Owner__c) {
+    //                 deleteTargetAOIdList.add(nObj.Id);
+    //             }
+    //         }
+    //     }
+    //     System.debug('insertList:'+insertList);
+    //     System.debug('insertMap1:'+insertMap);
+    //     System.debug('IDlIST:'+deleteTargetAOIdList);
+    //     // 鍏� Delete 鍚� Insert
+    //     if (deleteTargetAOIdList.size() > 0) {
+    //         List<Inquiry_form__Share> deleteList = [SELECT Id
+    //             FROM Inquiry_form__Share
+    //             WHERE RowCause = :rowCause
+    //               AND ParentId IN :deleteTargetAOIdList
+    //         ];
+    //         delete deleteList;
+    //     }
+    //     //鍒ゆ柇闇�瑕佸叡浜殑浜�  鏄笉鏄垱寤轰汉 濡傛灉鏄垯璇存槑鏈変竴鏉¤繖涓汉鐨刼wner鏁版嵁 鍒欎笉鏂板
+    //     if (insertMap!= null) {
+    //         List<Inquiry_form__Share> ownerList = [SELECT Id,ParentId,UserOrGroupId
+    //             FROM Inquiry_form__Share
+    //             WHERE RowCause = :ownerCause
+    //               AND ParentId IN :insertMap.keySet()
+    //               AND UserOrGroupId IN :userIdList
+    //         ];
+    //         System.debug('ownerList:'+ownerList);
+    //         if(ownerList.size() > 0){
+    //             for( Inquiry_form__Share  inq:ownerList){
+    //                 String id = String.valueOf(inq.ParentId);
+    //                 System.debug('id:'+id);
+    //                 if(insertMap.containsKey(id)){
+    //                     insertMap.remove(inq.ParentId);
+    //                 }
+    //             }
+    //         }
             
-        }
-        System.debug('insertMap2:'+insertMap);
+    //     }
+    //     System.debug('insertMap2:'+insertMap);
         
-        if(insertMap != null){
-                for(Inquiry_form__Share inquiry : insertMap.values()){
-                    lastInsertList.add(inquiry);
-                }
-        }
+    //     if(insertMap != null){
+    //             for(Inquiry_form__Share inquiry : insertMap.values()){
+    //                 lastInsertList.add(inquiry);
+    //             }
+    //     }
         
 
-        System.debug('鍏变韩鍐呭:' +lastInsertList);
-        if(lastInsertList.size() > 0){
-            insert lastInsertList;
-        }
+    //     System.debug('鍏变韩鍐呭:' +lastInsertList);
+    //     if(lastInsertList.size() > 0){
+    //         insert lastInsertList;
+    //     }
         
-    }
+    // }
 }
\ No newline at end of file

--
Gitblit v1.9.1