From e3c02c03dd2de442bbced87236f60a13a1cd154e Mon Sep 17 00:00:00 2001
From: 高章伟 <gaozhangwei@prec-tech.com>
Date: 星期四, 02 三月 2023 17:51:57 +0800
Subject: [PATCH] gzw 正式环境最新代码更新

---
 force-app/main/default/classes/RentalFixtureSetAssignAgencyController.cls |  218 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 127 insertions(+), 91 deletions(-)

diff --git a/force-app/main/default/classes/RentalFixtureSetAssignAgencyController.cls b/force-app/main/default/classes/RentalFixtureSetAssignAgencyController.cls
index 860fafb..55e2639 100644
--- a/force-app/main/default/classes/RentalFixtureSetAssignAgencyController.cls
+++ b/force-app/main/default/classes/RentalFixtureSetAssignAgencyController.cls
@@ -50,7 +50,7 @@
                          + ', Equipment_Type_F__c' //20210508 LJH ADD 1672
                          + ', Wei_Assigned_Cnt__c' // 20210624 ljh add SFDC-C448GR start
                          + ', Campaign__r.IF_Approved__c' // 20220315 ljh add
-                         + ', Campaign__r.Meeting_Approved_No__c' // 20220315 ljh add 
+                         + ', Campaign__r.Meeting_Approved_No__r.Name' // 20220315 ljh add 
                          + ', Campaign__r.Approved_Status__c' // 20220315 ljh add 
                          + ' FROM Rental_Apply__c'
                          + ' WHERE Id=\'' + taId + '\'';
@@ -455,8 +455,18 @@
              WHERE id =:taId
         ];
         for (Rental_Apply__c RaTar : RaTarList) {
-            if( RaTar.Campaign__r.Status == '鍙栨秷'){
-                ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '瀛︿細宸插彇娑堬紝涓嶈兘缁х画鎿嶄綔浜�'));
+            // 20230215 ljh DB202301265636 瀛︿細鍙栨秷鐢宠涔熸嫤鎴� start
+            // if( RaTar.Campaign__r.Status == '鍙栨秷'){
+            //     ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '瀛︿細宸插彇娑堬紝涓嶈兘缁х画鎿嶄綔浜�'));
+            if( RaTar.Campaign__r.Status == '鍙栨秷' || RaTar.Campaign__r.Status == '鍙栨秷鐢宠涓�' ){
+                String tempS = '';
+                if(RaTar.Campaign__r.Status == '鍙栨秷'){
+                    tempS = '宸插彇娑�';
+                }else{
+                    tempS = '鐢宠鍙栨秷涓�';
+                }
+                ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '瀛︿細'+tempS+'锛屼笉鑳界户缁搷浣滀簡'));
+            // 20230215 ljh DB202301265636 瀛︿細鍙栨秷鐢宠涔熸嫤鎴� end
                 return false;
             }
             // else if(RaTar.Repair__r.Repair_Final_Inspection_Date__c != null){
@@ -617,17 +627,8 @@
                             robj.Cancel_Select__c = false; 
                             robj.Cancel_Reason__c = '';
                             robj.Rental_Start_Date__c = RentalStartDateMap.containsKey(esd.tempOldRaesIdSub)?RentalStartDateMap.get(esd.tempOldRaesIdSub):craes.Rental_Start_Date__c ;
-                            switch on parentObj.demo_purpose2__c{
-                                when '璇曠敤锛堟棤璇环锛�','璇曠敤锛堟湁璇环锛�','鏂颁骇鍝佽瘎浠�','鍏朵粬','鍗忚鍊熺敤' {
-                                    robj.Rental_End_Date__c = robj.Rental_Start_Date__c + intValueOf(parentObj.Hope_Lonaer_date_Num__c);
-                                }
-                                when '涓�鑸敤鎴�','淇濅慨鐢ㄦ埛','甯傚満澶氬勾淇濅慨','鍐嶄慨鐞�','绱㈣禂QIS','宸茶喘寰呰揣','鏁呴殰鎺掓煡' {
-                                    robj.Rental_End_Date__c = robj.Rental_Start_Date__c + 30;
-                                }
-                                when '瀛︿細灞曚細' {
-                                    robj.Rental_End_Date__c = parentObj.Campaign_EndDate_F__c + 5;
-                                }
-                            }
+                            robj.Rental_End_Date__c = setRentalEndDate(robj.Rental_Start_Date__c, parentObj);
+
                             //robj.Rental_End_Date__c  = robj.Rental_Start_Date__c + Integer.valueOf(craes.Test_Day__c);
                             // 鏂拌褰� Canceled__c & Canceled_Id__c 涓洪�変腑涓�瑙堢殑Id
                             robj.Canceled__c = craes.canDelete__c?craes.Canceled__c:craes.Id;
