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/RepairAgainAnHandler.cls |  358 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 355 insertions(+), 3 deletions(-)

diff --git a/force-app/main/default/classes/RepairAgainAnHandler.cls b/force-app/main/default/classes/RepairAgainAnHandler.cls
index fb19855..e149338 100644
--- a/force-app/main/default/classes/RepairAgainAnHandler.cls
+++ b/force-app/main/default/classes/RepairAgainAnHandler.cls
@@ -3,7 +3,6 @@
     private Map<Id, RepairAgainAn__c> oldMap;
     private List<RepairAgainAn__c> newList;
     private List<RepairAgainAn__c> oldList;
-
     public RepairAgainAnHandler() {
 		this.newMap = (Map<Id, RepairAgainAn__c>) Trigger.newMap;
         this.oldMap = (Map<Id, RepairAgainAn__c>) Trigger.oldMap;
@@ -12,13 +11,181 @@
 	}
 
     protected override void beforeInsert() {
-        setPhotoImgText();
+
+        Set<Id> repairSet = new Set<Id>();
+
+        for(RepairAgainAn__c ra : newList){
+            repairSet.add(ra.Repair__c);
+        }
+
+        Map<Id,Repair__c> repairMap = new Map<Id,Repair__c>([SELECT Id,Name,SAP_Service_Repair_No__c,(select Id from reparirAgain01__r where RepairAgain_Status__c != '鍙栨秷') from Repair__c where id in :repairSet]);
+        //Map<Id,Repair__c> repairConplateMap = new Map<Id,Repair__c>([SELECT Id,Name,SAP_Service_Repair_No__c,(select Id from reparirAgain01__r) from Repair__c where id in :repairSet]);
+
+        for(RepairAgainAn__c ra : newList){
+
+            //淇悊娌′笂浼燬AP涔嬪墠锛屼笉鑳芥柊寤� 鍐嶄慨鐞嗗垎鏋�
+            System.debug('=======repairMap' + repairMap);
+            System.debug('=======newList' + newList);
+
+            //宸插瓨鍦ㄥ啀淇悊鍒嗘瀽鐨勪慨鐞嗕笉鑳芥柊寤�  瀛樺湪鍙栨秷鐨勪篃鍙互鏂板缓鍐嶄慨鐞�
+            if( repairMap.containsKey(ra.Repair__c) && repairMap.get(ra.Repair__c).reparirAgain01__r.size() >= 1 ){
+                ra.addError('璇ヤ慨鐞嗗凡瀛樺湪鍐嶄慨鐞嗚繑鍝佸垎鏋愶紝涓嶈兘鍐嶆柊寤哄啀淇悊杩斿搧鍒嗘瀽');
+            }else if(repairMap.containsKey(ra.Repair__c) && repairMap.get(ra.Repair__c).SAP_Service_Repair_No__c == null){
+                ra.addError('璇ヤ慨鐞嗚繕娌℃湁涓婁紶SAP锛屼笉鑳藉鏂板缓鍐嶄慨鐞嗗垎鏋�');
+            }else{
+                setPhotoImgText();
+                setRepairAgainNameAndReport();
+            }
+        }
     }
     protected override void beforeUpdate() {
         setPhotoImgText();
+        setStatusChange();
+        //鎻愪氦瀹℃壒涔嬪悗鏇存柊瀛楁
+        updateExaminePeople();
+        //闄勪欢鏇存柊
+        updateAttachment();
     }
-    public static Set<Id> RA_Ids = new Set<Id>();
+
+    protected override void afterUpdate(){
+        submitRepair();
+
+        //鍙戦�侀偖浠�
+        sendIssueEmail();
+    }
     
