From 4ae5737c016b2014dab9101adc55d27cdb0904ca Mon Sep 17 00:00:00 2001
From: 李金换 <lijinhuan@prec-tech.com>
Date: 星期一, 21 三月 2022 18:37:25 +0800
Subject: [PATCH] NFM105限次合同异常数据

---
 force-app/main/default/classes/NFM105Rest.cls |   82 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 77 insertions(+), 5 deletions(-)

diff --git a/force-app/main/default/classes/NFM105Rest.cls b/force-app/main/default/classes/NFM105Rest.cls
index 78cd7cd..56bbb61 100644
--- a/force-app/main/default/classes/NFM105Rest.cls
+++ b/force-app/main/default/classes/NFM105Rest.cls
@@ -161,7 +161,8 @@
                                     , Return_Without_Repair_IF__c, Return_Without_Repair_Reason__c
                                     , Repair_Quotation_Id__c, NFM105_MessageGroupNumber__c, Repair_List_Price_formula__c
                                     , ReturnType__c, InspectType__c
-                                    ,Maintenance_Contract__r.URF_Contract__c
+                                    , Maintenance_Contract__r.URF_Contract__c
+                                    , Maintenance_Contract_Asset_Estimate__r.URF_Series__c // 20220321 ljh 闄愭鍚堝悓寮傚父鏁版嵁
                                     ,Maintenance_Contract__c
                                     ,SerialNumber__c
                                     ,Agreed_Date__c 
@@ -601,7 +602,8 @@
             3.鏍规嵁闄愭鍚堝悓鏌ュ埌璇ュ悎鍚屼笅鐨勬墍鏈変慨鐞� 
             */
             logstr += '\n rprList::'+rprList;