@@ -1709,6 +1710,7 @@
         if(!isRaStatusOK()) {
             return;
         }
+
         Id userId =  Userinfo.getUserId(); // 20210624 ljh add SFDC-C448GR
         Datetime now = System.now();
         if(isSameCity) {
@@ -1738,7 +1740,16 @@
                     if(raesd.Is_Body__c) {
                         mainIdList.add(raesd.Asset__c);
                         raesIdSet.add(esd.rec.Rental_Apply_Equipment_Set__c);
+
+                        // add lc 20220927 SFDC-CJ48VE 澶囧搧棰勮鍑哄簱鏃ラ�昏緫璋冩暣 start
+                        // 澶囧搧棰勮鍑哄簱鏃ュ簲璇ョ瓑浜庝粖澶╋紝鍚﹀垯涓嶈兘鍙戣揣
+                        if( esd.rec.Rental_Apply_Equipment_Set__r.Rental_Start_Date__c != Date.today() ){
+                            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '澶囧搧棰勮鍑鸿揣鏃ュ簲璇ョ瓑浜庝粖澶╋紝鍚﹀垯涓嶈兘鍙戣揣!'));
+                            return;
+                        }
+                        // add lc 20220927 SFDC-CJ48VE 澶囧搧棰勮鍑哄簱鏃ラ�昏緫璋冩暣 end
                     }
+
                     // 鍒嗛厤鏃朵复鏃跺彇娑堢殑鍦ㄥ彂璐у悗褰诲簳鍙栨秷
                     if(raesd.AgencyTempCancel__c) {
                         raesd.Cancel_Select__c = true;
@@ -1786,15 +1797,15 @@
                     // 鍙戣揣鍓嶆娴嬫椂闂村拰妫�娴嬩汉鍦╰rigger閲岃
                     raesd.Shippment_loaner_time__c = now;
                     // 20220309 ljh SFDC-CC6CLJ phase5涓婄嚎璇鹃131 鎻愪氦鐢宠鍒板鍝佸嚭搴撴椂闀� start
-                    // Datetime keyDt = raesd.Add_Request_approval_time__c != null?raesd.Add_Request_approval_time__c:raesd.Rental_Apply__r.Request_approval_time__c;
-                    // List<Rental_Apply_Equipment_Set_Detail__c> tempRaesdL;
-                    // if(approvalMap.containsKey(keyDt)){
-                    //     tempRaesdL = approvalMap.get(keyDt);
-                    // }else{
-                    //     tempRaesdL = new List<Rental_Apply_Equipment_Set_Detail__c>();
-                    // }
-                    // tempRaesdL.add(raesd);                        
-                    // approvalMap.put(keyDt,tempRaesdL);
+                    Datetime keyDt = raesd.Add_Request_approval_time__c != null?raesd.Add_Request_approval_time__c:raesd.Rental_Apply__r.Request_approval_time__c;
+                    List<Rental_Apply_Equipment_Set_Detail__c> tempRaesdL;
+                    if(approvalMap.containsKey(keyDt)){
+                        tempRaesdL = approvalMap.get(keyDt);
+                    }else{
+                        tempRaesdL = new List<Rental_Apply_Equipment_Set_Detail__c>();
+                    }
+                    tempRaesdL.add(raesd);                        
+                    approvalMap.put(keyDt,tempRaesdL);
                     // 20220309 ljh SFDC-CC6CLJ phase5涓婄嚎璇鹃131 鎻愪氦鐢宠鍒板鍝佸嚭搴撴椂闀� end  
                     updateRaesdList.add(raesd);
                 }