+    public static Set<Id> RA_Ids = new Set<Id>();
+
+    //鍐嶆敞鍐屽垎鏋� 闇�姹� 鏂板瀛楁 20220811 sx start
+    public static List<Id> openRepairAgainRepairIds = new List<Id>();
+    public static List<Id> oSHRepairAgainRepairIds = new List<Id>();
+    public static List<Id> oSHWrittenRepairAgainRepairIds = new List<Id>();
+    public static List<Id> finalRepairAgainRepairIds = new List<Id>();
+    public static List<Id> cleanRepairIds = new List<Id>();
+
+    //鍐嶆敞鍐屽垎鏋� 闇�姹� 鏂板瀛楁 20220811 sx end
+    
+    
+    private void sendIssueEmail(){
+        List<Id> repairAgainIds = new List<Id>();
+        List<Id> repairAgainIdsSH = new List<Id>();
+        List<Id> repairAgainIdsGZ = new List<Id>();
+        for(RepairAgainAn__c ra : newList){
+            //涓�娆′簩娆¢�氳繃閮藉彂閫侀偖浠堕�氱煡瀵瑰簲鐨凮CSM
+            // TODO 鍙戣鎶曡瘔閭欢鍦╳orkflow锛屽鎵归�氳繃閭欢鍦ㄥ鎵规祦锛屽悗缁笟鍔$‘璁ゅ悗鍐嶇粺涓�鏁村悎
+            if(ra.RepairAgainAn_Approve_status__c != oldMap.get(ra.Id).RepairAgainAn_Approve_status__c && ra.RepairAgainAn_Approve_status__c == '鎵瑰噯'){
+                repairAgainIds.add(ra.Id);
+            }else if(ra.RepairAgainAn_Approve_status2__c != oldMap.get(ra.Id).RepairAgainAn_Approve_status2__c && ra.RepairAgainAn_Approve_status2__c == '鎵瑰噯'){
+                repairAgainIds.add(ra.Id);
+            }
+
+            //宸ュ巶/RC鍙戣捣鍐嶆敞鍐岀敵璇锋椂锛岀粰瀵瑰簲鐨勭敤鎴峰彂閫侀偖浠舵彁閱�
+            if(ra.RepairAgain_Status__c == 'RC濉啓瀹屾瘯' && oldMap.get(ra.Id).RepairAgain_Status__c != 'RC濉啓瀹屾瘯') {
+                if (ra.SORC__c == 'OSH-SH') {
+                    repairAgainIdsSH.add(ra.Id);
+                } else if (ra.SORC__c == 'OSH-GZ') {
+                    repairAgainIdsGZ.add(ra.Id);
+                }
+            }
+        }
+
+        /*if (!repairAgainIds.isEmpty()) {
+            email(repairAgainIds, '鍐嶄慨鐞嗗垎鏋愬鎵归�氳繃', System.Label.RepairAgainAn_Issue_Sendmail);
+        }*/
+
+        if (!repairAgainIdsSH.isEmpty()) {
+            email(repairAgainIdsSH, '宸ュ巶/RC鍙戣捣鍐嶆敞鍐岀敵璇烽�氱煡', System.Label.SendRepairAgainAn_OSH_SH);
+        }
+
+        if (!repairAgainIdsGZ.isEmpty()) {
+            email(repairAgainIdsGZ, '宸ュ巶/RC鍙戣捣鍐嶆敞鍐岀敵璇烽�氱煡', System.Label.SendRepairAgainAn_OSH_GZ);
+        }
+    }
+
+    private void email(List<Id> neadUpdateList, String emailTemplateName, String toEmailAddress){
+
+        EmailTemplate et=[Select id from EmailTemplate where name =: emailTemplateName limit 1];
+
+        String[] toAddresses = toEmailAddress.split(';');
+
+        List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
+
+        for(Id repairAgainId: neadUpdateList){
+            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
+            mail = Messaging.renderStoredEmailTemplate(et.Id, null , repairAgainId);
+            mail.setSaveAsActivity(false);
+
+            mail.setToAddresses(toAddresses);
+            emails.add(mail);
+        }
+        Messaging.sendEmail(emails);
+    }
+
+    private void setRepairAgainNameAndReport() {
+
+        Date todayTemp = Date.today();
+        Set<Id> repairSet = new Set<Id>();
+
+        for(RepairAgainAn__c ra : newList){
+            repairSet.add(ra.Repair__c);
+            // 鎶ュ憡鑰呫�佹姤鍛婃棩鑷姩璁惧�硷紝鍒涘缓鑰呰嚜鍔ㄨ缃�
+            ra.Reporter__c = UserInfo.getUserId();
+            ra.Report_Date__c = todayTemp;
+        }
+
+        Map<Id,Repair__c> repairMap = new Map<Id,Repair__c>([SELECT Id,Name,Repair_Detail__c,InspectionFailureCause__c,SerialNumber__c,Delivered_Product__c,Incharge_Staff__c,(select Id from reparirAgain01__r) from Repair__c where id in :repairSet]);
+
+        System.debug('repairMap========='+repairMap);
+        for(RepairAgainAn__c ra : newList){
+
+            if(repairMap.containsKey(ra.Repair__c)){
+
+                Integer repairSize = repairMap.get(ra.Repair__c).reparirAgain01__r.size() + 1;
+                String repairSizeString = '000' + repairSize;
+                String cutString = repairSizeString.substring(repairSizeString.length()-3, repairSizeString.length());
+
+                if(repairSize == 0) {
+                    ra.Name = repairMap.get(ra.Repair__c).Name + '_001';
+                }else{
+                    ra.Name = repairMap.get(ra.Repair__c).Name + '_' + cutString;
+                }
+
+                //淇悊涓婂瓧娈靛甫杩囨潵  瀹㈡埛纭 = 淇悊.闂鍐呭鎻忚堪  RC纭 = 淇悊.妫�娴嬫晠闅滃唴瀹� 鏈鸿韩鍙风爜
+                ra.RC_Describe__c = repairMap.get(ra.Repair__c).InspectionFailureCause__c;
+                ra.Customer_Describe__c = repairMap.get(ra.Repair__c).Repair_Detail__c;
+                ra.SerialNumber1__c = repairMap.get(ra.Repair__c).SerialNumber__c;
+                ra.Delivered_Product__c = repairMap.get(ra.Repair__c).Delivered_Product__c;
+                ra.Incharge_Staff__c = repairMap.get(ra.Repair__c).Incharge_Staff__c;
+            }
+        }
+
+    }
+
+    //閫氳繃瀹℃壒娴佸垽鏂‘璁よ�呭拰瀹℃牳浜哄憳鐨勫��
+    private void updateExaminePeople(){
+        for(RepairAgainAn__c ram : newList){
+            RepairAgainAn__c ramOld = oldMap.get(ram.Id);
+            if(ram.OSH_Confirmation_Date__c != ramOld.OSH_Confirmation_Date__c && ram.OSH_Confirmation_Date__c != null){
+                //瀹℃壒鎻愪氦鏃ヤ慨鏀�  OSH纭鑰� = 鎿嶄綔浜哄憳
+                ram.OSH_Confirmer__c = UserInfo.getUserId();
+            }else if(ram.RepairAgainAn_Approve_Confirm__c != ramOld.RepairAgainAn_Approve_Confirm__c && ram.RepairAgainAn_Approve_Confirm__c != null){
+                //OSH瀹℃壒瀹屼簡鏃ヤ慨鏀�  OSH瀹℃牳浜哄憳 = 鎿嶄綔浜哄憳
+                ram.OSH_Auditor__c = UserInfo.getUserId();
+            }else if(ram.OSH_Confirmation_Date2__c != ramOld.OSH_Confirmation_Date2__c  && ram.OSH_Confirmation_Date2__c != null){
+                //瀹℃壒鎻愪氦鏃ワ紙浜屾锛変慨鏀�  OSH纭鑰�(浜屾) = 鎿嶄綔浜哄憳
+                ram.OSH_Confirmer2__c = UserInfo.getUserId();
+            }else if(ram.RepairAgainAn_Approve_Confirm2__c != ramOld.RepairAgainAn_Approve_Confirm2__c && ram.RepairAgainAn_Approve_Confirm2__c != null){
+                //OSH瀹℃壒瀹屼簡鏃�(浜屾)淇敼  OSH瀹℃牳浜哄憳(浜屾) = 鎿嶄綔浜哄憳
+                ram.OSH_Auditor2__c = UserInfo.getUserId();
+            }
+
+            // OCSM纭鑰�
+            if (ram.OCSM_Approve_Status__c == '鎵瑰噯' && ram.OCSM_Approve_Status__c != ramOld.OCSM_Approve_Status__c) {
+                ram.OCM_Confirmer__c = UserInfo.getUserId();
+            }
+        }
+    }
+
     private void setPhotoImgText() {
         for (RepairAgainAn__c ra : newList) {
             System.debug('ra.Dectect_Picture1__c2:' + ra.Dectect_Picture1__c);
@@ -71,6 +238,20 @@
                     }
                 }
                 ra.Dectect_Picture2_URL__c = phtTxt;
