buli
2023-07-14 5b5c1e16deaa3a9d6d0ed1ffca390655ed103df7
force-app/main/default/triggers/ConsumableOrderDetail2Trigger.trigger
@@ -1,66 +1,63 @@
trigger ConsumableOrderDetail2Trigger on Consumable_order_details2__c(after insert, after update, after delete) {
trigger ConsumableOrderDetail2Trigger on Consumable_order_details2__c (after insert, after update, after delete) {
    Set<String> orderSet = new Set<String>();
    if (StaticParameter.EscapeOrderDetail2Trigger) {
        return;
        return ;
    }
    if (Trigger.isInsert) {
        for (Consumable_order_details2__c local : Trigger.New) {
            if (local.Consumable_order_minor__c != null && local.Dealer_Returned__c == false)
                orderSet.add(local.Consumable_order_minor__c);
    if (trigger.isInsert){
        for (Consumable_order_details2__c local : Trigger.New) {
            if (local.Consumable_order_minor__c!=null &&
                local.Dealer_Returned__c == false)
            orderSet.add(local.Consumable_order_minor__c);
        }
    }
    if (Trigger.isUpdate) {
        for (Consumable_order_details2__c local : Trigger.New) {
    if (trigger.isUpdate){
        for (Consumable_order_details2__c local : Trigger.New) {
            //if (local.Consumable_order_minor__c!=null &&
            //    local.Dealer_Arrive__c != Trigger.oldMap.get(local.Id).get('Dealer_Arrive__c'))
            if (local.Consumable_order_minor__c != null)
                orderSet.add(local.Consumable_order_minor__c);
            if (local.Consumable_order_minor__c!=null) orderSet.add(local.Consumable_order_minor__c);
        }
    }
    if (Trigger.isDelete) {
    if (trigger.isDelete){
        for (Consumable_order_details2__c local : Trigger.old) {
            if (local.Consumable_order_minor__c != null)
                orderSet.add(local.Consumable_order_minor__c);
            if (local.Consumable_order_minor__c!=null) orderSet.add(local.Consumable_order_minor__c);
        }
    }
    if (orderSet.size() > 0) {
    if (orderSet.size()>0){
        // 2018年8月9日 HWAG-B3D9UV  替换 SQL start by 张玉山
        list<Consumable_order_details2__c> allresults = [
            SELECT Consumable_order_minor__c, Deliver_date__c, Dealer_Returned__c, Dealer_Arrive__c, RemoveBox_No__c, Cancellation_Date__c
        list<Consumable_order_details2__c> allresults =
        [SELECT Consumable_order_minor__c, Deliver_date__c,
            Dealer_Returned__c, Dealer_Arrive__c, RemoveBox_No__c,Cancellation_Date__c
            FROM Consumable_order_details2__c
            WHERE Consumable_order_minor__c IN :orderSet
        ];
             WHERE Consumable_order_minor__c in :orderSet ];
        // 2018年8月9日 HWAG-B3D9UV  end by 张玉山
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值 start by 张玉山
        map<string, Integer> orderSetResults = new Map<string, Integer>();
        for (Consumable_order_details2__c results1 : allresults) {
            if (
                results1.Dealer_Arrive__c == false ||
                results1.Dealer_Returned__c == true ||
                (results1.RemoveBox_No__c != null &&
                results1.RemoveBox_No__c != 1)
            ) {
        map<string,Integer> orderSetResults =  new map<string,Integer>();
        for(Consumable_order_details2__c results1 : allresults){
            if(results1.Dealer_Arrive__c == false || results1.Dealer_Returned__c== true
                || (results1.RemoveBox_No__c !=null &&  results1.RemoveBox_No__c !=1)){
                continue;
            }
            string Consumable_order_minor_str = String.valueOf(results1.Consumable_order_minor__c);
            if (orderSetResults.containsKey(Consumable_order_minor_str)) {
                orderSetResults.put(Consumable_order_minor_str, orderSetResults.get(Consumable_order_minor_str) + 1);
            } else {
                orderSetResults.put(Consumable_order_minor_str, 1);
            if(orderSetResults.containsKey(Consumable_order_minor_str)){
                orderSetResults.put(Consumable_order_minor_str,
                    orderSetResults.get(Consumable_order_minor_str)+1);
            }else{
                orderSetResults.put(Consumable_order_minor_str,1);
            }
        }
        List<Consumable_Order__c> consumableOrderlist = new List<Consumable_Order__c>();
        for (String strOrder : orderSet) {
            Integer cnt = 0;
        for (String strOrder:orderSet){
            Integer cnt =0;
            for (string key : orderSetResults.keySet()) {
                if (key.equals(strOrder)) {
                if(key.equals(strOrder)){
                    cnt = orderSetResults.get(key);
                    break;
                }
@@ -72,7 +69,7 @@
            consumableOrderlist.add(consumableOrder);
        }
        // 2018年8月9日 HWAG-B3D9UV 替换下面原有SQL 使用 map 完成赋值 end end by 张玉山
        /* 2018年8月9日 HWAG-B3D9UV  原有SQL 与赋值 start by 张玉山
        AggregateResult[] results = [SELECT Consumable_order_minor__c,count(Id) cnt 
                                     FROM Consumable_order_details2__c 
@@ -98,57 +95,61 @@
        }
        2018年8月9日 HWAG-B3D9UV  原有SQL 与赋值 end by 张玉山
        */
        if (consumableOrderlist.size() > 0) {
            update consumableOrderlist;
        if (consumableOrderlist.size() > 0){
           update consumableOrderlist;
        }
        //更新消耗品订单的发货日期
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值  start by 张玉山
        Set<string> resultsKeySet = new Set<String>();
        map<string, Date> DeliverdateResults = new Map<string, Date>(); //最新发货时间
        map<string, Date> DeliverdateminResults = new Map<string, Date>(); //最早发货时间
        for (Consumable_order_details2__c results1 : allresults) {
            if (results1.Dealer_Arrive__c == true || results1.Dealer_Returned__c == true) {
        Set<string> resultsKeySet =  new Set<String>();
        map<string,Date> DeliverdateResults =  new map<string,Date>();//最新发货时间
        map<string,Date> DeliverdateminResults =  new map<string,Date>();//最早发货时间
        for(Consumable_order_details2__c results1 : allresults){
            if(results1.Dealer_Arrive__c == true || results1.Dealer_Returned__c== true){
                continue;
            }
            string Consumable_order_minor_str = String.valueOf(results1.Consumable_order_minor__c);
            if (DeliverdateResults.containsKey(Consumable_order_minor_str)) {
                if (DeliverdateResults.get(Consumable_order_minor_str) < results1.Deliver_date__c) {
                    DeliverdateResults.put(Consumable_order_minor_str, results1.Deliver_date__c);
            if(DeliverdateResults.containsKey(Consumable_order_minor_str)){
                if(DeliverdateResults.get(Consumable_order_minor_str)
                    < results1.Deliver_date__c
                    ){
                    DeliverdateResults.put(Consumable_order_minor_str,results1.Deliver_date__c);
                    resultsKeySet.add(Consumable_order_minor_str);
                }
            } else {
                DeliverdateResults.put(Consumable_order_minor_str, results1.Deliver_date__c);
            }else{
                DeliverdateResults.put(Consumable_order_minor_str,results1.Deliver_date__c);
                resultsKeySet.add(Consumable_order_minor_str);
            }
            //获取最早发货时间 pk part1 start
            if (DeliverdateminResults.containsKey(Consumable_order_minor_str)) {
                if (DeliverdateminResults.get(Consumable_order_minor_str) > results1.Deliver_date__c) {
                    DeliverdateminResults.put(Consumable_order_minor_str, results1.Deliver_date__c);
            if(DeliverdateminResults.containsKey(Consumable_order_minor_str)){
                if(DeliverdateminResults.get(Consumable_order_minor_str)
                    > results1.Deliver_date__c
                    ){
                    DeliverdateminResults.put(Consumable_order_minor_str,results1.Deliver_date__c);
                    resultsKeySet.add(Consumable_order_minor_str);
                }
            } else {
                DeliverdateminResults.put(Consumable_order_minor_str, results1.Deliver_date__c);
            }else{
                DeliverdateminResults.put(Consumable_order_minor_str,results1.Deliver_date__c);
                resultsKeySet.add(Consumable_order_minor_str);
            }
            //获取最早发货时间 pk part1 end
        }
        //两个DeliverdateResults.keySet(),DeliverdateminResults.keySet() 合并作为一个List ,遍历List
        //获取最早发货时间 pk part2 start
        consumableOrderlist = new List<Consumable_Order__c>();
        for (string temp : resultsKeySet) {
        for(string temp : resultsKeySet){
            Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
            consumableOrder1.Id = temp;
            if (DeliverdateResults.get(temp) != null) {
            if(DeliverdateResults.get(temp)!=null){
                consumableOrder1.Shipment_Date__c = DeliverdateResults.get(temp);
            }
            if (DeliverdateminResults.get(temp) != null) {
            if(DeliverdateminResults.get(temp)!=null){
                consumableOrder1.First_Delivery__c = DeliverdateResults.get(temp);
            }
            consumableOrderlist.add(consumableOrder1);
        }
        //获取最早发货时间 pk part2 end
        // List<Consumable_Order__c> consumableOrderminlist = new List<Consumable_Order__c>();//最早发货时间
        // for (string key : DeliverdateminResults.keySet()) {
@@ -159,9 +160,9 @@
        //         consumableOrderminlist.add(consumableOrder1);
        //     }
        // }
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值  end by 张玉山
        //获取早发货日期 start
        // system.debug('DeliverdateResults==============' + DeliverdateResults);
        // system.debug('走到最早发货日期');
@@ -193,7 +194,7 @@
        // }
        // if(consumableOrderminlist.size() > 0){
        //     update consumableOrderminlist;
        //     update consumableOrderminlist;
        // }
        // system.debug('DeliverdateResults==============' + DeliverdateResults);
        // //获取最早发货日期 end
@@ -216,29 +217,31 @@
            }
        }
        2018年8月9日 HWAG-B3D9UV  原有SQL 与赋值 end by 张玉山 */
        if (consumableOrderlist.size() > 0) {
            update consumableOrderlist;
        if (consumableOrderlist.size() > 0){
           update consumableOrderlist;
        }
        //更新待确认收货数量
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值  start by 张玉山
        map<string, Integer> resultsMap2 = new Map<string, Integer>();
        for (Consumable_order_details2__c results1 : allresults) {
            if (results1.Dealer_Arrive__c == true || results1.Dealer_Returned__c == true || results1.Cancellation_Date__c != null) {
        map<string,Integer> resultsMap2 =  new map<string,Integer>();
        for(Consumable_order_details2__c results1 : allresults){
            if(results1.Dealer_Arrive__c == true || results1.Dealer_Returned__c== true ||
                results1.Cancellation_Date__c!=null){
                continue;
            }
            string Consumable_order_minor_str = String.valueOf(results1.Consumable_order_minor__c);
            if (resultsMap2.containsKey(Consumable_order_minor_str)) {
                resultsMap2.put(Consumable_order_minor_str, resultsMap2.get(Consumable_order_minor_str) + 1);
            } else {
                resultsMap2.put(Consumable_order_minor_str, 1);
            if(resultsMap2.containsKey(Consumable_order_minor_str)){
                    resultsMap2.put(Consumable_order_minor_str,
                        resultsMap2.get(Consumable_order_minor_str)+1);
            }else{
                resultsMap2.put(Consumable_order_minor_str,1);
            }
        }
        consumableOrderlist = new List<Consumable_Order__c>();
        for (String strOrder : orderSet) {
            Integer cnt = 0;
        for (String strOrder:orderSet){
            Integer cnt =0;
            for (string key : resultsMap2.keySet()) {
                if (key.equals(strOrder)) {
                if(key.equals(strOrder)){
                    cnt = resultsMap2.get(key);
                    break;
                }
@@ -247,14 +250,12 @@
            Consumable_Order__c consumableOrder2 = new Consumable_Order__c();
            consumableOrder2.Id = strOrder;
            consumableOrder2.Delivery_detail_count__c = cnt;
            if (consumableOrder2.Delivery_detail_count__c == 0) {
                consumableOrder2.More_than_seven_days__c = 0;
            }
            if(consumableOrder2.Delivery_detail_count__c == 0){consumableOrder2.More_than_seven_days__c = 0;}
            consumableOrderlist.add(consumableOrder2);
        }
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值  end by 张玉山
        /* 2018年8月9日 HWAG-B3D9UV  原有SQL 与赋值 start by 张玉山
        AggregateResult[] results2 = [SELECT Consumable_order_minor__c,count(Id) cnt 
                                      FROM Consumable_order_details2__c 
@@ -279,8 +280,8 @@
            consumableOrderlist.add(consumableOrder2);
        }
        2018年8月9日 HWAG-B3D9UV  原有SQL 与赋值 end by 张玉山 */
        if (consumableOrderlist.size() > 0) {
            update consumableOrderlist;
        if (consumableOrderlist.size() > 0){
           update consumableOrderlist;
        }
    }
    //Back up by DTT - Li Jun 2023-06-14 Start for reduce soql times
@@ -291,12 +292,11 @@
    //到货和返品时,生成或修改消费品订货明细
    Set<String> arrivedSet = new Set<String>();
    Set<String> returnSet = new Set<String>();
    if (Trigger.isUpdate || Trigger.isInsert || Trigger.isDelete) {
        if (Trigger.isUpdate || Trigger.isInsert) {
    if (trigger.isUpdate || trigger.isInsert || trigger.isDelete){
        if (trigger.isUpdate || trigger.isInsert){
            for (Consumable_order_details2__c detail2 : Trigger.New) {
                Consumable_order_details2__c oldDetail2 = null;
                if (Trigger.isUpdate)
                    oldDetail2 = Trigger.oldMap.get(detail2.Id);
                if (Trigger.isUpdate) oldDetail2 = Trigger.oldMap.get(detail2.Id);
                if (detail2.Consumable_Arrived_order__c != null) {
                    arrivedSet.add(detail2.Consumable_Arrived_order__c);
                }
@@ -306,8 +306,8 @@
                }
            }
        }
        if (Trigger.isDelete) {
            for (Consumable_order_details2__c det2 : Trigger.old) {
        if (trigger.isDelete){
            for (Consumable_order_details2__c det2 : Trigger.old) {
                if (det2.Consumable_Arrived_order__c != null) {
                    arrivedSet.add(det2.Consumable_Arrived_order__c);
                }
@@ -318,25 +318,15 @@
            }
        }
        System.debug('arrivedSet +++++' + arrivedSet);
        // 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过arrivedset  start by 张玉山
    // 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过arrivedset  start by 张玉山
        if (StaticParameter.EscapeConsumableOrderDetail2Trigger) {
            return;
        return ;
        }
        // 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过arrivedset  start by 张玉山
    // 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过arrivedset  start by 张玉山
        if (arrivedSet.size() > 0) {
            Map<Id, Consumable_order__c> arrivedMap = new Map<Id, Consumable_order__c>(
                [
                    SELECT Id, RecordType.DeveloperName, Name
                    FROM Consumable_order__c
                    WHERE Id IN :arrivedSet
                ]
            );
            List<Consumable_orderdetails__c> detail1List = [
                SELECT Id, Name, Asset_Model_No__c, Consumable_count__c, Consumable_order__c
                FROM Consumable_orderdetails__c
                WHERE Consumable_order__c IN :arrivedSet
            ];
            Map<String, Consumable_orderdetails__c> detail1Map = new Map<String, Consumable_orderdetails__c>();
            Map<Id, Consumable_order__c> arrivedMap = new Map<Id, Consumable_order__c>([select Id, RecordType.DeveloperName, Name from Consumable_order__c where Id in :arrivedSet]);
            List<Consumable_orderdetails__c> detail1List = [select Id, Name, Asset_Model_No__c, Consumable_count__c, Consumable_order__c from Consumable_orderdetails__c where Consumable_order__c in :arrivedSet];
            Map<String,Consumable_orderdetails__c> detail1Map = new Map<String,Consumable_orderdetails__c>();
            for (Consumable_orderdetails__c detail1 : detail1List) {
                String key = '' + detail1.Consumable_order__c + detail1.Asset_Model_No__c;
                detail1Map.put(key, detail1);
@@ -349,25 +339,21 @@
                }
            }
            AggregateResult[] results = [
                SELECT Consumable_Arrived_order__c, Asset_Model_No__c, count(bar_code__c) recordCount
                FROM Consumable_order_details2__c
                WHERE
                    Consumable_Arrived_order__c IN :arrivedSet
                    AND Dealer_Arrive__c = TRUE
                    //and Dealer_Returned__c <> true
                    AND (RemoveBox_No__c = NULL
                    OR RemoveBox_No__c = 1)
                GROUP BY Consumable_Arrived_order__c, Asset_Model_No__c
            ];
            AggregateResult[] results = [select Consumable_Arrived_order__c, Asset_Model_No__c, count(bar_code__c) recordCount
                                         from Consumable_order_details2__c
                                         where Consumable_Arrived_order__c in :arrivedSet
                                         and Dealer_Arrive__c = true
                                         //and Dealer_Returned__c <> true
                                         AND (RemoveBox_No__c=null or RemoveBox_No__c=1)
                                         group by Consumable_Arrived_order__c, Asset_Model_No__c];
            Map<String, Integer> keyCount = new Map<String, Integer>();
            for (AggregateResult ar : results) {
            for(AggregateResult ar: results){
                String key = '' + ar.get('Consumable_Arrived_order__c') + ar.get('Asset_Model_No__c');
                keyCount.put(key, Integer.valueOf(ar.get('recordCount')));
            }
            //Back up by DTT - Li Jun 2023-06-14 Start
            // 2018年8月9日 HWAG-B3D9UV  替代下面SQL select start by 张玉山
            // 2018年8月9日 HWAG-B3D9UV  替代下面SQL select start by 张玉山
            // List<RecordType> rtList = new List<RecordType>();
            // for(RecordType rtl : allrtList){
            //     if('Detail1_Arrival'.equals(rtl.DeveloperName)){
@@ -375,7 +361,7 @@
            //     }
            // }
            // 2018年8月9日 HWAG-B3D9UV  替代下面SQL select end by 张玉山
            //Back up by DTT - Li Jun 2023-06-14 End
            //Back up by DTT - Li Jun 2023-06-14 End
            /* 2018年8月9日 HWAG-B3D9UV  原获取 recordtype start by 张玉山
            List<RecordType> rtList = [select Id from RecordType where DeveloperName = 'Detail1_Arrival' and SobjectType = 'Consumable_orderdetails__c'];
@@ -383,52 +369,45 @@
            //Back up by DTT - Li Jun 2023-06-14 Start
            // Id recordTypeId = null;
            // if (rtList.size() > 0) recordTypeId = rtList[0].Id;
            //Back up by DTT - Li Jun 2023-06-14 End
            Id recordtypeId = Schema.SObjectType.Consumable_Orderdetails__c.getRecordTypeInfosByDeveloperName()
                .get('Detail1_Arrival')
                .getRecordTypeId();
            results = [
                SELECT Consumable_order__c, count(Id) noCount
                FROM Consumable_orderdetails__c
                WHERE Consumable_order__c IN :arrivedSet
                GROUP BY Consumable_order__c
            ];
            //Back up by DTT - Li Jun 2023-06-14 End
            Id recordtypeId = Schema.SObjectType.Consumable_Orderdetails__c.getRecordTypeInfosByDeveloperName().get('Detail1_Arrival').getRecordTypeId();
            results = [select Consumable_order__c, count(Id) noCount
                       from Consumable_orderdetails__c
                       where Consumable_order__c in :arrivedSet
                       group by Consumable_order__c];
            System.debug('results +++++' + results);
            Map<Id, Integer> noCount = new Map<Id, Integer>();
            for (AggregateResult ar : results) {
                noCount.put((Id) ar.get('Consumable_order__c'), Integer.valueOf(ar.get('noCount')));
            for(AggregateResult ar: results){
                noCount.put((Id)ar.get('Consumable_order__c'), Integer.valueOf(ar.get('noCount')));
            }
            System.debug('noCount +++++' + noCount);
            Map<String, Consumable_orderdetails__c> upsertMap = new Map<String, Consumable_orderdetails__c>();
            Map<String, Consumable_orderdetails__c> deletetMap = new Map<String, Consumable_orderdetails__c>();
            Map<String, String> assetModelNoMap = new Map<String, String>();
            if (Trigger.isUpdate || Trigger.isInsert) {
                for (Consumable_order_details2__c detail2 : Trigger.New) {
            if (trigger.isUpdate || trigger.isInsert){
                for (Consumable_order_details2__c detail2 : Trigger.New) {
                    //Dataloaderで初期在庫登録をしたあと、データ修正が入ったときに明細1が更新されない。
                    //if (trigger.isUpdate && detail2.ManualRegisteredStock__c == true) continue;
                    if (detail2.Consumable_Arrived_order__c == null)
                        continue;
                    //if (trigger.isUpdate && detail2.ManualRegisteredStock__c == true) continue;
                    if (detail2.Consumable_Arrived_order__c == null) continue;
                    String key = '' + detail2.Consumable_Arrived_order__c + detail2.Asset_Model_No__c;
                    //if (upsertMap.get(key) != null) continue;
                    Integer count = keyCount.get(key);
                    Consumable_orderdetails__c detail1 = detail1Map.get(key);
                    if (detail1 == null)
                        detail1 = new Consumable_orderdetails__c();
                    if (detail1 == null) detail1 = new Consumable_orderdetails__c();
                    detail1.Consumable_Arrivecount__c = count;
                    if (detail1.Id == null) {
                        Consumable_order__c co = arrivedMap.get(detail2.Consumable_Arrived_order__c);
                        Integer index = noCount.get(co.Id);
                        if (index == null)
                            index = 0;
                        if (assetModelNoMap.containsKey(detail2.Asset_Model_No__c)) {
                        if (index == null) index = 0;
                        if(assetModelNoMap.containsKey(detail2.Asset_Model_No__c)){
                            continue;
                        } else {
                        }else{
                            assetModelNoMap.put(detail2.Asset_Model_No__c, detail2.Asset_Model_No__c);
                            noCount.put(co.Id, index + 1);
                        }
                        noCount.put(co.Id, index + 1);
                        String newName = co.Name + '-';
                        String newName = co.Name+'-';
                        System.debug('index +++++' + index);
                        if (index < 99) {
                            newName += '0';
@@ -445,83 +424,80 @@
                        detail1.RecordTypeId = recordTypeId;
                        //detail1.Consumable_principal__c = co.Id;
                        detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
                    }
                    upsertMap.put(key, detail1);
                }
            }
            if (Trigger.isUpdate) {
                for (Consumable_order_details2__c detail2 : Trigger.old) {
                    //Dataloaderで初期在庫登録をしたあと、データ修正が入ったときに明細1が更新されない。
                    //if (detail2.ManualRegisteredStock__c == true) continue;
                    if (detail2.Consumable_Arrived_order__c == null)
                        continue;
                    String key = '' + detail2.Consumable_Arrived_order__c + detail2.Asset_Model_No__c;
            if (trigger.isUpdate){
                for (Consumable_order_details2__c detail2 : Trigger.old) {
                    //Dataloaderで初期在庫登録をしたあと、データ修正が入ったときに明細1が更新されない。
                    //if (detail2.ManualRegisteredStock__c == true) continue;
                    if (detail2.Consumable_Arrived_order__c == null) continue;
                    String key = '' + detail2.Consumable_Arrived_order__c + detail2.Asset_Model_No__c;
                    //if (upsertMap.get(key) != null) continue;
                    Integer count = keyCount.get(key);
                    Integer count = keyCount.get(key);
                    Consumable_orderdetails__c detail1 = detail1Map.get(key);
                    if ((count == null || count == 0) && detail1 != null) {
                    if ((count == null || count ==0) && detail1 !=null){
                        //delete detail1;
                        deletetMap.put(key, detail1);
                        deletetMap.put(key,detail1);
                        continue;
                    }
                    if (detail1 == null)
                        continue;
                    if (detail1 == null) continue;
                    detail1.Consumable_Arrivecount__c = count;
                    if (detail1.Id == null) {
                        Consumable_order__c co = arrivedMap.get(detail2.Consumable_Arrived_order__c);
                        Integer index = noCount.get(co.Id);
                        if (index == null)
                            index = 0;
                        System.debug('indexUp +++++' + index);
                        noCount.put(co.Id, index + 1);
                        System.debug('noCountUp +++++' + noCount);
                        String newName = co.Name + '-';
                        if (index < 99) {
                            newName += '0';
                        }
                        if (index < 9) {
                            newName += '0';
                        }
                        newName += String.valueOf(index + 1);
                        System.debug('newNameUp +++++' + newName);
                        detail1.Name = newName;
                        //detail1.Asset_Model_No__c = detail2.Asset_Model_No__c;
                        detail1.Consumable_product__c = detail2.Consumable_product__c;
                        detail1.Consumable_order__c = co.Id;
                        detail1.RecordTypeId = recordTypeId;
                        //detail1.Consumable_principal__c = co.Id;
                        detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
                            Consumable_order__c co = arrivedMap.get(detail2.Consumable_Arrived_order__c);
                            Integer index = noCount.get(co.Id);
                            if (index == null) index = 0;
                            System.debug('indexUp +++++' + index);
                            noCount.put(co.Id, index + 1);
                            System.debug('noCountUp +++++' + noCount);
                            String newName = co.Name+'-';
                            if (index < 99) {
                                newName += '0';
                            }
                            if (index < 9) {
                                newName += '0';
                            }
                            newName += String.valueOf(index + 1);
                            System.debug('newNameUp +++++' + newName);
                            detail1.Name = newName;
                            //detail1.Asset_Model_No__c = detail2.Asset_Model_No__c;
                            detail1.Consumable_product__c = detail2.Consumable_product__c;
                            detail1.Consumable_order__c = co.Id;
                            detail1.RecordTypeId = recordTypeId;
                            //detail1.Consumable_principal__c = co.Id;
                            detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
                    }
                    upsertMap.put(key, detail1);
                }
            }
            if (Trigger.isDelete) {
            if (trigger.isDelete){
                for (Consumable_order_details2__c detail2 : Trigger.old) {
                    if (detail2.Consumable_Arrived_order__c == null)
                        continue;
                    if (detail2.Consumable_Arrived_order__c == null) continue;
                    String key = '' + detail2.Consumable_Arrived_order__c + detail2.Asset_Model_No__c;
                    //if (upsertMap.get(key) != null) continue;
                    Integer count = keyCount.get(key);
                    Consumable_orderdetails__c detail1 = detail1Map.get(key);
                    if ((count == null || count == 0) && detail1 != null) {
                    if ((count == null || count ==0) && detail1 !=null){
                        //delete detail1;
                        deletetMap.put(key, detail1);
                        deletetMap.put(key,detail1);
                        continue;
                    }
                    if (detail1 == null)
                        detail1 = new Consumable_orderdetails__c();
                    if (detail1 == null) detail1 = new Consumable_orderdetails__c();
                    detail1.Consumable_Arrivecount__c = count;
                    if (detail1.Id == null) {
                        Consumable_order__c co = arrivedMap.get(detail2.Consumable_Arrived_order__c);
                        Integer index = noCount.get(co.Id);
                        if (index == null)
                            index = 0;
                        if (index == null) index = 0;
                        noCount.put(co.Id, index + 1);
                        String newName = co.Name + '-';
                        String newName = co.Name+'-';
                        if (index < 99) {
                            newName += '0';
                        }
@@ -536,39 +512,31 @@
                        detail1.RecordTypeId = recordTypeId;
                        //detail1.Consumable_principal__c = co.Id;
                        detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
                    }
                    upsertMap.put(key, detail1);
                }
            }
            Database.upsert(upsertMap.values(), true);
            if (deletetMap.size() > 0) {
                Database.delete(deletetMap.values(), true);
            if(deletetMap.size()>0){
                Database.delete(deletetMap.values(),true);
            }
        }
    }
    // 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过returnSet  start by 张玉山
    if (Trigger.isUpdate || Trigger.isInsert) {
        if (StaticParameter.EscapeConsumableOrderDetail2Trigger) {
            return;
        }
        // 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过returnSet  start by 张玉山
        if (returnSet.size() > 0) {
            Map<Id, Consumable_order__c> returnMap = new Map<Id, Consumable_order__c>(
                [
                    SELECT Id, RecordType.DeveloperName, Name
                    FROM Consumable_order__c
                    WHERE Id IN :returnSet
                ]
            );
            List<Consumable_orderdetails__c> detail1List = [
                SELECT Id, Name, Asset_Model_No__c, Consumable_count__c, Consumable_order__c
                FROM Consumable_orderdetails__c
                WHERE Consumable_order__c IN :returnSet
            ];
            Map<String, Consumable_orderdetails__c> detail1Map = new Map<String, Consumable_orderdetails__c>();
    if (trigger.isUpdate || trigger.isInsert){
        if (StaticParameter.EscapeConsumableOrderDetail2Trigger) {
        return ;
    }
    // 2018年8月14日 HWAG-B3D9UV 在进行NFM110处理时 跳过returnSet  start by 张玉山
        if (returnSet.size() > 0) {
            Map<Id, Consumable_order__c> returnMap = new Map<Id, Consumable_order__c>([select Id, RecordType.DeveloperName, Name from Consumable_order__c where Id in :returnSet]);
            List<Consumable_orderdetails__c> detail1List = [select Id, Name, Asset_Model_No__c, Consumable_count__c, Consumable_order__c from Consumable_orderdetails__c where Consumable_order__c in :returnSet];
            Map<String,Consumable_orderdetails__c> detail1Map = new Map<String,Consumable_orderdetails__c>();
            for (Consumable_orderdetails__c detail1 : detail1List) {
                String key = '' + detail1.Consumable_order__c + detail1.Asset_Model_No__c;
                detail1Map.put(key, detail1);
@@ -581,18 +549,17 @@
                }
            }
            AggregateResult[] results = [
                SELECT Consumable_Return_order__c, Asset_Model_No__c, count(Id) recordCount
                FROM Consumable_order_details2__c
                WHERE Consumable_Return_order__c IN :returnSet AND Dealer_Returned__c = TRUE
                GROUP BY Consumable_Return_order__c, Asset_Model_No__c
            ];
            AggregateResult[] results = [select Consumable_Return_order__c, Asset_Model_No__c, count(Id) recordCount
                                         from Consumable_order_details2__c
                                         where Consumable_Return_order__c in :returnSet
                                         and Dealer_Returned__c = true
                                         group by Consumable_Return_order__c, Asset_Model_No__c];
            Map<String, Integer> keyCount = new Map<String, Integer>();
            for (AggregateResult ar : results) {
            for(AggregateResult ar: results){
                String key = '' + ar.get('Consumable_Return_order__c') + ar.get('Asset_Model_No__c');
                keyCount.put(key, Integer.valueOf(ar.get('recordCount')));
            }
            //Back up by DTT - Li Jun 2023-06-14 Start for reduce soql times
             //Back up by DTT - Li Jun 2023-06-14 Start for reduce soql times
            // 2018年8月9日 HWAG-B3D9UV  替代下面SQL select start by 张玉山
            // List<RecordType> rtList = new List<RecordType>();
            // for(RecordType rtl : allrtList){
@@ -601,25 +568,21 @@
            //     }
            // }
            // 2018年8月9日 HWAG-B3D9UV  替代下面SQL select end by 张玉山
            //Back up by DTT - Li Jun 2023-06-14 End
             //Back up by DTT - Li Jun 2023-06-14 End
            /* 2018年8月9日 HWAG-B3D9UV  原获取 recordtype start by 张玉山
            List<RecordType> rtList = [select Id from RecordType where DeveloperName = 'Detail1_ReturnGoods' and SobjectType = 'Consumable_orderdetails__c'];
             2018年8月9日 HWAG-B3D9UV  原获取 recordtype end by 张玉山 */
            Id recordTypeId = Schema.SObjectType.Consumable_Orderdetails__c.getRecordTypeInfosByDeveloperName()
                .get('Detail1_ReturnGoods')
                .getRecordTypeId();
            Id recordTypeId = Schema.SObjectType.Consumable_Orderdetails__c.getRecordTypeInfosByDeveloperName().get('Detail1_ReturnGoods').getRecordTypeId();
            //if (rtList.size() > 0) recordTypeId = rtList[0].Id;
            results = [
                SELECT Consumable_order__c, count(Id) noCount
                FROM Consumable_orderdetails__c
                WHERE Consumable_order__c IN :returnSet
                GROUP BY Consumable_order__c
            ];
            results = [select Consumable_order__c, count(Id) noCount
                       from Consumable_orderdetails__c
                       where Consumable_order__c in :returnSet
                       group by Consumable_order__c];
            Map<Id, Integer> noCount = new Map<Id, Integer>();
            for (AggregateResult ar : results) {
                noCount.put((Id) ar.get('Consumable_order__c'), Integer.valueOf(ar.get('noCount')));
            for(AggregateResult ar: results){
                noCount.put((Id)ar.get('Consumable_order__c'), Integer.valueOf(ar.get('noCount')));
            }
            Map<String, Consumable_orderdetails__c> upsertMap = new Map<String, Consumable_orderdetails__c>();
@@ -634,35 +597,25 @@
            for (Consumable_order_details2__c detail2 : Trigger.New) {
                Consumable_order_details2__c oldDetail2 = null;
                if (detail2.Consumable_Return_order__c == null)
                    continue;
                if (detail2.Consumable_Return_order__c == null) continue;
                String key = '' + detail2.Consumable_Return_order__c + detail2.Asset_Model_No__c;
                if (Trigger.isUpdate)
                    oldDetail2 = Trigger.oldMap.get(detail2.Id);
                if(Trigger.isUpdate) oldDetail2 = Trigger.oldMap.get(detail2.Id);
                if (oldDetail2 != null) {
                    if (keyCount.containsKey(key)) {
                        returnCount += 1;
                        if (oldDetail2.Consumable_Sale_order__c != null) {
                            Integer sCount = updatedSaleCount.containsKey(
                                    '' + oldDetail2.Consumable_Sale_order__c + detail2.Asset_Model_No__c
                                )
                                ? updatedSaleCount.get('' + oldDetail2.Consumable_Sale_order__c + detail2.Asset_Model_No__c)
                                : 0;
                            Integer sCount = updatedSaleCount.containsKey(''+oldDetail2.Consumable_Sale_order__c+detail2.Asset_Model_No__c) ? updatedSaleCount.get(''+oldDetail2.Consumable_Sale_order__c+detail2.Asset_Model_No__c) : 0;
                            sCount += 1;
                            updatedSaleCount.put('' + oldDetail2.Consumable_Sale_order__c + detail2.Asset_Model_No__c, sCount);
                            updatedSaleCount.put(''+oldDetail2.Consumable_Sale_order__c+detail2.Asset_Model_No__c, sCount);
                            updatedSaleId.add(oldDetail2.Consumable_Sale_order__c);
                        }
                        if (oldDetail2.Consumable_Shipment_order__c != null) {
                            Integer sCount = updatedShipmentCount.containsKey(
                                    '' + oldDetail2.Consumable_Shipment_order__c + detail2.Asset_Model_No__c
                                )
                                ? updatedShipmentCount.get('' + oldDetail2.Consumable_Shipment_order__c + detail2.Asset_Model_No__c)
                                : 0;
                            Integer sCount = updatedShipmentCount.containsKey(''+oldDetail2.Consumable_Shipment_order__c+detail2.Asset_Model_No__c) ? updatedShipmentCount.get(''+oldDetail2.Consumable_Shipment_order__c+detail2.Asset_Model_No__c) : 0;
                            sCount += 1;
                            updatedShipmentCount.put('' + oldDetail2.Consumable_Shipment_order__c + detail2.Asset_Model_No__c, sCount);
                            updatedShipmentCount.put(''+oldDetail2.Consumable_Shipment_order__c+detail2.Asset_Model_No__c, sCount);
                            updatedShipmentId.add(oldDetail2.Consumable_Shipment_order__c);
                        }
                        /*if (oldDetail2.Invoice_No__c != null) {
@@ -680,23 +633,20 @@
                        }*/
                    }
                }
                if (upsertMap.get(key) != null)
                    continue;
                if (upsertMap.get(key) != null) continue;
                Integer count = keyCount.get(key);
                Consumable_orderdetails__c detail1 = detail1Map.get(key);
                if (detail1 == null)
                    detail1 = new Consumable_orderdetails__c();
                if (detail1 == null) detail1 = new Consumable_orderdetails__c();
                detail1.RrturnPro_count__c = count;
                if (detail1.Id == null) {
                    Consumable_order__c co = returnMap.get(detail2.Consumable_Return_order__c);
                    Integer index = noCount.get(co.Id);
                    if (index == null)
                        index = 0;
                    if (index == null) index = 0;
                    noCount.put(co.Id, index + 1);
                    String newName = co.Name + '-';
                    String newName = co.Name+'-';
                    if (index < 99) {
                        newName += '0';
                    }
@@ -711,47 +661,47 @@
                    detail1.RecordTypeId = recordTypeId;
                    //detail1.Consumable_principal__c = co.Id;
                    detail1.Intra_Trade_List_RMB__c = detail2.Intra_Trade_List_RMB__c;
                }
                upsertMap.put(key, detail1);
            }
            Database.upsert(upsertMap.values(), true);
            // 2018年8月8日 HWAG-B3D9UV 减少 select 数量 start by 张玉山
            List<Consumable_orderdetails__c> Consumable_orderdetailsList = [
                SELECT Id, Name, Asset_Model_No__c, RrturnPro_count__c, Consumable_order__c, Invoicedet1_OD_link__c
                FROM Consumable_orderdetails__c
                WHERE
                    Consumable_order__c IN :updatedSaleId
                    OR Consumable_order__c IN :updatedShipmentId
                    OR Consumable_order__c IN :updatedConInvoiceId
            ];
            List<Consumable_orderdetails__c> detail1SaleList = new List<Consumable_orderdetails__c>();
            for (Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList) {
                if (updatedSaleId.contains(orderdetails.id) && 'Sale'.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)) {
            List<Consumable_orderdetails__c> Consumable_orderdetailsList =
                        [select Id, Name, Asset_Model_No__c, RrturnPro_count__c,
            Consumable_order__c,Invoicedet1_OD_link__c
            from Consumable_orderdetails__c
            where Consumable_order__c in :updatedSaleId
                or Consumable_order__c in :updatedShipmentId
                or Consumable_order__c in :updatedConInvoiceId];
            List<Consumable_orderdetails__c> detail1SaleList
            = new List<Consumable_orderdetails__c>();
            for (Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList){
                if(updatedSaleId.contains(orderdetails.id)
                    && 'Sale'.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)){
                    detail1SaleList.add(orderdetails);
                }
            }
            List<Consumable_orderdetails__c> detail1ShipmentList = new List<Consumable_orderdetails__c>();
            List<Consumable_orderdetails__c> detail1ShipmentList
            = new List<Consumable_orderdetails__c>();
            for (Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList) {
                if (
                    updatedShipmentId.contains(orderdetails.id) &&
                    'Shipment'.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)
                ) {
            for (Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList){
                if(updatedShipmentId.contains(orderdetails.id)
                    && 'Shipment'.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)){
                    detail1ShipmentList.add(orderdetails);
                }
            }
            List<Consumable_orderdetails__c> detail1ConInvoiceList = new List<Consumable_orderdetails__c>();
            List<Consumable_orderdetails__c> detail1ConInvoiceList
            = new List<Consumable_orderdetails__c>();
            for (Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList) {
                if (
                    updatedConInvoiceId.contains(orderdetails.id) &&
                    'Order_Invoice'.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)
                ) {
            for (Consumable_orderdetails__c orderdetails : Consumable_orderdetailsList){
                if(updatedConInvoiceId.contains(orderdetails.id)
                    && 'Order_Invoice'.equals(orderdetails.Consumable_order__r.RecordType.DeveloperName)){
                    detail1ConInvoiceList.add(orderdetails);
                }
            }
@@ -779,31 +729,23 @@
            List<Consumable_orderdetails__c> updateData = new List<Consumable_orderdetails__c>();
            for (Consumable_orderdetails__c detail1Sale : detail1SaleList) {
                Integer count = updatedSaleCount.get('' + detail1Sale.Consumable_order__c + detail1Sale.Asset_Model_No__c);
                Integer count = updatedSaleCount.get(''+detail1Sale.Consumable_order__c+detail1Sale.Asset_Model_No__c);
                if (count != null) {
                    detail1Sale.RrturnPro_count__c += count;
                    updateData.add(detail1Sale);
                }
            }
            for (Consumable_orderdetails__c detail1Shipment : detail1ShipmentList) {
                Integer count = updatedShipmentCount.get('' + detail1Shipment.Consumable_order__c + detail1Shipment.Asset_Model_No__c);
                Integer count = updatedShipmentCount.get(''+detail1Shipment.Consumable_order__c+detail1Shipment.Asset_Model_No__c);
                if (count != null) {
                    detail1Shipment.RrturnPro_count__c += count;
                    updateData.add(detail1Shipment);
                }
            }
            for (Consumable_orderdetails__c detail1ConInvoice : detail1ConInvoiceList) {
                Integer count = updatedConInvoiceCount.get(
                    '' +
                        detail1ConInvoice.Consumable_order__c +
                        detail1ConInvoice.Invoicedet1_OD_link__c +
                        detail1ConInvoice.Asset_Model_No__c
                );
                if (
                    count != null &&
                    (detail1ConInvoice.Invoicedet1_OD_link__c ==
                    shipmentIdMap.get('' + detail1ConInvoice.Invoicedet1_OD_link__c + detail1ConInvoice.Asset_Model_No__c))
                ) {
                Integer count = updatedConInvoiceCount.get(''+detail1ConInvoice.Consumable_order__c+detail1ConInvoice.Invoicedet1_OD_link__c+detail1ConInvoice.Asset_Model_No__c);
                if (count != null && (detail1ConInvoice.Invoicedet1_OD_link__c  == shipmentIdMap.get(''+detail1ConInvoice.Invoicedet1_OD_link__c+detail1ConInvoice.Asset_Model_No__c)) ) {
                    detail1ConInvoice.RrturnPro_count__c += count;
                    //updateData.add(detail1ConInvoice);
                }
@@ -811,5 +753,6 @@
            Database.upsert(updateData, true);
        }
    }
}
}