buli
2023-07-14 5b5c1e16deaa3a9d6d0ed1ffca390655ed103df7
force-app/main/default/triggers/ConsumableOrderDetail2Trigger.trigger
@@ -1,6 +1,6 @@
trigger ConsumableOrderDetail2Trigger on Consumable_order_details2__c (after insert, after update, after delete) {
    Set<String> orderSet = new Set<String>();
    if (StaticParameter.EscapeOrderDetail2Trigger) {
        return ;
    }
@@ -27,7 +27,6 @@
    }
        
    if (orderSet.size()>0){
        // 2018年8月9日 HWAG-B3D9UV  替换 SQL start by 张玉山
        list<Consumable_order_details2__c> allresults = 
@@ -102,72 +101,103 @@
        //更新消耗品订单的发货日期
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值  start by 张玉山
        map<string,Date> DeliverdateResults =  new map<string,Date>();
        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);
                    resultsKeySet.add(Consumable_order_minor_str);
                }
            }else{
                DeliverdateResults.put(Consumable_order_minor_str,results1.Deliver_date__c);
                resultsKeySet.add(Consumable_order_minor_str);
            }
        }
        consumableOrderlist = new List<Consumable_Order__c>();
        for (string key : DeliverdateResults.keySet()) {
           if(DeliverdateResults.get(key)!=null){
                Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
                consumableOrder1.Id = key;
                consumableOrder1.Shipment_Date__c = DeliverdateResults.get(key);
                consumableOrderlist.add(consumableOrder1);
            }
        }
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值  end by 张玉山
        //获取早发货日期 start
        system.debug('DeliverdateResults==============' + DeliverdateResults);
        system.debug('走到最早发货日期');
        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);
            //获取最早发货时间 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);
                    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);
                resultsKeySet.add(Consumable_order_minor_str);
            }
            //获取最早发货时间 pk part1 end
        }
        List<Consumable_Order__c> consumableOrderminlist = new List<Consumable_Order__c>();
        for (string key : DeliverdateminResults.keySet()) {
           if(DeliverdateminResults.get(key)!=null){
                Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
                consumableOrder1.Id = key;
                consumableOrder1.First_Delivery__c = DeliverdateResults.get(key);
                consumableOrderminlist.add(consumableOrder1);
        //两个DeliverdateResults.keySet(),DeliverdateminResults.keySet() 合并作为一个List ,遍历List
        //获取最早发货时间 pk part2 start
        consumableOrderlist = new List<Consumable_Order__c>();
        for(string temp : resultsKeySet){
            Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
            consumableOrder1.Id = temp;
            if(DeliverdateResults.get(temp)!=null){
                consumableOrder1.Shipment_Date__c = DeliverdateResults.get(temp);
            }
            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()) {
        //    if(DeliverdateminResults.get(key)!=null){
        //         Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
        //         consumableOrder1.Id = key;
        //         consumableOrder1.First_Delivery__c = DeliverdateResults.get(key);
        //         consumableOrderminlist.add(consumableOrder1);
        //     }
        // }
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值  end by 张玉山
        //获取早发货日期 start
        // system.debug('DeliverdateResults==============' + DeliverdateResults);
        // system.debug('走到最早发货日期');
        // 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(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(consumableOrderminlist.size() > 0){
            update consumableOrderminlist;
        }
        system.debug('DeliverdateResults==============' + DeliverdateResults);
        //获取最早发货日期 end
        //     }else{
        //         DeliverdateminResults.put(Consumable_order_minor_str,results1.Deliver_date__c);
        //     }
        // }
        // List<Consumable_Order__c> consumableOrderminlist = new List<Consumable_Order__c>();
        // for (string key : DeliverdateminResults.keySet()) {
        //    if(DeliverdateminResults.get(key)!=null){
        //         Consumable_Order__c consumableOrder1 = new Consumable_Order__c();
        //         consumableOrder1.Id = key;
        //         consumableOrder1.First_Delivery__c = DeliverdateResults.get(key);
        //         consumableOrderminlist.add(consumableOrder1);
        //     }
        // }
        // if(consumableOrderminlist.size() > 0){
        //     update consumableOrderminlist;
        // }
        // system.debug('DeliverdateResults==============' + DeliverdateResults);
        // //获取最早发货日期 end
        /* 2018年8月9日 HWAG-B3D9UV  原有SQL 与赋值 start by 张玉山
        AggregateResult[] results1 = [SELECT Consumable_order_minor__c,max(Deliver_date__c) Deliver_date__c
@@ -190,7 +220,7 @@
        if (consumableOrderlist.size() > 0){
           update consumableOrderlist;
        }
        //更新待确认收货数量
        // 2018年8月9日 HWAG-B3D9UV  替换下面原有SQL 使用 map 完成赋值  start by 张玉山
        map<string,Integer> resultsMap2 =  new map<string,Integer>();
@@ -220,6 +250,7 @@
            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;}
            consumableOrderlist.add(consumableOrder2);
        }
@@ -253,10 +284,11 @@
           update consumableOrderlist;
        }
    }
    //Back up by DTT - Li Jun 2023-06-14 Start for reduce soql times
    // 2018年8月9日 HWAG-B3D9UV  获取所有的record ID start by 张玉山
    List<RecordType> allrtList = [select Id,DeveloperName from RecordType where SobjectType = 'Consumable_orderdetails__c'];
    //List<RecordType> allrtList = [select Id,DeveloperName from RecordType where SobjectType = 'Consumable_orderdetails__c'];
    // 2018年8月9日 HWAG-B3D9UV  获取所有的record ID end by 张玉山
    //Back up by DTT - Li Jun 2023-06-14 Start
    //到货和返品时,生成或修改消费品订货明细
    Set<String> arrivedSet = new Set<String>();
    Set<String> returnSet = new Set<String>();
@@ -295,7 +327,6 @@
            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);
@@ -316,26 +347,30 @@
                                         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){               
                String key = '' + ar.get('Consumable_Arrived_order__c') + ar.get('Asset_Model_No__c');
                keyCount.put(key, Integer.valueOf(ar.get('recordCount')));
            }
            // 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)){
                    rtList.add(rtl);
                }
            }
            //Back up by DTT - Li Jun 2023-06-14 Start
            // 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)){
            //         rtList.add(rtl);
            //     }
            // }
            // 2018年8月9日 HWAG-B3D9UV  替代下面SQL select end by 张玉山
            //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'];
             2018年8月9日 HWAG-B3D9UV  原获取 recordtype end by 张玉山 */
            Id recordTypeId = null;
            if (rtList.size() > 0) recordTypeId = rtList[0].Id;
            //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 
@@ -355,7 +390,6 @@
                    //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);
@@ -525,22 +559,22 @@
                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
            // 2018年8月9日 HWAG-B3D9UV  替代下面SQL select start by 张玉山
            List<RecordType> rtList = new List<RecordType>();
            for(RecordType rtl : allrtList){
                if('Detail1_ReturnGoods'.equals(rtl.DeveloperName)){
                    rtList.add(rtl);
                }
            }
            // List<RecordType> rtList = new List<RecordType>();
            // for(RecordType rtl : allrtList){
            //     if('Detail1_ReturnGoods'.equals(rtl.DeveloperName)){
            //         rtList.add(rtl);
            //     }
            // }
            // 2018年8月9日 HWAG-B3D9UV  替代下面SQL select end by 张玉山
             //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 = null;
            if (rtList.size() > 0) recordTypeId = rtList[0].Id;
            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