+                RA_Ids.add(ra.Id);
+            }
+            // 鏈鎶ヤ环妫�娴嬪浘鐗�3
+            if(Trigger.isAfter && Trigger.isInsert && String.isBlank(ra.Dectect_Picture3__c) == false
+                    || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).Dectect_Picture3__c != ra.Dectect_Picture3__c)
+                    || (Trigger.isUpdate && String.isBlank(ra.Dectect_Picture3__c) == false && String.isBlank(ra.Dectect_Picture3_URL__c))){
+                ra.Dectect_Picture3_URL__c = setPictureUrl(ra.Dectect_Picture3__c);
+                RA_Ids.add(ra.Id);
+            }
+            // 鏈鎶ヤ环妫�娴嬪浘鐗�4
+            if(Trigger.isAfter && Trigger.isInsert && String.isBlank(ra.Dectect_Picture4__c) == false
+                    || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).Dectect_Picture4__c != ra.Dectect_Picture4__c)
+                    || (Trigger.isUpdate && String.isBlank(ra.Dectect_Picture4__c) == false && String.isBlank(ra.Dectect_Picture4_URL__c))){
+                ra.Dectect_Picture4_URL__c = setPictureUrl(ra.Dectect_Picture4__c);
                 RA_Ids.add(ra.Id);
             }
             // OSH鎶�鏈娴嬪浘鐗�1