@@ -1835,69 +1846,75 @@
                 slip.Shippment_loaner_time__c = now;
                 FixtureUtil.withoutUpsertObjects(new List<FixtureDeliverySlip__c> {slip});
                 // 20220309 ljh SFDC-CC6CLJ phase5涓婄嚎璇鹃131 鎻愪氦鐢宠鍒板鍝佸嚭搴撴椂闀� start
-                // map<String,Decimal> ApplyToShipmentMap = new map<String,Decimal>();
-                // if(approvalMap.size() > 0 ){
-                //     // dtList[0] 绗竴涓氨鏄渶灏忔椂闂�
-                //     List<Datetime> dtList = new List<Datetime>(approvalMap.keySet());
-                //     Date startDateSOQL  = date.newinstance(dtList[0].year(), dtList[0].month(), dtList[0].day());
-                //     List<OlympusCalendar__c> ocList = [SELECT Id, Date__c,IsWorkDay__c 
-                //                      FROM OlympusCalendar__c
-                //                     WHERE Date__c >= :startDateSOQL
-                //                       AND Date__c <= :Date.today()
-                //                     ORDER BY Date__c ASC];
-                //     for(Datetime dt:dtList){
-                //         Boolean startFlag = false;
-                //         Boolean endFlag = false;
-                //         Datetime startTime = dt;
-                //         Date startDate = Date.newInstance(startTime.year(),startTime.month(),startTime.day());
-                //         Datetime endTime = Datetime.now();
-                //         Date endDate = Date.today();
-                //         // 瀹℃壒鏃堕棿鏄潪濂ユ灄宸存柉宸ヤ綔鏃�  
-                //         if(ocList[0].IsWorkDay__c == 0){
-                //             for(OlympusCalendar__c oc:ocList){
-                //                 if(oc.IsWorkDay__c == 1){
-                //                     startTime = Datetime.newInstance(oc.Date__c.year(),oc.Date__c.month(),oc.Date__c.day(),0,0,0);
-                //                     startDate = oc.Date__c;
-                //                     startFlag = true;
-                //                     break;
-                //                 }
-                //             }
-                //         }
-                //         // 鍙戣揣鏃堕棿鏄潪濂ユ灄宸存柉宸ヤ綔鏃�
-                //         if(ocList[ocList.size() - 1].IsWorkDay__c == 0){
-                //             for(Integer i = ocList.size() - 1; i <= 0;i--){
-                //                 if(ocList[i].IsWorkDay__c == 1){
-                //                     endTime = Datetime.newInstance(ocList[i].Date__c.addDays(1).year(),ocList[i].Date__c.addDays(1).month(),ocList[i].Date__c.addDays(1).day(),0,0,0);
-                //                     endDate = ocList[i].Date__c.addDays(1);
-                //                     endFlag = true;
-                //                     break;
-                //                 }
-                //             }
-                //         }
-                //         Decimal timeDifLast;
-                //         if(ocList[0].IsWorkDay__c == 0 && ocList[ocList.size() - 1].IsWorkDay__c == 0 && !startFlag && !endFlag){
-                //             timeDifLast = 0;
-                //         }else{
-                //             Long startL = startTime.getTime();
-                //             Long tendL = endTime.getTime();
-                //             Long timeDif = tendL - startL;                            
-                //             Decimal time11 = timeDif*1.00;
-                //             Decimal time12 = 24*3600*1000*1.00;
-                //             timeDifLast = time11/time12;                            
-                //             Integer tempWeek = 0;
-                //             for(OlympusCalendar__c oc:ocList){
-                //                 if(oc.IsWorkDay__c == 0 && startDate < oc.Date__c && oc.Date__c < endDate){
-                //                     tempWeek++;
-                //                 }
-                //             }
-                //             timeDifLast = timeDifLast - tempWeek;
-                //         }
-                //         // dtestLast 鍥涜垗浜斿叆 淇濈暀1浣嶅皬鏁�
-                //         for(Rental_Apply_Equipment_Set_Detail__c raesd00:approvalMap.get(dt)){
-                //             ApplyToShipmentMap.put(raesd00.Id,timeDifLast.setScale(1));
-                //         }
-                //     }
-                // }
+                map<String,Decimal> ApplyToShipmentMap = new map<String,Decimal>();
+                if(approvalMap.size() > 0 ){
+                    // dtList[0] 绗竴涓氨鏄渶灏忔椂闂�
+                    List<Datetime> dtList = new List<Datetime>(approvalMap.keySet());
+                    Date startDateSOQL  = date.newinstance(dtList[0].year(), dtList[0].month(), dtList[0].day());
+                    List<OlympusCalendar__c> ocList = [SELECT Id, Date__c,IsWorkDay__c 
+                                     FROM OlympusCalendar__c
+                                    WHERE Date__c >= :startDateSOQL
+                                      AND Date__c <= :Date.today()
+                                    ORDER BY Date__c ASC];
+                    Map<Date,String> ocMap = new Map<Date,String>();
+                    for(OlympusCalendar__c oc:ocList){
+                        String IsWorkDay = oc.IsWorkDay__c.format();
+                        ocMap.put(oc.Date__c,IsWorkDay);
+                    }
+                    for(Datetime dt:dtList){
+                        Boolean startFlag = false;
+                        Boolean endFlag = false;
+                        Datetime startTime = dt;
+                        Date startDate = Date.newInstance(startTime.year(),startTime.month(),startTime.day());
+                        Datetime endTime = Datetime.now();
+                        Date endDate = Date.today();
+                        // 瀹℃壒鏃堕棿鏄潪濂ユ灄宸存柉宸ヤ綔鏃�  
+                        // if(ocList[0].IsWorkDay__c == 0){
+                        if(ocMap.get(startDate) == '0'){
+                            for(OlympusCalendar__c oc:ocList){
+                                if(startDate < oc.Date__c && oc.IsWorkDay__c == 1){
+                                    startTime = Datetime.newInstance(oc.Date__c.year(),oc.Date__c.month(),oc.Date__c.day(),0,0,0);
+                                    startDate = oc.Date__c;
+                                    startFlag = true;
+                                    break;
+                                }
+                            }
+                        }
+                        // 鍙戣揣鏃堕棿鏄潪濂ユ灄宸存柉宸ヤ綔鏃�
+                        if(ocList[ocList.size() - 1].IsWorkDay__c == 0){
+                            for(Integer i = ocList.size() - 1; i >= 0;i--){
+                                if(ocList[i].IsWorkDay__c == 1){
+                                    endTime = Datetime.newInstance(ocList[i].Date__c.addDays(1).year(),ocList[i].Date__c.addDays(1).month(),ocList[i].Date__c.addDays(1).day(),0,0,0);
+                                    endDate = ocList[i].Date__c.addDays(1);
+                                    endFlag = true;
+                                    break;
+                                }
+                            }
+                        }
+                        Decimal timeDifLast;
+                        if(ocList[0].IsWorkDay__c == 0 && ocList[ocList.size() - 1].IsWorkDay__c == 0 && !startFlag && !endFlag){
+                            timeDifLast = 0;
+                        }else{
+                            Long startL = startTime.getTime();
+                            Long tendL = endTime.getTime();
+                            Long timeDif = tendL - startL;                            
+                            Decimal time11 = timeDif*1.00;
+                            Decimal time12 = 24*3600*1000*1.00;
+                            timeDifLast = time11/time12;                            
+                            Integer tempWeek = 0;
+                            for(OlympusCalendar__c oc:ocList){
+                                if(oc.IsWorkDay__c == 0 && startDate < oc.Date__c && oc.Date__c < endDate){
+                                    tempWeek++;
+                                }
+                            }
+                            timeDifLast = timeDifLast - tempWeek;
+                        }
+                        // dtestLast 鍥涜垗浜斿叆 淇濈暀1浣嶅皬鏁�
+                        for(Rental_Apply_Equipment_Set_Detail__c raesd00:approvalMap.get(dt)){
+                            ApplyToShipmentMap.put(raesd00.Id,timeDifLast.setScale(1));
+                        }
+                    }
+                }
                 // 20220309 ljh SFDC-CC6CLJ phase5涓婄嚎璇鹃131 鎻愪氦鐢宠鍒板鍝佸嚭搴撴椂闀� end 
                 // 鏄庣粏鍜岀敵璇疯繛鍒板彂璐у崟涓�
                 for(Rental_Apply_Equipment_Set_Detail__c raesd: updateRaesdList) {
@@ -1905,9 +1922,9 @@
                         raesd.DeliverySlip__c = slip.Id;
                     }
                     // 20220315 ljh SFDC-CC6CLJ phase5涓婄嚎璇鹃131 鎻愪氦鐢宠鍒板鍝佸嚭搴撴椂闀� start