-            if (rprList.size() > 0) {
+            // 20220321 ljh 闄愭鍚堝悓寮傚父鏁版嵁 update start
+            /*if (rprList.size() > 0) {
                 //闇�瑕佺煡閬撳綋鍓嶄慨鐞嗗搴旂殑璁惧鐨勭郴鍒楀彿
                 Map<String,String> reurfMap = new Map<String,String>();
                 //闄愭鍚堝悓Id闆嗗悎
@@ -719,10 +721,80 @@
                     }
                 }
 
-            }
+            }*/
             //add by rentx 2021-3-4 end
-
-
+            if (rprList.size() > 0) {
+                // 闄愭鍚堝悓 map
+                Map<String,Map<String,List<Repair__c>>> contractMap = new Map<String,Map<String,List<Repair__c>>>();
+                //缁翠慨鍚堝悓淇濇湁璁惧闆嗗悎
+                List<Maintenance_Contract_Asset__c> maassList = new List<Maintenance_Contract_Asset__c>();
+                //鏌ヨ褰撳墠淇悊瀵瑰簲鐨勭淮淇悎鍚屾槸鍚︿负闄愭鍚堝悓 && 澶т慨
+                for (Repair__c rep : rprList) {
+                    if (rep.Maintenance_Contract__c != null && rep.Maintenance_Contract__r.URF_Contract__c == true && (rep.Repair_Rank__c == 'A' || rep.Repair_Rank__c == 'B' || rep.Repair_Rank__c == 'C') && rep.Agreed_Date__c != null) {
+                        List<Repair__c> tempRepL;
+                        Map<String,List<Repair__c>> tempRepM;
+                        if(contractMap.containsKey(rep.Maintenance_Contract__c)){
+                            // 淇濇湁璁惧 鍜� 闄愭绯诲垪
+                            tempRepM = contractMap.get(rep.Maintenance_Contract__c);
+                            if(tempRepM.containsKey(rep.Delivered_Product__c)){
+                                tempRepM.get(rep.Delivered_Product__c).add(rep);
+                            }
+                            if(tempRepM.containsKey(rep.Maintenance_Contract_Asset_Estimate__r.URF_Series__c)){
+                                tempRepM.get(rep.Maintenance_Contract_Asset_Estimate__r.URF_Series__c).add(rep);
+                            }
+                        }else{
+                            tempRepM = new Map<String,List<Repair__c>>();
+                            tempRepL.add(rep); 
+                            tempRepM.put(rep.Delivered_Product__c,tempRepL);
+                            tempRepM.put(rep.Maintenance_Contract_Asset_Estimate__r.URF_Series__c,tempRepL);
+                        }                       
+                        contractMap.put(rep.Maintenance_Contract__c,tempRepM);  
+                    }
+                }
+                if (contractMap.size() > 0) {
+                    //鏌ヨ褰撳墠闄愭鍚堝悓涓嬬殑鎵�鏈夌淮淇悎鍚屼繚鏈夎澶�
+                    maassList = [SELECT id , Series_RepairCount_F__c
+                                , Maintenance_Contract_Asset_Estimate__c
+                                , Asset__c
+                                , Maintenance_Contract__c
+                                , URF_Series_F__c
+                                FROM Maintenance_Contract_Asset__c 
+                                WHERE Maintenance_Contract__c in :contractMap.keySet()];
+                    List<Maintenance_Contract_Asset_Estimate__c> updateList = new List<Maintenance_Contract_Asset_Estimate__c>();
+                    for (Maintenance_Contract_Asset__c maAss : maassList) {
+                        // 鍒ゆ柇宸茬淮淇鏁版槸鍚﹀彂鐢熸敼鍙�
+                        if (contractMap.get(maAss.Maintenance_Contract__c) != null
+                            && contractMap.get(maAss.Maintenance_Contract__c).size() != 0
+                            && contractMap.get(maAss.Maintenance_Contract__c).containsKey(maAss.URF_Series_F__c)
+                            && maAss.Series_RepairCount_F__c != contractMap.get(maAss.Maintenance_Contract__c).get(maAss.URF_Series_F__c).size()) {
+                            //濡傛灉鍙戠敓鏀瑰彉.璁剧疆鏂扮殑鍊�;
+                            Maintenance_Contract_Asset_Estimate__c mcae = new Maintenance_Contract_Asset_Estimate__c();
+                            mcae.Id = maAss.Maintenance_Contract_Asset_Estimate__c;
+                            mcae.Series_RepairCount__c = contractMap.get(maAss.Maintenance_Contract__c).get(maAss.URF_Series_F__c).size();
+                            //璁剧疆绯诲垪淇悊閲戦
+                            mcae.Seriesrepairamount__c = 0;
+                            for (Repair__c rep : contractMap.get(maAss.Maintenance_Contract__c).get(maAss.URF_Series_F__c)) {
+                                 mcae.Seriesrepairamount__c += rep.Usage_Ratio_Price_Service__c;
+                            }
+                            mcae.Asset_RepairCount__c = 0;
+                            mcae.Equipmentrepairamount__c = 0;
+                            if (contractMap.get(maAss.Maintenance_Contract__c).containsKey(maAss.Asset__c)) {
+                                mcae.Asset_RepairCount__c = contractMap.get(maAss.Maintenance_Contract__c).get(maAss.Asset__c).size();    
+                                //璁剧疆璁惧淇悊閲戦
+                                for (Repair__c rep: contractMap.get(maAss.Maintenance_Contract__c).get(maAss.Asset__c)) {
+                                    mcae.Equipmentrepairamount__c += rep.Usage_Ratio_Price_Service__c;
+                                }
+                            }
+                            updateList.add(mcae);
+                        }
+                    }
+                    if (updateList.size() > 0) {
+                        system.debug('zheli:'+updateList);
+                        update updateList;
+                    }
+                }
+            }
+            // 20220321 ljh 闄愭鍚堝悓寮傚父鏁版嵁 update end
             //gzozw-add
             logstr += '\nend';
             rowData.retry_cnt__c = 0;

--
Gitblit v1.9.1