@@ -168,6 +349,177 @@
                 ra.OSH_Dectect_Picture4_URL__c = phtTxt;
                 RA_Ids.add(ra.Id);
             }
+            // OSH鎶�鏈娴嬪浘鐗�5
+            if(Trigger.isInsert && String.isBlank(ra.OSH_Dectect_Picture5__c) == false
+                    || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).OSH_Dectect_Picture5__c != ra.OSH_Dectect_Picture5__c)
+                    || (Trigger.isUpdate && String.isBlank(ra.OSH_Dectect_Picture5__c) == false && String.isBlank(ra.OSH_Dectect_Picture5_URL__c))
+            ){
+                ra.OSH_Dectect_Picture5_URL__c = setPictureUrl(ra.OSH_Dectect_Picture5__c);
+                RA_Ids.add(ra.Id);
+            }
+            // OSH鎶�鏈娴嬪浘鐗�6
+            if(Trigger.isInsert && String.isBlank(ra.OSH_Dectect_Picture6__c) == false
+                || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).OSH_Dectect_Picture6__c != ra.OSH_Dectect_Picture6__c)
+                || (Trigger.isUpdate && String.isBlank(ra.OSH_Dectect_Picture6__c) == false && String.isBlank(ra.OSH_Dectect_Picture6_URL__c))
+            ){
+                ra.OSH_Dectect_Picture6_URL__c = setPictureUrl(ra.OSH_Dectect_Picture6__c);
+                RA_Ids.add(ra.Id);
+            }
+            // OSH鎶�鏈娴嬪浘鐗�7
+            if(Trigger.isInsert && String.isBlank(ra.OSH_Dectect_Picture7__c) == false
+                || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).OSH_Dectect_Picture7__c != ra.OSH_Dectect_Picture7__c)
+                || (Trigger.isUpdate && String.isBlank(ra.OSH_Dectect_Picture7__c) == false && String.isBlank(ra.OSH_Dectect_Picture7_URL__c))
+            ){
+                ra.OSH_Dectect_Picture7_URL__c = setPictureUrl(ra.OSH_Dectect_Picture7__c);
+                RA_Ids.add(ra.Id);
+            }
+            // OSH鎶�鏈娴嬪浘鐗�8
+            if(Trigger.isInsert && String.isBlank(ra.OSH_Dectect_Picture8__c) == false
+                || (Trigger.isUpdate && ((RepairAgainAn__c) oldMap.get(ra.Id)).OSH_Dectect_Picture8__c != ra.OSH_Dectect_Picture8__c)
+                || (Trigger.isUpdate && String.isBlank(ra.OSH_Dectect_Picture8__c) == false && String.isBlank(ra.OSH_Dectect_Picture8_URL__c))
+            ){
+                ra.OSH_Dectect_Picture8_URL__c = setPictureUrl(ra.OSH_Dectect_Picture8__c);
+                RA_Ids.add(ra.Id);
+            }
+        }
+    }
+ 
+    public String setPictureUrl(String pic){
+
+        String phtTxt = '';
+        if(String.isBlank(pic) == false) {
+            Integer pStt = pic.indexOf('<img');
+            if(pStt >= 0){
+                pStt = pic.indexOf('src="');
+                if(pStt >= 0){
+                    Integer pEnd = pic.indexOf('"', pStt + 5);
+                    if(pEnd >= 0){
+                        phtTxt = pic.substring(pStt + 5, pEnd);
+                        //瀵屾枃鏈弽杞箟
+                        phtTxt = phtTxt.unescapeHtml4();
+                    }
+                }
+            }
+        }
+        return phtTxt;
+
+    }
+
+    public void setStatusChange() {
+        Map<String,id> rtmaps = new Map<String,id>();
+        List<RecordType> rtIds = [SELECT Id,Name FROM RecordType where SobjectType='RepairAgainAn__c'];
+
+        Date todayTemp = Date.today();
+        for (RecordType rt : rtIds) {
+           rtmaps.put(rt.Name, rt.Id);
+        }
+        for (RepairAgainAn__c raa : newList) {
+            RepairAgainAn__c raaOld = oldMap.get(raa.id);
+            //鐘舵�佸彉鏇翠负鑽夋涓�
+            if (String.isBlank(raa.RepairAgain_Status__c)) {
+                raa.RepairAgain_Status__c = '鑽夋涓�';
+            }
+
+            //褰揜C鐨勫唴瀹瑰~鍐欏畬姣�
+            if(raa.RepairAgain_Status__c == 'RC濉啓瀹屾瘯' && raaOld.RepairAgain_Status__c != 'RC濉啓瀹屾瘯') {
+                raa.RecordTypeId = rtmaps.get('2.OSH');
+                // 鍙戣捣鍐嶆敞鍐屽垎鏋愭椂闂�
+                raa.Start_RepairAgainAn_Day__c = todayTemp;
+                // 鍜孲AP浜や簰  OPEN
+                openRepairAgainRepairIds.add(raa.Repair__c);
+            }
+
+            //褰揙SH鍙楃悊
+            if(raa.RepairAgain_Status__c == 'OSH鍙楃悊' && raaOld.RepairAgain_Status__c != 'OSH鍙楃悊') {
+                // OSH鍙楃悊鏃�
+                raa.OSH_Accept_Day__c = todayTemp;
+                // 鍜孲AP浜や簰
+                oSHRepairAgainRepairIds.add(raa.Repair__c);
+            }
+
+            //褰揙SH鍐呭濉啓瀹屾瘯
+            if(raa.RepairAgain_Status__c == 'OSH濉啓瀹屾瘯' && raaOld.RepairAgain_Status__c != 'OSH濉啓瀹屾瘯') {
+                raa.RecordTypeId = rtmaps.get('3.OCSM');
+                // 鍜孲AP浜や簰
+                oSHWrittenRepairAgainRepairIds.add(raa.Repair__c);
+            }
+
+            //褰揙CSM璺熻繘瀹屾瘯
+            if(raa.RepairAgain_Status__c == '瀹屾瘯' && raaOld.RepairAgain_Status__c != '瀹屾瘯') {
+                raa.RecordTypeId = rtmaps.get('4.Final瀹屾瘯');
+                // 鍜孲AP浜や簰
+                finalRepairAgainRepairIds.add(raa.Repair__c);
+            }
+            //褰撳啀淇悊鐘舵�佸彉鎴愬彇娑堟椂
+            if(raa.RepairAgain_Status__c == '鍙栨秷' && raaOld.RepairAgain_Status__c != '鍙栨秷'){
+                cleanRepairIds.add(raa.Repair__c);
+            }
+        }
+    }
+
+    public void submitRepair(){
+
+        List<Repair__c> repairUpdateList = new List<Repair__c>();
+
+        if(openRepairAgainRepairIds.size() > 0 || oSHRepairAgainRepairIds.size() > 0 || oSHWrittenRepairAgainRepairIds.size() > 0 || finalRepairAgainRepairIds.size() > 0 || cleanRepairIds.size() > 0){
+
+            BatchIF_Log__c iflog = new BatchIF_Log__c();
+                iflog.Type__c = 'NFM103';
+                iflog.Log__c  = 'callout start\n';
+                insert iflog;
+
+            if(openRepairAgainRepairIds.size() > 0) {
+                setRepairList(openRepairAgainRepairIds, repairUpdateList, 'OCSM宸插彂璧�');
+                //鍏宠仈涓�涓猳pen鐨勫啀淇悊鍒嗘瀽锛屼紶X
+                NFM103Controller.callout(iflog.Id, openRepairAgainRepairIds,'OCSM宸插彂璧�');
+            }
+
+            if(oSHRepairAgainRepairIds.size() > 0 ){
+                setRepairList(oSHRepairAgainRepairIds, repairUpdateList, '鍝佷繚宸插彈鐞�');
+                NFM103Controller.callout(iflog.Id, oSHRepairAgainRepairIds,'鍝佷繚宸插彈鐞�');
+            }
+
+            if(oSHWrittenRepairAgainRepairIds.size() > 0 ){
+                setRepairList(oSHWrittenRepairAgainRepairIds, repairUpdateList, '鍝佷繚鍑虹粨璁�');
+                NFM103Controller.callout(iflog.Id, oSHWrittenRepairAgainRepairIds,'鍝佷繚鍑虹粨璁�');
+            }
+
+            if(finalRepairAgainRepairIds.size() > 0) {
+                setRepairList(finalRepairAgainRepairIds, repairUpdateList, 'OCSM鍑虹粨璁�');
+                //鍏宠仈鍐嶄慨鐞嗗垎鏋愬畬姣曪紝浼燜
+                NFM103Controller.callout(iflog.Id, finalRepairAgainRepairIds,'OCSM鍑虹粨璁�');
+            }
+
+            if(cleanRepairIds.size() > 0 ){
+                setRepairList(cleanRepairIds, repairUpdateList, '');
+            }
+
+            if(repairUpdateList.size() > 0 ){
+                Update repairUpdateList;
+            }
+        }
+    }
+
+    public void setRepairList(List<Id> repairIdList, list<Repair__c> repairList, String status){
+
+        for(Id repairId : repairIdList){
+            Repair__c tempRepair = new Repair__c();
+            tempRepair.Id = repairId;
+            tempRepair.RepairAgainAn_Status__c = status;
+            repairList.add(tempRepair);
+        }
+    }
+
+    public void updateAttachment(){
+        for(RepairAgainAn__c ram : newList){
+            String pid = ram.Id;
+
+            String sql = 'SELECT Name,Body,ContentType from Attachment where ParentId =\'' + pid + '\'';
+
+
+            Attachment att = Database.query(sql);
+
+            System.debug('bName====='+att.Body);
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1