-                    // if(ApplyToShipmentMap.containsKey(raesd.Id)){
-                    //     raesd.ApplyToShipmentWorkTime__c = ApplyToShipmentMap.get(raesd.Id);
-                    // }
+                    if(ApplyToShipmentMap.containsKey(raesd.Id)){
+                        raesd.ApplyToShipmentWorkTime__c = ApplyToShipmentMap.get(raesd.Id);
+                    }
                     // 20220315 ljh SFDC-CC6CLJ phase5涓婄嚎璇鹃131 鎻愪氦鐢宠鍒板鍝佸嚭搴撴椂闀� end
                 }
                 FixtureUtil.withoutUpdate(updateRaesdList);
@@ -1927,7 +1944,7 @@
                 if (String.isNotBlank(parentObj.Campaign__c) && parentObj.Campaign__r.IF_Approved__c){
                     // ra.ApprovedNo_Delivery__c = parentObj.Campaign__r.Meeting_Approved_No__r.MeetingApprovedNo__c;
                     // ra.Approved_State_Delivery__c = parentObj.Campaign__r.Meeting_Approved_No__r.ProcessState__c;
-                    ra.ApprovedNo_Delivery__c = parentObj.Campaign__r.Meeting_Approved_No__c;
+                    ra.ApprovedNo_Delivery__c = parentObj.Campaign__r.Meeting_Approved_No__r.Name;
                     ra.Approved_State_Delivery__c = parentObj.Campaign__r.Approved_Status__c;
                 }
                 FixtureUtil.withoutUpdate(new List<Rental_Apply__c> {ra});
@@ -1935,8 +1952,9 @@
             // 鍚屽煄鏃惰嚜鍔ㄦ敹璐�
             if(isSameCity && !raesIdSet.isEmpty()) {
                 List<Rental_Apply_Equipment_Set__c> raesList = new List<Rental_Apply_Equipment_Set__c>();
+                Date rentalEndDate = setRentalEndDate(Date.today(), parentObj);
                 for(Id raesId:raesIdSet) {
-                    raesList.add(new Rental_Apply_Equipment_Set__c(Id=raesId, Received_Confirm__c = 'OK'));
+                    raesList.add(new Rental_Apply_Equipment_Set__c(Id=raesId, Received_Confirm__c = 'OK', Rental_Start_Date__c = Date.today(), Rental_End_Date__c = rentalEndDate));
                 }
                 FixtureUtil.withoutUpdate(raesList);
             }
@@ -1956,6 +1974,24 @@
         }
     }
 
+    public Date setRentalEndDate(Date startDate, Rental_Apply__c rentalApplyObj) {
+        Date endDate = null;
+        switch on rentalApplyObj.demo_purpose2__c{
+            when '璇曠敤锛堟棤璇环锛�','璇曠敤锛堟湁璇环锛�','鏂颁骇鍝佽瘎浠�','鍏朵粬','鍗忚鍊熺敤' {
+                endDate = startDate + intValueOf(rentalApplyObj.Hope_Lonaer_date_Num__c);
+            }
+            when '涓�鑸敤鎴�','淇濅慨鐢ㄦ埛','甯傚満澶氬勾淇濅慨','鍐嶄慨鐞�','绱㈣禂QIS','宸茶喘寰呰揣','鏁呴殰鎺掓煡' {
+                endDate = startDate + 30;
+            }
+            when '瀛︿細灞曚細' {
+                endDate = rentalApplyObj.Campaign_EndDate_F__c + 5;
+            }
+        }
+
+        return endDate;
+    }
+    
+
     public class EsdInfo {
         public Rental_Apply_Equipment_Set_Detail__c rec { get; set; }
         public Boolean checked {get;set;}

--
Gitblit v1.9.1