From faec977616ccd111499608186aa759e0c44dfd15 Mon Sep 17 00:00:00 2001
From: 19626 <1962676589@qq.com>
Date: 星期四, 13 四月 2023 17:29:33 +0800
Subject: [PATCH] Merge branch 'LEX_dev' of http://47.92.229.245:8089/r/lightningupdate into LEX_dev

---
 force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js                                                    |   49 
 force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.js          |   67 
 force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.js-meta.xml                 |   11 
 force-app/main/default/classes/RentalApplyWebService.cls                                                   | 2069 +++++++++++++++++++
 force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.html                                              |    4 
 force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.html                            |    5 
 force-app/main/default/classes/FinLibraryButtonController3.cls                                             |   13 
 force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.js-meta.xml           |   11 
 force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.css                                               |   11 
 force-app/main/default/classes/UpdateTenderInformationBatch.cls-meta.xml                                   |    5 
 force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.js-meta.xml   |   11 
 force-app/main/default/lwc/lexSendQIS/lexSendQIS.js                                                        |  121 +
 force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.js-meta.xml         |   11 
 force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.css                                                 |   22 
 force-app/main/default/classes/FinLibraryButtonController2.cls                                             |   24 
 force-app/main/default/classes/SubmitExtensionApprovalProcessController.cls                                |   42 
 force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.js                              |   89 
 force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.js                                                  |  103 
 force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.js                                                |   58 
 force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.html                |    5 
 force-app/main/default/classes/loanerArrangedEmailController.cls                                           |   95 
 force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.html                  |    5 
 force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.js                      |   60 
 force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.js                                                |  659 ++++++
 force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.js                  |   44 
 force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.js-meta.xml             |   11 
 force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.css                             |   10 
 force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.html                    |    5 
 force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.js                      |   52 
 force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.js-meta.xml                                         |   11 
 force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.js-meta.xml                                       |   11 
 force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.js-meta.xml                                       |   11 
 force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.js                    |   49 
 force-app/main/default/classes/FinLibraryButtonController.cls-meta.xml                                     |    5 
 force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.html                                              |    4 
 force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.js                          |   62 
 force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.html                                                |    5 
 force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.js-meta.xml                     |   11 
 force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.js-meta.xml                 |   11 
 force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.html                                                |    4 
 force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.js                                |  102 
 force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.js-meta.xml             |   11 
 force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.js-meta.xml                       |   11 
 force-app/main/default/classes/QISReportController.cls                                                     |  163 +
 force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.js-meta.xml                                         |   11 
 force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.css                               |   10 
 force-app/main/default/classes/RentalApplyControllerLWT.cls-meta.xml                                       |    5 
 force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.js-meta.xml                                       |   11 
 force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.html                        |    5 
 force-app/main/default/classes/loanerArrangedEmailController.cls-meta.xml                                  |    5 
 force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.html                    |    5 
 force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.html          |    5 
 force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.css                                                 |   11 
 force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.js                        |   72 
 force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.js            |   46 
 force-app/main/default/lwc/lexSendQIS/lexSendQIS.js-meta.xml                                               |   11 
 force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.css                                               |   11 
 force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.html                                              |    5 
 force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.js                          |  105 
 force-app/main/default/classes/SubmitExtensionApprovalProcessController.cls-meta.xml                       |    5 
 force-app/main/default/classes/FinLibraryButtonController.cls                                              |   24 
 force-app/main/default/lwc/lexSendQIS/lexSendQIS.css                                                       |   22 
 force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.css                 |   10 
 force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.css                         |   22 
 force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.js-meta.xml               |   11 
 force-app/main/default/classes/RentalApplyControllerLWT.cls                                                |  290 ++
 force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.js                                                  |   55 
 force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.js-meta.xml |   11 
 force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.html                        |    5 
 force-app/main/default/classes/rentalApplyEquipmentRentalPDFController.cls-meta.xml                        |    5 
 force-app/main/default/lwc/lexSendQIS/lexSendQIS.html                                                      |    5 
 force-app/main/default/classes/FinLibraryButtonController3.cls-meta.xml                                    |    5 
 force-app/main/default/classes/RentalApplyWebService.cls-meta.xml                                          |    5 
 force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.css                                               |   11 
 force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.html                      |    5 
 force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.html        |    5 
 force-app/main/default/classes/rentalApplyEquipmentRentalPDFController.cls                                 |   25 
 force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.js                                                |   62 
 force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.html                              |    5 
 force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.css         |   10 
 force-app/main/default/classes/UpdateTenderInformationBatch.cls                                            | 1310 ++++++++++++
 force-app/main/default/classes/FinLibraryButtonController2.cls-meta.xml                                    |    5 
 82 files changed, 6,366 insertions(+), 8 deletions(-)

diff --git a/force-app/main/default/classes/FinLibraryButtonController.cls b/force-app/main/default/classes/FinLibraryButtonController.cls
new file mode 100644
index 0000000..a20d79e
--- /dev/null
+++ b/force-app/main/default/classes/FinLibraryButtonController.cls
@@ -0,0 +1,24 @@
+/**********************************************************************
+ * 
+ *
+ * @url: /services/apexrest/rest
+ * @data:
+ *  {
+        
+    }
+*************************************************************************/
+
+global with sharing class FinLibraryButtonController {
+   
+   @AuraEnabled
+   public static Bulletin_Board__c  getBulletinBoard(String recordId){
+    Bulletin_Board__c res=new Bulletin_Board__c();
+    try {
+            res=[select iPad_Finlibrary__c from Bulletin_Board__c where Id=: recordId];
+    }
+    catch (Exception e) {
+        System.debug(Logginglevel.info,'*******e'+e);
+    }
+    return res;
+   }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/FinLibraryButtonController.cls-meta.xml b/force-app/main/default/classes/FinLibraryButtonController.cls-meta.xml
new file mode 100644
index 0000000..d75b058
--- /dev/null
+++ b/force-app/main/default/classes/FinLibraryButtonController.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>51.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/FinLibraryButtonController2.cls b/force-app/main/default/classes/FinLibraryButtonController2.cls
new file mode 100644
index 0000000..8421838
--- /dev/null
+++ b/force-app/main/default/classes/FinLibraryButtonController2.cls
@@ -0,0 +1,24 @@
+/**********************************************************************
+ * 
+ *
+ * @url: /services/apexrest/rest
+ * @data:
+ *  {
+        
+    }
+*************************************************************************/
+
+global with sharing class FinLibraryButtonController2 {
+   
+   @AuraEnabled
+   public static Bulletin_Board__c getBulletinBoard(String recordId){
+    Bulletin_Board__c  res=new Bulletin_Board__c();
+    try{
+        res=[select iPad_Finlibrary_2__c from Bulletin_Board__c where Id=: recordId];
+    }
+    catch(Exception e){
+        System.debug(Logginglevel.info,'*******e'+e);
+    }
+    return res;
+   }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/FinLibraryButtonController2.cls-meta.xml b/force-app/main/default/classes/FinLibraryButtonController2.cls-meta.xml
new file mode 100644
index 0000000..d75b058
--- /dev/null
+++ b/force-app/main/default/classes/FinLibraryButtonController2.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>51.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/FinLibraryButtonController3.cls b/force-app/main/default/classes/FinLibraryButtonController3.cls
new file mode 100644
index 0000000..b6228d1
--- /dev/null
+++ b/force-app/main/default/classes/FinLibraryButtonController3.cls
@@ -0,0 +1,13 @@
+global with sharing class FinLibraryButtonController3 {
+   @AuraEnabled
+   public static Bulletin_Board__c getBulletinBoard(String recordId){
+    Bulletin_Board__c res=new Bulletin_Board__c();
+    try{
+        res=[select iPad_Finlibrary_3__c from Bulletin_Board__c where  Id= : recordId];
+    }
+    catch(Exception e){
+        System.debug(Logginglevel.info,'*******e'+e);
+    }
+    return res;
+   }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/FinLibraryButtonController3.cls-meta.xml b/force-app/main/default/classes/FinLibraryButtonController3.cls-meta.xml
new file mode 100644
index 0000000..d75b058
--- /dev/null
+++ b/force-app/main/default/classes/FinLibraryButtonController3.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>51.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/QISReportController.cls b/force-app/main/default/classes/QISReportController.cls
index c778eac..3d6a036 100644
--- a/force-app/main/default/classes/QISReportController.cls
+++ b/force-app/main/default/classes/QISReportController.cls
@@ -351,15 +351,176 @@
          return re;
     }
 
+    //OCSM涓嶈鎶ュ憡
+    @AuraEnabled
+    public static InitData initForlexOCSMNoToReportLightingButton (String recordId){
+        InitData res = new initData();
+        try{
+            QIS_Report__c report = [SELECT  id ,OCSMAdministrativeReportNumber__c,OCSMAdministrativeReportDate__c,Aware_date__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
+            res.Id = report.Id;
+            res.oCSMAdministrativeReportNumber = report.OCSMAdministrativeReportNumber__c;
+            res.oCSMAdministrativeReportDate = report.OCSMAdministrativeReportDate__c;
+            res.Awaredate = report.Aware_date__c;
+            System.debug(LoggingLevel.INFO, '*** res: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }
+    @AuraEnabled
+    public static String updateQisForlexOCSMNoToReportLighting (String recordId){
+        String re = '鎴愬姛'; 
+        QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
+        try{
+                QIS_Report__c rac  = new QIS_Report__c();   
+                rac.id = recordId;
+                rac.OCSMAdministrativeReportStatus__c = '鏃犻渶鎶ュ憡';
+                update rac;        
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+            re = e.getMessage();
+        }
+         return re;
+    }
+    //OCSM瑕佹姤鍛�
+    @AuraEnabled
+    public static InitData initForlexOCSMToReportLightingButton (String recordId){
+        InitData res = new initData();
+        try{
+            QIS_Report__c report = [SELECT  id ,OCSMAdministrativeReportStatus__c,Aware_date__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];  
+            res.Id = report.Id;
+            res.oCSMAdministrativeReportStatus = report.OCSMAdministrativeReportStatus__c;
+            res.Awaredate = report.Aware_date__c;
+            System.debug(LoggingLevel.INFO, '*** res: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }
+
+    @AuraEnabled
+    public static String updateQisForlexOCSMToReportLighting (String recordId){
+        String re = '鎴愬姛'; 
+        QIS_Report__c report = [SELECT  id FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
+        try{
+                QIS_Report__c rac  = new QIS_Report__c();   
+                rac.id = recordId;
+                rac.OCSMAdministrativeReportStatus__c  = '寰呮姤鍛�';
+                update rac;        
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+            re = e.getMessage();
+        }
+         return re;
+    }
+    //鍙戦�丵IS鍒癝PO
+    @AuraEnabled
+    public static InitData initForlexSendQISButton (String recordId){
+        InitData res = new initData();
+        ID myUserID = UserInfo.getUserId();
+        User userinfo = [SELECT id,Profile.name FROM User WHERE Id = :myUserID LIMIT 1];
+        try{
+            QIS_Report__c report = [SELECT  id ,RecordTypeId,IsSendQIS__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
+            RecordType rec = [SELECT id,name FROM RecordType where  Id = :report.RecordTypeId];
+            res.Id = report.Id;
+            res.qisRecordTypeId = report.RecordTypeId;
+            res.qisRecordName = rec.name;
+            res.profileName = userinfo.Profile.name;
+            res.IsSendQIS = report.IsSendQIS__c;
+            System.debug(LoggingLevel.INFO, '*** res: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }
+
+    @AuraEnabled
+    public static String updateQisForSendQIS (String recordId){
+        String re = '鎴愬姛'; 
+        QIS_Report__c report = [SELECT Id,Name,IsSendQIS__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
+        if(report == null ){
+            return '娌℃湁QIS锛�' + recordId + '鐨勬暟鎹��';
+        }
+        Savepoint sp = Database.setSavepoint(); 
+        try{    
+                
+                QIS_Report__c rac  = new QIS_Report__c();   
+                rac.id = recordId;
+                rac.IsSendQIS__c = true;
+                update rac;
+        }catch(Exception e){
+            Database.rollback(sp);
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+            re = e.getMessage();
+        }
+         return re;
+    }
+    // OCSM鏈嶅姟鏈儴鏀跺埌瀹炵墿
+    @AuraEnabled
+    public static InitData initForlexRCRecievedButton (String recordId){
+        InitData res = new initData();
+        ID myUserID = UserInfo.getUserId();
+        User userinfo = [SELECT id,Profile.name FROM User WHERE Id = :myUserID LIMIT 1];
+        try{
+            QIS_Report__c report = [SELECT  id ,isAE_Profile__c,QIS_Status__c,isPAE_Profile__c,is_CNBuy__c FROM QIS_Report__c WHERE Id = :recordId LIMIT 1];
+            res.Id = report.Id;
+            res.isAEProfile = report.isAE_Profile__c;
+            res.isPAEProfile = report.isPAE_Profile__c;
+            res.QIStatus = report.QIS_Status__c;
+            res.isCNBuy = report.is_CNBuy__c;
+            System.debug(LoggingLevel.INFO, '*** res: ' + res);
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+        }
+        return res;
+    }
+
+    @AuraEnabled
+    public static String updateQisForRCRecieved (String recordId){
+        String re = '鎴愬姛'; 
+        ID myUserID = UserInfo.getUserId();
+        User userinfo = [SELECT id,Alias,BuchangApprovalManagerSales__c,JingliApprovalManager__c, BuchangApprovalManager__c, ZongjianApprovalManager__c FROM User WHERE Id = :myUserID LIMIT 1];
+
+        try{    
+                QIS_Report__c rac  = new QIS_Report__c();   
+                rac.id = recordId;
+
+                rac.QIS_Status__c = 'RC妫�娴嬩腑';
+                rac.OCM_RC_RecievedDate__c = Date.today();
+                rac.RC__c = myUserID;
+                rac.RC_Receive_staff__c = userinfo.Alias;
+
+                if (userinfo != null  && userinfo.BuchangApprovalManagerSales__c!= null) {
+                    rac.RC_Manager__c = userinfo.BuchangApprovalManagerSales__c;
+                } else {
+                    rac.RC_Manager__c = myUserID;
+                }
+                update rac;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO, '*** e: ' + e);
+            re = e.getMessage();
+        }
+         return re;
+    }
     public class InitData{
         @AuraEnabled
         public String Id;
+        @AuraEnabled
+        public String qISSCReport;
+        @AuraEnabled
+        public String name;
+        @AuraEnabled
+        public String qISSCId;
         @AuraEnabled
         public String ownerId;
         @AuraEnabled
         public String qisRecordTypeId;
         @AuraEnabled
         public String qisRecordName;
+        @AuraEnabled
+        public String nextaction;
+        @AuraEnabled
+        public String qISMarketCategory;
         @AuraEnabled
         public String profileName;
         @AuraEnabled
@@ -393,6 +554,8 @@
         @AuraEnabled
         public Date qISInstallDate;
         @AuraEnabled
+        public Date oSHInspectionDate;
+        @AuraEnabled
         public Date cdsdate;
         @AuraEnabled
         public Date awaredate;
diff --git a/force-app/main/default/classes/RentalApplyControllerLWT.cls b/force-app/main/default/classes/RentalApplyControllerLWT.cls
new file mode 100644
index 0000000..ea1812a
--- /dev/null
+++ b/force-app/main/default/classes/RentalApplyControllerLWT.cls
@@ -0,0 +1,290 @@
+public with sharing class RentalApplyControllerLWT {
+    public RentalApplyControllerLWT() {
+        
+    }
+    @AuraEnabled
+    public static Rental_Apply__c initFromCancelSubmitButton(String recordId){
+        InitData res = new InitData();
+        try{
+            Rental_Apply__c report=[select 
+             Status__c,Yi_loaner_arranged__c,Id,RA_Status__c,
+            demo_purpose2__c,Follow_UP_Opp__c,Statu_Achievements__c,Statu_Achievements_ID__c,
+            Request_shipping_day__c,Demo_purpose1__c,Repair__c,RecordTypeId,SupplementCreated__c,
+            OPDPlan__c,Campaign__c,QIS_number__c,OwnerId,
+            // QIS_numberId__c,CampaignId__c,applyUserId__c锛�
+            Re_repair__c,
+            QIS_ID_Line__c,
+            applyUser__c
+             from Rental_Apply__c where Id= :recordId];
+            return report;
+            // res.StatusC=report.Status__c;
+            // res.Id=report.Id;
+            // res.YiLoanerArrangedC=report.Yi_loaner_arranged__c;
+            // res.RAStatusC=report.RA_Status__c;
+            // res.DemoPurpose2C=report.demo_purpose2__c;
+            // res.FollowUPOppC=report.Follow_UP_Opp__c;
+            // res.StatuAchievementsC=report.Statu_Achievements__c;
+            // res.StatuAchievementsIDC=report.Statu_Achievements_ID__c;
+            // res.RequestShippingDayC=report.Request_shipping_day__c;
+            // res.DemoPurpose1C=report.Demo_purpose1__c;
+            // res.RepairC=report.Repair__c;
+            // res.RecordTypeId=report.RecordTypeId;
+            // res.SupplementCreatedC=report.SupplementCreated__c;
+            // res.OPDPlanC=report.OPDPlan__c;
+            // res.CampaignC=report.Campaign__c;
+            // res.QISNumberC=report.QIS_number__c;
+            // res.QISNumberIdc=report.QIS_numberId__c;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+
+
+    @AuraEnabled
+    public static list<Rental_Apply_Equipment_Set_Detail__c> selectRentalApplyEquipmentSetDetailByRacId(String recordId){
+        InitData res = new InitData();
+        try{
+            list<Rental_Apply_Equipment_Set_Detail__c> report=[select 
+            Id, Fixture_Model_No_F__c, Product_Status_Flag_F__c 
+            from Rental_Apply_Equipment_Set_Detail__c where Rental_Apply__c = :recordId]; 
+            return report;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+
+    @AuraEnabled
+    public static list<QIS_Report__c> selectQISReportById(String recordId){
+        InitData res = new InitData();
+        try{
+            list<QIS_Report__c> report=[select 
+            Id, nonyushohin__r.Product2.Fixture_Model_No_T__c 
+            from QIS_Report__c 
+            where id = :recordId
+            ]; 
+            return report;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+    
+    @AuraEnabled
+    public static list<Repair__c> selectRepairById(String recordId){
+        InitData res = new InitData();
+        try{
+            list<Repair__c> report=[select Id, Repair_Rank__c, DW_Sign_Txt__c, FSE_ApplyForRepair_Day__c, Delivered_Product__r.Product2.Fixture_Model_No_T__c
+                 , ReRepairObject_F__c,Status1__c,Agreed_Date__c,Repair_Estimated_date_formula__c,Repair_Ordered_Date__c
+                 , IfCheckFixture__c
+                 , Repair_Final_Inspection_Date__c,Repair_Shipped_Date__c,Number_of_EffectiveContract__c, NewProductGuaranteeObject__c, Delivered_Product__r.Product2.Asset_Model_No__c
+                 from Repair__c where id = :recordId
+            ]; 
+            return report;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+
+    @AuraEnabled
+    public static list<Campaign> selectCampaignById(String recordId){
+        InitData res = new InitData();
+        try{
+            list<Campaign> report=[select 
+            Status, Rental_Apply_Flag__c ,IF_Approved__c,Meeting_Approved_No__c,Approved_Status__c 
+            from Campaign where id =:recordId
+
+            ]; 
+            return report;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+    @AuraEnabled
+    public static list<Rental_Apply_Equipment_Set__c> selectRentalApplyEquipmentSetByRacId(String recordId){
+        InitData res = new InitData();
+        try{
+            list<Rental_Apply_Equipment_Set__c> report=[select Id 
+                from Rental_Apply_Equipment_Set__c 
+                where RetalFSetDetail_Cnt__c = 0 AND Rental_Apply__c = :recordId
+            ]; 
+            return report;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+
+    @AuraEnabled
+    public static list<Rental_Apply__c> selectRentalApplyById(String recordId){
+        InitData res = new InitData();
+        try{
+            list<Rental_Apply__c> report=[select 
+            id,OPDPlan__c,OPDPlan__r.SalesManager_Txt__c,OPDPlan__r.BuchangApprovalManagerSales_Txt__c 
+            from Rental_Apply__c where id = :recordId
+
+            ]; 
+            return report;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+
+    @AuraEnabled
+    public static list<User> selectUserById(String recordId){
+        InitData res = new InitData();
+        try{
+            list<User> report=[select 
+            id,JingliEquipmentManager__c,JingliEquipmentManager__r.Name,Buzhang_Equipment_Manager__c,
+            Buzhang_Equipment_Manager__r.Name 
+            from User where id = :recordId
+            ]; 
+            return report;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+
+    @AuraEnabled
+    public static list<QIS_report__c> selectQISreportById2(String recordId){
+        InitData res = new InitData();
+        try{
+            list<QIS_report__c> report=[select id,next_action__c 
+            from QIS_report__c where id =:recordId
+            ]; 
+            return report;
+        }catch(Exception e){
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c Cancel Error : ' + e);
+        }
+        return null;
+    }
+
+         
+    @AuraEnabled
+    public static String getUserId(){
+        
+        return UserInfo.getUserId();
+    }
+
+    @AuraEnabled
+    public static String getProfileId(){
+        return UserInfo.getProfileId();
+    }   
+
+    @AuraEnabled
+    public static String setSObjectShare(String sobjectName, String rowCause, String parentId, List<String> userAccess, String ownerId) {
+
+        try {
+            List<SObject> sObjList = new List<SObject>();
+            for (String ua : userAccess) {
+                String userid = ua.split('_')[0];
+                String access = ua.split('_')[1];
+                SObject sObj = Schema.getGlobalDescribe().get(sobjectName).newSObject();
+                if (String.isBlank(userid) == false && userid.substring(0, 15) != ownerId.substring(0, 15)) {
+                    sObj.put('RowCause', rowCause);
+                    sObj.put('ParentId', parentId);
+                    sObj.put('UserOrGroupId', userid);
+                    sObj.put('AccessLevel', access);
+                    sObjList.add(sObj);
+                }
+            }
+            if (sObjList.size() > 0) insert sObjList;
+            return 'OK';
+        } catch (Exception e) {
+            return e.getMessage();
+        }   
+    }
+
+    @AuraEnabled
+    public static UpdateResult updateRentalApplyC(        
+        String recordId,
+        String SalesManagerSubmitC,
+        String StatusC,
+        String OPDManagerApproverC,
+        String BuchangApprovalManagerSalesSubmitC,
+        String OPDBuchangApproverC
+    ) {
+        UpdateResult result = new UpdateResult();
+        result.recordId = recordId;
+        try{
+            // 鏇存柊璁板綍骞惰幏鍙栫粨鏋�
+            if(recordId==null) return null;
+            Rental_Apply__c rac = new Rental_Apply__c( id=recordId);
+
+            if(SalesManagerSubmitC!=null&& SalesManagerSubmitC != ''){
+                rac.SalesManagerSubmit__c=SalesManagerSubmitC;
+            }
+            if(StatusC!=null&&StatusC!=''){
+                rac.Status__c=StatusC;
+            }
+            if(OPDManagerApproverC!=null&&OPDManagerApproverC!=''){
+                rac.OPDManagerApprover__c=OPDManagerApproverC;
+            }
+            if(BuchangApprovalManagerSalesSubmitC!=null&&BuchangApprovalManagerSalesSubmitC!=''){
+                rac.BuchangApprovalManagerSalesSubmit__c=BuchangApprovalManagerSalesSubmitC;
+            }
+            if(OPDBuchangApproverC!=null&&OPDBuchangApproverC!=''){
+                rac.OPDBuchangApprover__c=OPDBuchangApproverC;
+            }
+            if(rac.id==null)return null;
+            update rac;
+            result.success = true;
+            result.errors = new List<String>();
+            return result;
+        }catch(Exception e){
+            result.success = false;
+            result.errors = new List<String>();
+            result.errors.add(e.getMessage());
+            System.debug(LoggingLevel.INFO,'Rental_Apply__c update Error : ' + e);
+        }
+        return result;
+    }
+
+    public class UpdateResult {
+        @AuraEnabled public String recordId {get;set;}
+        @AuraEnabled public Boolean success {get;set;}
+        @AuraEnabled public List<String> errors {get;set;}
+    }
+    public class InitData{
+        @AuraEnabled
+        public String StatusC;
+        @AuraEnabled
+        public Decimal YiLoanerArrangedC;
+        @AuraEnabled
+        public String Id;
+        @AuraEnabled
+        public String RAStatusC;
+
+        @AuraEnabled
+        public String DemoPurpose2C;
+        @AuraEnabled
+        public String FollowUPOppC;
+        @AuraEnabled
+        public String StatuAchievementsC;
+        @AuraEnabled
+        public String StatuAchievementsIDC;
+        @AuraEnabled
+        public Date RequestShippingDayC;
+        @AuraEnabled
+        public String DemoPurpose1C;
+        @AuraEnabled
+        public String RepairC;
+        @AuraEnabled
+        public String RecordTypeId;
+        @AuraEnabled
+        public Boolean SupplementCreatedC;
+        @AuraEnabled
+        public String OPDPlanC;
+        @AuraEnabled
+        public String CampaignC;
+        @AuraEnabled
+        public String QISNumberC;
+        @AuraEnabled
+        public String QISNumberIdc;
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/RentalApplyControllerLWT.cls-meta.xml b/force-app/main/default/classes/RentalApplyControllerLWT.cls-meta.xml
new file mode 100644
index 0000000..d75b058
--- /dev/null
+++ b/force-app/main/default/classes/RentalApplyControllerLWT.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>51.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/RentalApplyWebService.cls b/force-app/main/default/classes/RentalApplyWebService.cls
new file mode 100644
index 0000000..a78f66b
--- /dev/null
+++ b/force-app/main/default/classes/RentalApplyWebService.cls
@@ -0,0 +1,2069 @@
+global class RentalApplyWebService {
+    // TODO please use public okStatus
+    public final static Integer okStatus = 99;
+    public final static String okStatus2 = '寮曞綋娓�';
+
+//bp2
+//    /**
+//     * check meisai
+//     * @param rentalApplyId            澶囧搧鍊熷嚭鐢宠ID
+//     * @param rentalApplys             澶囧搧鍊熷嚭鐢宠
+//     * @param rentalApplyEquipmentSets 澶囧搧鐢宠鍊熷嚭鍘嗗彶(澶囧搧鍊熷嚭鐢宠 鍜� 澶囧搧Set 鐨凩ink琛�)
+//     * @param equipmentSetIdList       Equipment_Set__c.id
+//     * @param idmap                    Equipment_Set__c.Id => Rental_Apply_Equipment_Set__c.Id
+//     * @return 鎴愬姛: 1銆乷r 閿欒鍐呭
+//     */
+//    private static String privateCheck(String rentalApplyId,
+//            Map<String, List<List<Rental_Apply__c>>> mRentalApplys,
+//            Map<String, List<List<Rental_Apply_Equipment_Set__c>>> mRentalApplyEquipmentSets,
+//            Map<String, List<List<Id>>> mEquipmentSetIdList,
+//            Map<String, List<Map<Id, Id>>> mIdmap
+//    ) {
+//        List<Rental_Apply__c> rentalApplys = mRentalApplys.get('rentalApplys')[0];
+//        List<Rental_Apply_Equipment_Set__c> rentalApplyEquipmentSets = mRentalApplyEquipmentSets.get('rentalApplyEquipmentSets')[0];
+//        List<Id> equipmentSetIdList = mEquipmentSetIdList.get('equipmentSetIdList')[0];
+//        Map<Id, Id> idmap = mIdmap.get('idmap')[0];
+
+//        //杩斿洖缁撴灉,1:鎴愬姛銆�
+//        String checkRS = '1';
+        
+//        //澶囧搧鍊熷嚭鐢宠
+//        rentalApplys = [select Rental_Apply_Equipment_Set_Cnt__c from Rental_Apply__c where Id = :rentalApplyId];
+//        if (rentalApplys.size() == 0) {
+//            checkRS = '娌℃湁澶囧搧鍊熷嚭鐢宠锛岃纭銆�';
+//            return checkRS;
+//        }
+//        Rental_Apply__c rentalApply = rentalApplys[0];
+//        if (rentalApply.Rental_Apply_Equipment_Set_Cnt__c <= 0) {
+//            //杩斿洖缁撴灉,2:message-娌℃湁澶囧搧Set锛岃纭銆�
+//            checkRS = '娌℃湁鍊熷嚭澶囧搧set涓�瑙堬紝璇风‘璁ゃ��';
+//            return checkRS;
+//        }
+        
+//        //澶囧搧鐢宠鍊熷嚭鍘嗗彶
+//        equipmentSetIdList = new List<Id>();
+//        rentalApplyEquipmentSets = [
+//                select Equipment_Set__c,Equipment_Set__r.Active_judgement__c
+//                  from Rental_Apply_Equipment_Set__c
+//                 where Rental_Apply__c = :rentalApplyId and Cancel_Select__c = false];
+//        for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : rentalApplyEquipmentSets) {
+//            equipmentSetIdList.add(rentalApplyEquipmentSet.Equipment_Set__c);
+//        }
+
+//        // Equipment_Set_Detail__c锛岀┖鏇存柊 (TODO 浠婂緦batch銇仾銈嬶紒锛�)
+//        List<Equipment_Set_Detail__c> updDetailList = [
+//                select id
+//                  from Equipment_Set_Detail__c
+//                 where Equipment_Set__c in :equipmentSetIdList];
+//        update updDetailList;
+
+//        //澶囧搧鐢宠鍊熷嚭鍘嗗彶銆佸啀鍙栧緱
+//        List<Rental_Apply_Equipment_Set__c> raesList = new List<Rental_Apply_Equipment_Set__c>();
+//        equipmentSetIdList = new List<Id>();
+        
+//        rentalApplyEquipmentSets = [
+//                select Id,Name,Equipment_Set__c,ES_Stock_Status__c,Loaner_name_text__c,Loaner_code_text__c,SerialNumber_text__c,
+//                        Salesdepartment_text__c,Salesprovince_text__c,Equipment_Type_text__c,Equipment_Set_Borrowed__c,Product_Class_Bor__c,
+//                        Equipment_Set__r.Name,Equipment_Set__r.ES_Status__c,Equipment_Set__r.Active_judgement2__c,
+//                        Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c,Rental_Start_Date__c,
+//                        Equipment_Set__r.Already_Stock_Out__c, Equipment_Set__r.Loaner_name__c,
+//                        Equipment_Set__r.Loaner_code__c,Equipment_Set__r.Salesdepartment__c,
+//                        Equipment_Set__r.SalesProvince__c,Equipment_Set__r.Equipment_Type__c,Equipment_Set__r.SerialNumber__c,
+//                        Equipment_Set__r.Contents_number__c,Equipment_Set__r.Product_category__c
+//                  from Rental_Apply_Equipment_Set__c
+//                 where Rental_Apply__c = :rentalApplyId and Cancel_Select__c = false];
+//        idmap = new Map<Id,Id>();    // Equipment_Set__c.Id => Rental_Apply_Equipment_Set__c.Id
+        
+//        for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : rentalApplyEquipmentSets) {
+//            if (rentalApplyEquipmentSet.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c != rentalApplyEquipmentSet.Id) {
+//                raesList.add(rentalApplyEquipmentSet);
+//                equipmentSetIdList.add(rentalApplyEquipmentSet.Equipment_Set__c);
+//            }
+//        }
+        
+//        for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : raesList) {
+//            /*
+//            if (rentalApplyEquipmentSet.Rental_Start_Date__c <= Date.today()) {
+//                checkRS = '鍊熷嚭寮�濮嬫棩蹇呴』澶т簬浠婃棩銆傚�熷嚭澶囧搧set涓�瑙堬細' + rentalApplyEquipmentSet.Name;
+//                return checkRS;
+//            }
+//            */
+//            /*
+//            if (rentalApplyEquipmentSet.Equipment_Set__r.Active_judgement2__c != okStatus) {
+//                //杩斿洖缁撴灉,1:message-璇风‘璁ゅ鍝丼et鐘舵�併��
+//                checkRS = '澶囧搧set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 鐨�' + Schema.SObjectType.Equipment_Set__c.fields.Asset_Set_status2__c.label + '涓嶆槸 99.绛夊緟棰勭害 锛岀幇鍦ㄦ槸 ' + rentalApplyEquipmentSet.Equipment_Set__r.Asset_Set_status2__c + ' 璇风‘璁�';
+//                return checkRS;
+//            }
+//            */
+//            //
+////bp2            if (rentalApplyEquipmentSet.Equipment_Set__r.Contents_number__c == 0) {
+////bp2                checkRS = '澶囧搧set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 娌℃湁閫夋嫨鍊熷嚭鐨勬槑缁嗭紝璇风‘璁�';
+////bp2                return checkRS;
+////bp2            }
+////bp2            if (rentalApplyEquipmentSet.Equipment_Set__r.ES_Status__c != okStatus2) {
+////bp2                checkRS = '澶囧搧set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 鐨�' + Schema.SObjectType.Equipment_Set__c.fields.ES_Status__c.label + '涓嶆槸 ' + okStatus2 + '锛岀幇鍦ㄦ槸 ' + rentalApplyEquipmentSet.Equipment_Set__r.ES_Status__c + ' 璇风‘璁�';
+////bp2                return checkRS;
+////bp2            }
+////bp2            if (rentalApplyEquipmentSet.Equipment_Set__r.Already_Stock_Out__c == true) {
+////bp2                checkRS = '澶囧搧set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 娌℃湁涓婃灦锛岃纭';
+////bp2                return checkRS;
+////bp2            }
+////bp2            if (rentalApplyEquipmentSet.ES_Stock_Status__c == '涓嶈兘鍑哄簱') {
+////bp2                checkRS = '澶囧搧set ' + rentalApplyEquipmentSet.Equipment_Set__r.Name + ' 鍦ㄩ绾︽湡闂村涓嶈兘鍑哄簱锛岃纭';
+////bp2                return checkRS;
+////bp2            }
+//            idmap.put(rentalApplyEquipmentSet.Equipment_Set__c, rentalApplyEquipmentSet.Id);
+//        }
+//        mRentalApplys.get('rentalApplys')[0] = rentalApplys;
+//        mRentalApplyEquipmentSets.get('rentalApplyEquipmentSets')[0] = raesList;
+//        mEquipmentSetIdList.get('equipmentSetIdList')[0] = equipmentSetIdList;
+//        mIdmap.get('idmap')[0] = idmap;
+//        return checkRS;
+//    }
+
+//bp2
+//    /**
+//     *@param  : String 澶囧搧鍊熷嚭鐢宠ID
+//     *@return : String (鎴愬姛: 1銆乷r 閿欒鍐呭)
+//     */
+//    WebService static String reserveCheck(String rentalApplyId) {
+//        //澶囧搧鍊熷嚭鐢宠
+//        List<Rental_Apply__c> rentalApplys = new List<Rental_Apply__c>();
+//        //澶囧搧鐢宠鍊熷嚭鍘嗗彶
+//        List<Rental_Apply_Equipment_Set__c> rentalApplyEquipmentSets = new List<Rental_Apply_Equipment_Set__c>();
+//        List<Id> equipmentSetIdList = new List<Id>();
+//        Map<Id, Id> idmap = new Map<Id,Id>();    // Equipment_Set__c.Id => Rental_Apply_Equipment_Set__c.Id
+
+//        Map<String, List<List<Rental_Apply__c>>> mRentalApplys =
+//                new Map<String, List<List<Rental_Apply__c>>>{'rentalApplys' => new List<List<Rental_Apply__c>>{rentalApplys}};
+//        Map<String, List<List<Rental_Apply_Equipment_Set__c>>> mRentalApplyEquipmentSets =
+//                new Map<String, List<List<Rental_Apply_Equipment_Set__c>>>{'rentalApplyEquipmentSets' => new List<List<Rental_Apply_Equipment_Set__c>>{rentalApplyEquipmentSets}};
+//        Map<String, List<List<Id>>> mEquipmentSetIdList =
+//                new Map<String, List<List<Id>>>{'equipmentSetIdList' => new List<List<Id>>{equipmentSetIdList}};
+//        Map<String, List<Map<Id, Id>>> mIdmap =
+//                new Map<String, List<Map<Id, Id>>>{'idmap' => new List<Map<Id, Id>>{idmap}};
+
+//        String rt1 = RentalApplyWebService.approvalCheck(rentalApplyId);
+//        if (rt1 != '1') {
+//            return rt1;
+//        }
+//        //杩斿洖缁撴灉,1:鎴愬姛銆�
+////        return RentalApplyWebService.privateCheck(rentalApplyId, mRentalApplys, mRentalApplyEquipmentSets, mEquipmentSetIdList, mIdmap);
+//        String rt2 = RentalApplyWebService.privateCheck(rentalApplyId, mRentalApplys, mRentalApplyEquipmentSets, mEquipmentSetIdList, mIdmap);
+//        if (rt2 != '1') {
+//            return rt2;
+//        }
+//        return '1';
+//    }
+
+//bp2
+//    /**
+//     *@param  : String 澶囧搧鍊熷嚭鐢宠ID
+//     *@return : String (鎴愬姛: 1銆乷r 閿欒鍐呭)
+//     */
+//    WebService static String reserve(String rentalApplyId) {
+//        //澶囧搧鍊熷嚭鐢宠
+//        List<Rental_Apply__c> rentalApplys = new List<Rental_Apply__c>();
+//        //澶囧搧鐢宠鍊熷嚭鍘嗗彶
+//        List<Rental_Apply_Equipment_Set__c> rentalApplyEquipmentSets = new List<Rental_Apply_Equipment_Set__c>();
+//        List<Id> equipmentSetIdList = new List<Id>();
+//        Map<Id, Id> idmap = new Map<Id,Id>();    // Equipment_Set__c.Id => Rental_Apply_Equipment_Set__c.Id
+
+//        Map<String, List<List<Rental_Apply__c>>> mRentalApplys =
+//                new Map<String, List<List<Rental_Apply__c>>>{'rentalApplys' => new List<List<Rental_Apply__c>>{rentalApplys}};
+//        Map<String, List<List<Rental_Apply_Equipment_Set__c>>> mRentalApplyEquipmentSets =
+//                new Map<String, List<List<Rental_Apply_Equipment_Set__c>>>{'rentalApplyEquipmentSets' => new List<List<Rental_Apply_Equipment_Set__c>>{rentalApplyEquipmentSets}};
+//        Map<String, List<List<Id>>> mEquipmentSetIdList =
+//                new Map<String, List<List<Id>>>{'equipmentSetIdList' => new List<List<Id>>{equipmentSetIdList}};
+//        Map<String, List<Map<Id, Id>>> mIdmap =
+//                new Map<String, List<Map<Id, Id>>>{'idmap' => new List<Map<Id, Id>>{idmap}};
+
+//        //杩斿洖缁撴灉,1:鎴愬姛銆�
+//        String checkRS = RentalApplyWebService.privateCheck(rentalApplyId, mRentalApplys, mRentalApplyEquipmentSets, mEquipmentSetIdList, mIdmap);
+//        if (checkRS != '1') return checkRS;
+//        rentalApplys = mRentalApplys.get('rentalApplys')[0];
+//        rentalApplyEquipmentSets = mRentalApplyEquipmentSets.get('rentalApplyEquipmentSets')[0];
+//        equipmentSetIdList = mEquipmentSetIdList.get('equipmentSetIdList')[0];
+//        idmap = mIdmap.get('idmap')[0];
+
+//        Rental_Apply__c rentalApply = rentalApplys[0];
+
+//        //澶囧搧Set
+//        List<Equipment_Set__c> equipmentSetUpdateList = new List<Equipment_Set__c>();
+//        //澶囧搧Set鏄庣粏
+//        List<Equipment_Set_Detail__c> equipmentSetDetailList = new List<Equipment_Set_Detail__c>();
+//        List<Equipment_Set_Detail__c> equipmentSetDetailList2 = new List<Equipment_Set_Detail__c>();
+//        //澶囧搧鐢宠鍊熷嚭鏄庣粏鍘嗗彶
+//        List<Rental_Apply_Equipment_Set_Detail__c> rentalApplyEquipmentSetDetailList = new List<Rental_Apply_Equipment_Set_Detail__c>();
+//        for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : rentalApplyEquipmentSets) {
+//            // 宸插仛鍑哄簱鎸囩ずflag鈬掑墠鍥炪伄鐢宠珛銇伨銇犵祩銈忋仯銇︺仾銇勨噿鍑哄簱銇椼仾銇�
+//            if (rentalApplyEquipmentSet.Equipment_Set__r.Already_Stock_Out__c == false) {
+//                //鏇存柊澶囧搧Set
+//                Equipment_Set__c equipmentSet = new Equipment_Set__c(
+//                    Id = rentalApplyEquipmentSet.Equipment_Set__c,
+//                    Last_Reserve_Rental_Apply_Equipment_Set__c = rentalApplyEquipmentSet.Id,
+//                    Pre_Reserve_Rental_Apply_Equipment_Set__c = rentalApplyEquipmentSet.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c,
+//                    StockDown__c = false,
+//                    StockDown_time__c = null,
+//                    Shipment_request_time__c = System.now(),            //鍑哄簱鎸囩ず鏃堕棿
+//                    Shippment_loaner_time__c = null,            //澶囧搧涓績鍑哄簱鏃堕棿
+//                    Forecast_arrival_day__c = null,             //棰勮鍒拌揣鏃�
+//                    //Loaner_received_day__c = null,              //鐜板満绛炬敹鏃�
+//                    Return_wh_chenk_staff__c = null,
+//                    Request_asset_extend_time__c = null,        //寤舵湡鐢宠鏃堕棿
+//                    asset_extend_approval_time__c = null,       //寤舵湡鐢宠鎵瑰噯鏃堕棿
+//                    //Asset_return_day__c = null,                 //鐗╂祦鎻愯揣鏃�
+//                    Received_loaner_time__c = null,             //澶囧搧涓績鍥炴敹鏃堕棿
+//                    delivery_company__c = null,
+//                    Fedex_number__c = null,
+//                    Distributor_method__c = null,
+//                    Return_to_wh_staff__c = null,
+//                    Return_delivery_company__c = null,
+//                    Return_Fedex_number__c = null,
+//                    Return_Distributor_method__c = null,
+//                    Received_confirmation_staff__c = null,
+//                    Customer_install_explanation_sign__c = null, //鏄惁鍥炴敹CDS纭鍗�
+//                    Send_to_return_email__c = false, //鍙戦�佸洖鏀剁粨鏋滃弽棣堥偖浠�
+//                    Return_comment_anoucment__c = null, //鍙戦�佸洖鏀剁粨鏋滃弽棣堝唴瀹�(NG鐞嗙敱鍜屾瑺鍝佹儏鍐�)
+////bp2                    CDS_complete__c = false,
+//                    Arrival_in_wh__c = false,
+//                    Arrival_wh_time2__c = null,
+//                    Already_Stock_Out__c = true,
+
+//                    Repair_Sum_Update__c = 0
+//                );
+//                //鏇存柊澶囧搧Set
+//                equipmentSetUpdateList.add(equipmentSet);
+//            }
+//        }
+
+//        //鍊熷嚭璁惧鏈鸿韩鍙风爜
+//        Map<String, String> assetSerialNumberMap = new Map<String, String>();
+//        //澶囧搧Set鏄庣粏
+//        Equipment_Set_Detail__c[] equipmentSetDetails = [select Equipment_Set__c,Asset__c,Asset__r.SerialNumber,
+//                                            Check_lost_Item__c,Pre_disinfection__c,Water_leacage_check__c,
+//                                            Inspection_result_after__c,Arrival_in_wh__c,
+//                                            Lost_item_check_staff__c,CDS_staff__c,Inspection_staff_After__c,
+//                                            Return_wh_chenk_staff__c,Pre_inspection_time__c,Lost_item_check_time__c,
+//                                            After_Inspection_time__c,Arrival_wh_time__c,
+//                                            Inspection_result__c,Inspection_staff__c,Last_Reserve_RAES_Detail__c,
+//                                            Equipment_Set__r.Already_Stock_Out__c
+////bp2            , CDS_complete__c, CDS_complete_time__c
+//                                            from Equipment_Set_Detail__c
+//                                            where Equipment_Set__c in :equipmentSetIdList and Select_rental__c = true];
+        
+//        for (Equipment_Set_Detail__c equipmentSetDetail : equipmentSetDetails) {
+//            // 宸插仛鍑哄簱鎸囩ずflag鈬掑墠鍥炪伄鐢宠珛銇伨銇犵祩銈忋仯銇︺仾銇勨噿鍑哄簱銇椼仾銇�
+//            if (equipmentSetDetail.Equipment_Set__r.Already_Stock_Out__c == false) {
+//                //鎻掑叆澶囧搧鐢宠鍊熷嚭鏄庣粏鍘嗗彶
+//                Rental_Apply_Equipment_Set_Detail__c rentalApplyEquipmentSetDetail = new Rental_Apply_Equipment_Set_Detail__c();
+//                rentalApplyEquipmentSetDetail.Rental_Apply__c = rentalApply.Id;//澶囧搧鍊熷嚭鐢宠
+//                rentalApplyEquipmentSetDetail.Rental_Apply_Equipment_Set__c = idmap.get(equipmentSetDetail.Equipment_Set__c);//澶囧搧Set鍊熷嚭鍘嗗彶
+//                rentalApplyEquipmentSetDetail.Equipment_Set__c = equipmentSetDetail.Equipment_Set__c;//澶囧搧Set
+//                rentalApplyEquipmentSetDetail.Asset__c = equipmentSetDetail.Asset__c;//淇濇湁璁惧
+//                //鎻掑叆澶囧搧鐢宠鍊熷嚭鏄庣粏鍘嗗彶
+//                rentalApplyEquipmentSetDetailList.add(rentalApplyEquipmentSetDetail);
+                
+//                //鏇存柊澶囧搧Set鏄庣粏
+//                equipmentSetDetail.Check_lost_Item__c = null;//娆犲搧纭缁撴灉
+//                equipmentSetDetail.Lost_item_giveup__c = false;
+//                equipmentSetDetail.Pre_disinfection__c = null;//娓呮礂鍓�
+//                equipmentSetDetail.Water_leacage_check__c = null;//娴嬫紡妫�鏌ョ粨鏋�
+//                equipmentSetDetail.Inspection_result_after__c = null;//鍥炴敹鍚�-妫�娴嬬粨鏋�
+//                equipmentSetDetail.Arrival_in_wh__c = false;//鍥炲簱纭
+//                equipmentSetDetail.Lost_item_check_staff__c = null;//娆犲搧纭鑰�
+//                equipmentSetDetail.CDS_staff__c = null;//娑堟瘨浜哄憳
+//                equipmentSetDetail.Inspection_staff_After__c = null;//鍥炴敹鍚�-妫�娴嬩汉鍛�
+//                equipmentSetDetail.Return_wh_chenk_staff__c = null;//鍥炲簱纭鑰�
+//                equipmentSetDetail.Inspection_result__c = null;//鍙戣揣鍓�-妫�娴嬬粨鏋�
+//                equipmentSetDetail.Inspection_staff__c = null;//鍙戣揣鍓�-妫�娴嬩汉鍛�
+                
+//                equipmentSetDetail.Pre_inspection_time__c = null;//澶囧搧Set鐢�,鍙戣揣鍓�-妫�娴嬪悎鏍兼椂闂�
+//                equipmentSetDetail.Lost_item_check_time__c = null;//澶囧搧Set鐢�,娆犲搧纭鏃堕棿
+////bp2                equipmentSetDetail.CDS_complete_time__c = null;//澶囧搧Set鐢�,CDS瀹屾瘯鏃堕棿
+//                equipmentSetDetail.After_Inspection_time__c = null;//澶囧搧Set鐢�,鍥炴敹鍚�-妫�娴嬪畬姣曟椂闂�
+//                equipmentSetDetail.Arrival_wh_time__c = null;//澶囧搧Set鐢�,鍥炲簱纭瀹屾瘯鏃堕棿
+
+//                equipmentSetDetail.Inspection_result_after_ng__c = null;//鍥炴敹鍚�-妫�娴婲G鍖哄垎
+//                equipmentSetDetail.Inspection_result_ng__c = null;//鍙戣揣鍓�-妫�娴婲G鍖哄垎
+////bp2                equipmentSetDetail.CDS_complete__c = false;//CDS瀹屾瘯
+
+//                //鏇存柊澶囧搧Set鏄庣粏
+//                equipmentSetDetailList.add(equipmentSetDetail);
+//                //鍊熷嚭璁惧鏈鸿韩鍙风爜
+//                if (String.isNotBlank(equipmentSetDetail.Asset__r.SerialNumber)) {
+//                    if (assetSerialNumberMap.containsKey(equipmentSetDetail.Equipment_Set__c) == false) {
+//                        assetSerialNumberMap.put(equipmentSetDetail.Equipment_Set__c, ',' + equipmentSetDetail.Asset__r.SerialNumber + ',');
+//                    } else {
+//                        String tmp = assetSerialNumberMap.get(equipmentSetDetail.Equipment_Set__c);
+//                        tmp += equipmentSetDetail.Asset__r.SerialNumber + ',';
+//                        assetSerialNumberMap.put(equipmentSetDetail.Equipment_Set__c, tmp);
+//                    }
+//                }
+//            }
+//        }
+
+//        // TODO liang 锛戙仱sql銇伨銇ㄣ倎銇︺亸銇犮仌銇�
+//        Equipment_Set_Detail__c[] equipmentSetDetails2 = [select Id, Last_Reserve_RAES_Detail__c
+////bp2                ,CDS_complete__c
+//                                            from Equipment_Set_Detail__c
+//                                            where Equipment_Set__c in :equipmentSetIdList and Select_rental__c = false];
+//        for (Equipment_Set_Detail__c equipmentSetDetail : equipmentSetDetails2) {
+//            equipmentSetDetail.Pre_Reserve_RAES_Detail__c = equipmentSetDetail.Last_Reserve_RAES_Detail__c;
+//            equipmentSetDetail.Last_Reserve_RAES_Detail__c = null;
+////bp2            equipmentSetDetail.CDS_complete__c = false;//CDS瀹屾瘯
+//            equipmentSetDetailList2.add(equipmentSetDetail);
+//        }
+        
+//        //鏇存柊鍊熷嚭璁惧鏈鸿韩鍙风爜
+//        List<Rental_Apply_Equipment_Set__c> rentalApplyEquipmentSetUpdateList = new List<Rental_Apply_Equipment_Set__c>();
+//        for (Rental_Apply_Equipment_Set__c rentalApplyEquipmentSet : rentalApplyEquipmentSets) {
+//            if (assetSerialNumberMap.containsKey(rentalApplyEquipmentSet.Equipment_Set__c)) {
+//                rentalApplyEquipmentSet.Rental_Asset_SerialNumber__c = assetSerialNumberMap.get(rentalApplyEquipmentSet.Equipment_Set__c);
+//              // xiongyl-start
+//            }           
+//             rentalApplyEquipmentSet.Loaner_name_text__c =rentalApplyEquipmentSet.Equipment_Set__r.Loaner_name__c; //澶囧搧鍚嶇О
+//             rentalApplyEquipmentSet.Loaner_code_text__c = rentalApplyEquipmentSet.Equipment_Set__r.Loaner_code__c; //鍌欏搧鍨嬬暘
+//             rentalApplyEquipmentSet.Salesdepartment_text__c = rentalApplyEquipmentSet.Equipment_Set__r.Salesdepartment__c; // 鎵�鍦ㄥ湴鍖�(鏈儴)                
+//             rentalApplyEquipmentSet.Salesprovince_text__c = rentalApplyEquipmentSet.Equipment_Set__r.SalesProvince__c; //鎵�鍦ㄥ湴鍖�(鐪�)
+//             rentalApplyEquipmentSet.Equipment_Type_text__c = rentalApplyEquipmentSet.Equipment_Set__r.Equipment_Type__c; //鍒嗙被 
+//             rentalApplyEquipmentSet.Equipment_Set_Borrowed__c = rentalApplyEquipmentSet.Equipment_Set__r.Name;//澶囧搧set
+//             rentalApplyEquipmentSet.Product_Class_Bor__c = rentalApplyEquipmentSet.Equipment_Set__r.Product_category__c;
+//             rentalApplyEquipmentSet.SerialNumber_text__c = rentalApplyEquipmentSet.Equipment_Set__r.SerialNumber__c;
+//             rentalApplyEquipmentSetUpdateList.add(rentalApplyEquipmentSet);
+//             // xiongyl-end
+//        }
+
+//        Savepoint sp = Database.setSavepoint();
+//        try {
+//            if (equipmentSetUpdateList.size() > 0) {
+//                update equipmentSetUpdateList;
+//            }
+//            if (rentalApplyEquipmentSetDetailList.size() > 0) {
+//                insert rentalApplyEquipmentSetDetailList;
+//            }
+//            if (equipmentSetDetailList.size() > 0) {
+//                for (Integer i=0; i<equipmentSetDetailList.size(); i++) {
+//                    equipmentSetDetailList[i].Pre_Reserve_RAES_Detail__c = equipmentSetDetailList[i].Last_Reserve_RAES_Detail__c;
+//                    equipmentSetDetailList[i].Last_Reserve_RAES_Detail__c = rentalApplyEquipmentSetDetailList[i].Id;
+//                }
+//                update equipmentSetDetailList;
+//            }
+//            if (equipmentSetDetailList2.size() > 0) {
+//                update equipmentSetDetailList2;
+//            }
+//            if (rentalApplyEquipmentSetUpdateList.size() > 0) {
+//                update rentalApplyEquipmentSetUpdateList;
+//            }
+//            eSetRefreshStatus(equipmentSetIdList);
+//        } catch (System.Exception e) {
+//            Database.rollback(sp);
+//            return e.getMessage();
+//        }
+//        //杩斿洖缁撴灉
+//        return checkRS;
+//    }
+    
+    // 澶囧搧鍊熷嚭鏃堕棿check
+    @AuraEnabled
+    WebService static String approvalCheck(String rentalApplyId) {
+        // check缁撴灉
+        String returnStr = '';
+        
+        //1388 yc 20211021 璺ㄥ尯鍩熷垎閰嶄笉鑳藉嚭搴�  start
+        String rasdid = '';
+        system.debug(rentalApplyId+'==');
+        if(String.isNotBlank(rentalApplyId) && rentalApplyId.indexOf(';') >= 0){//璇存槑鏄粠涓�瑙堜笂瑙﹀彂鐨�
+           rasdid = rentalApplyId.subString(rentalApplyId.indexOf(';') + 1);
+           rentalApplyId = rentalApplyId.subString(0, rentalApplyId.indexOf(';'));
+        }
+        //1388 yc 20211021 璺ㄥ尯鍩熷垎閰嶄笉鑳藉嚭搴�  end
+        //澶囧搧鍊熷嚭鐢宠
+        Rental_Apply__c[] rentalApply = [select Id,repair__r.Repair_Final_Inspection_Date__c,Bollow_Date__c,repair__r.Return_Without_Repair_Date__c,
+                                        CreatedDate,Rental_Apply_Equipment_Set_Cnt__c,Prepare_Day__c,Cross_Region_Assign__c,
+                                        demo_purpose2__c,Follow_UP_Opp__r.Shipping_Finished_Day_Func__c,next_action__c,QIS_number__r.ReplaceDeliveryDate__c
+                                        from Rental_Apply__c 
+                                        where Id = :rentalApplyId];
+        if (rentalApply.size() == 0) {
+            returnStr = '娌℃湁澶囧搧鍊熷嚭鐢宠锛岃纭銆�';
+            return returnStr;
+        }
+        Rental_Apply__c ra = rentalApply[0];
+        if (ra.Rental_Apply_Equipment_Set_Cnt__c <= 0) {
+            returnStr = '娌℃湁鍊熷嚭澶囧搧set涓�瑙堬紝璇风‘璁ゃ��';
+            return returnStr;
+        }
+        //1822 yc 20211111 start
+        if(ra.demo_purpose2__c=='宸茶喘寰呰揣' && ra.Follow_UP_Opp__r.Shipping_Finished_Day_Func__c!= null){
+            returnStr = '宸茶喘寰呰揣鐩殑锛屾柊鍝佸凡鏈夊彂璐ф棩锛屼笉鍙嚭搴撴寚绀�';
+            return returnStr;
+        }
+        if(ra.demo_purpose2__c=='绱㈣禂QIS' && ra.next_action__c=='鏃犲伩鏇存崲' && ra.QIS_number__r.ReplaceDeliveryDate__c!= null){
+            returnStr = '绱㈣禂QIS鐩殑锛孮IS宸叉湁鏂板搧鍙戣揣鏃ワ紝涓嶅彲鍑哄簱鎸囩ず';
+            return returnStr;
+       }
+        //1822 yc 20211111 end
+
+//*************************Insert 20160826 SWAG-AD59Z6 瓒欏境鑺� Start*************************//
+        if(Ra.repair__r.Repair_Final_Inspection_Date__c != null) {
+            return '淇悊鏈�缁堟娴嬫棩涓嶄负绌猴紝涓嶈兘鍋氬嚭搴撴寚绀�';
+        }
+        if(Ra.repair__c!=null&&Ra.repair__r.Return_Without_Repair_Date__c != null) {
+            return '鏈慨鐞嗗綊杩樻棩涓嶄负绌猴紝涓嶈兘鍋氬嚭搴撴寚绀�';
+        }
+//*************************Insert 20160826 SWAG-AD59Z6 瓒欏境鑺� End***************************//
+
+        //1388 yc 20211021 璺ㄥ尯鍩熷垎閰嶄笉鑳藉嚭搴� start
+        if(String.isNotBlank(ra.Cross_Region_Assign__c)){
+            String soql = 'select Id, Name,Rental_Apply__c,Internal_asset_location_before__c';
+                   soql +=' from Rental_Apply_Equipment_Set_Detail__c';
+                   soql +=' where Rental_Apply__c = \'' + ra.Id +'\'';
+                   soql +=' and Internal_asset_location_before__c !=null and Internal_asset_location_before__c != \'' + ra.Cross_Region_Assign__c+ '\'';
+            
+            if(String.isNotBlank(rasdid)){
+                   soql +=' and Rental_Apply_Equipment_Set__c = :rasdid';            
+              }
+            List<Rental_Apply_Equipment_Set_Detail__c> raesd = Database.query(soql);
+            if(raesd.size()>0){
+                returnStr = '鍒嗛厤鐨勫鍝佷笉鏄偍鎵�灞炲鍝佷腑蹇冪殑澶囧搧锛屼笉鑳藉仛鍑哄簱鎸囩ず'; 
+                return returnStr;
+            }
+            
+        }
+        //1388 yc 20211021 璺ㄥ尯鍩熷垎閰嶄笉鑳藉嚭搴� end
+        // 20220211 ljh add 澶囧搧FY23璇鹃01 start
+        // AggregateResult[] resultsRas = [SELECT Rental_Start_Date__c,count(Id) cnt
+        //                              FROM Rental_Apply_Equipment_Set__c
+        //                              WHERE Rental_Apply__c = :rentalApplyId 
+        //                              AND Cancel_Select__c = false
+        //                              group by Rental_Start_Date__c];
+        // If(resultsRas.size() > 1){
+        //  returnStr = '鎵�鏈変竴瑙堝鍝侀璁″嚭璐ф棩搴斾竴鑷达紝涓嶄竴鑷翠笉鑳藉仛鍑哄簱鎸囩ず'; 
+        //     return returnStr;
+        // }
+        // 20220211 ljh add 澶囧搧FY23璇鹃01 end
+
+//bp2        // 澶囧搧鍊熷嚭鍘嗗彶鍙栧緱
+//        List<String> equipmentSetList = new List<String>();
+//        Rental_Apply_Equipment_Set__c[] raes = [
+//            select Id, Name, Equipment_Set__c, Equipment_Set__r.Name, Rental_Start_Date__c, Rental_End_Date__c, Rental_Apply__c 
+//              from Rental_Apply_Equipment_Set__c 
+//             where Rental_Apply__c = :rentalApplyId and Cancel_Select__c = false];
+//        // 鏃ュ巻鑼冨洿锛屾渶灏忕殑鍊熷嚭寮�濮嬫棩鍒版渶澶х殑鍊熷嚭缁堜簡鏃�
+//        Date startDate = Date.today();
+//        Date endDate = Date.today();
+//        for (Rental_Apply_Equipment_Set__c r : raes) {
+//            equipmentSetList.add(r.Equipment_Set__c);
+//            if (r.Rental_Start_Date__c != null && r.Rental_Start_Date__c < startDate) {
+//                startDate = r.Rental_Start_Date__c;
+//            }
+//            if (r.Rental_End_Date__c != null && r.Rental_End_Date__c > endDate) {
+//                endDate = r.Rental_End_Date__c;
+//            }
+//        }
+//        Integer prepareDay = ra.Prepare_Day__c == null ? Integer.valueOf(System.Label.EquipmentRentalPrepare) : ra.Prepare_Day__c.intValue();
+//        Date minDate = getWD_addday(startDate, -1 * prepareDay);
+//        Date maxDate = getWD_addday(endDate, prepareDay);
+//        // 鍏朵粬澶囧搧鍊熷嚭鐢宠鍘嗗彶
+//        Rental_Apply_Equipment_Set__c[] others = [
+//                    select Id, Name, Rental_Start_Date__c, Rental_End_Date__c, Equipment_Set__c, Rental_Apply__r.Status__c ,Rental_Apply__r.Prepare_Day__c 
+//                      from Rental_Apply_Equipment_Set__c
+//                     where Rental_Apply__c != :rentalApplyId
+//                       and Equipment_Set__c in :equipmentSetList
+//                       and Request_Status__c != '鍙栨秷'
+//                       and Request_Status__c != '鍒犻櫎'
+//                       and Cancel_Select__c = false
+//                       and ((Rental_Start_Date__c >= :minDate and Rental_Start_Date__c <= :maxDate)
+//                            or (Rental_End_Date__c >= :minDate and Rental_End_Date__c <= :maxDate)
+//                            or (Rental_Start_Date__c <= :startDate and Rental_End_Date__c >= :endDate))];
+        
+//        Map<String, List<Rental_Apply_Equipment_Set__c>> othersMap = new Map<String,List<Rental_Apply_Equipment_Set__c>>();
+//        for (Rental_Apply_Equipment_Set__c other : others) {
+//            if (othersMap.containsKey(other.Equipment_Set__c)) {
+//                othersMap.get(other.Equipment_Set__c).add(other);
+//            } else {
+//                List<Rental_Apply_Equipment_Set__c> l = new List<Rental_Apply_Equipment_Set__c>();
+//                l.add(other);
+//                othersMap.put(other.Equipment_Set__c, l);
+//            }
+//        }
+        
+//        for (Rental_Apply_Equipment_Set__c r : raes) {
+            
+//            List<Rental_Apply_Equipment_Set__c> other = othersMap.get(r.Equipment_Set__c);
+            
+//            Map<Date, Map<String, String>> dateMap= new Map<Date, Map<String, String>>();
+//            if (other != null) {
+//                Date sdate = startDate;
+//                Date edate = endDate;
+//                for (Rental_Apply_Equipment_Set__c o : other) {
+//                    if (o.Rental_Start_Date__c != null && (sdate == null || o.Rental_Start_Date__c < sdate)) {
+//                        sdate = o.Rental_Start_Date__c;
+//                    }
+//                    if (o.Rental_End_Date__c != null && (edate == null || o.Rental_End_Date__c > edate)) {
+//                        edate = o.Rental_End_Date__c;
+//                    }
+//                }
+//                if (sdate != null && edate != null) {
+//                    RentalApplyWebService raws = new RentalApplyWebService();
+//                    dateMap = raws.getDateMap(sdate, edate, prepareDay);
+//                }
+//            }
+            
+//            if (r.Rental_Start_Date__c == null && r.Rental_End_Date__c == null) {
+//                // 娓呯┖璇ュ�熷嚭鍘嗗彶鐨勫嚭搴撳拰鍥炴敹鏃堕棿
+//            } else if (other == null || other.size() == 0) {
+//                // 涓庡叾浠栧�熷嚭鍘嗗彶娌℃湁鍐茬獊
+//            } else {
+//                Date fromDate = r.Rental_Start_Date__c;
+//                Date toDate = r.Rental_End_Date__c;
+//                for (Rental_Apply_Equipment_Set__c o : other) {
+//                    if (o.Rental_Apply__r.Status__c != '鑽夋涓�' && o.Rental_Apply__r.Status__c != '鐢宠涓�' && o.Rental_Apply__r.Status__c != null) {
+//                        Date startD = o.Rental_Start_Date__c;
+//                        Date endD = o.Rental_End_Date__c;
+//                        Integer prepare = prepareDay; //>= o.Rental_Apply__r.Prepare_Day__c || o.Rental_Apply__r.Prepare_Day__c == null ? prepareDay : o.Rental_Apply__r.Prepare_Day__c.intValue();
+//                        if ((dateMap.containsKey(fromDate) && Date.valueOf(dateMap.get(fromDate).get('Next')) > startD && dateMap.containsKey(endD) && fromDate < Date.valueOf(dateMap.get(endD).get('Next'))) ||
+//                            (dateMap.containsKey(toDate) && Date.valueOf(dateMap.get(toDate).get('Next')) > startD && dateMap.containsKey(endD) && toDate < Date.valueOf(dateMap.get(endD).get('Next'))) ||
+//                            (dateMap.containsKey(fromDate) && Date.valueOf(dateMap.get(fromDate).get('Next')) <= startD && dateMap.containsKey(endD) && toDate >= Date.valueOf(dateMap.get(endD).get('Next')))) {
+//                            returnStr = '澶囧搧' + r.Equipment_Set__r.Name + '鐨勫�熷嚭鏃ヤ笌澶囧搧鍊熷嚭鍘嗗彶' + o.Name + '鏈夊啿绐侊紝璇风‘璁ゃ��';
+//                            return returnStr;
+//                        }
+//                    }
+//                }
+//            }
+//        }
+        return '1';
+    }
+
+    // 寤舵湡瀹℃壒Check
+    @AuraEnabled
+    WebService static String extension_approval_processCheck(String rentalApplyId) {
+        try {
+            List<Rental_Apply__c> raList = [SELECT Id,Name
+                       , Demo_purpose1__c
+                       , Demo_purpose2__c
+                       , Loaner_received_ng_num__c
+                       , ExtensionApprovalTime_Initial__c
+                       , ExtensionApplicationTime_Final__c
+                       , ExtensionApprovalTime_Final__c
+                       , NewRepair__c
+                       , NewRepair__r.Agreed_Date__c
+                       , NewRepair__r.Status__c
+                       , NewRepair__r.ReRepairObject_F__c
+                       , NewRepair__r.Repair_Shipped_Date__c
+                       , AgreementBorrowingExtensionDate__c
+                       , next_action__c
+                       , RC_Ordered_Date__c
+                       , Bollow_Date_Add_10_WD__c
+                       , Root_Rental_Apply__c
+                       , Assign_Person__c
+                       , Return_dadeline_final__c
+                       , RA_Status__c
+                       , ExtensionApplicationTime_Initial__c
+                       , RecordType.DeveloperName
+                       , RecordType.id
+                       , ExtensionStatus__c
+                    FROM Rental_Apply__c
+                    WHERE Id = :rentalApplyId];
+            if (raList.size() == 0) {
+                return '娌℃湁澶囧搧鍊熷嚭鐢宠锛岃纭銆�';
+            }
+            //add       wangweipeng            2021/11/26                   start
+            /*List<Rental_Apply_Equipment_Set__c> raesList = RentalApplyTriggerHandler.getCan_Extend_RequestList(raList[0],'1');
+            return '1';*/
+            String ErrorMessageStr = unifyGetRentalApply(raList[0]);
+            //add       wangweipeng            2021/11/26                   end
+            return ErrorMessageStr;
+        }
+        catch(Exception e) {
+            return e.getMessage();
+        }
+        
+    }
+
+    //add       wangweipeng            2021/11/26                   start
+    /**
+     * @param  rentalApplyId 澶囧搧id
+     * @return               澶囧搧閰嶅鏁版嵁
+     *
+     * 寤舵湡鏁翠綋閫昏緫锛�
+     *     1锛氳瘯鐢ㄧ洰鐨�2涓嶄负锛氭湁璇环鍜屾棤璇环锛屽仛鐗规畩澶勭悊
+     *     2锛氬叾浠栨儏鍐碉細閫昏緫涓嶅彉
+     *   涓婇潰绗竴涓潯浠舵弧瓒筹細
+     *       1锛氫粠鍘熷崟鐐瑰嚮寤舵湡鐢宠鎸夐挳锛屾病鏈夊垎鍓插崟
+     *       2锛氫粠鍘熷崟鐐瑰嚮寤舵湡鐢宠鎸夐挳锛屾湁鍒嗗壊鍗�
+     *       3锛氫粠鍗曠偣鍑诲欢鏈熺敵璇锋寜閽�
+     *
+     *      绗竴绉嶆儏鍐碉細鎸夌収鍘熸潵鐨勯�昏緫璧帮紝涓嶉渶瑕佸仛鐗规畩澶勭悊
+     *      绗簩绉嶆儏鍐碉細
+     *          锛�1锛夛細璁板綍绫诲瀷涓猴細澶囧搧涓績锛屽垽鏂垎閰嶄汉鏄惁涓虹┖锛屽姙浜嬪鍒嗛厤浜轰笉鍙兘涓虹┖
+     *          锛�2锛夛細鑾峰彇鍘熷崟鍜屽師鍗曚笅鎵�鏈夌殑鍒嗗崟锛屽洜涓烘壒閲忓欢鏈熶笉鍏夋煡鐪嬭嚜宸辩敵璇峰崟鎯呭喌锛屽鏋滄槸涓诲崟杩涙潵鐨勶紝杩橀渶瑕佹煡鐪嬪綋鍓嶅崟瀛愶紝鍜屼粬涓嬮潰鐨勬墍鏈変粠鍗�
+     *          锛�2锛夛細璧颁竴涓柟娉曪紝杩欐槸涓�涓欢鏈熼�氱敤鐨勬柟娉曪紝鐢ㄤ簬鍒ゆ柇姝ゆ寤舵湡鐨勭敵璇峰崟鏄惁鏈夊彲浠ュ欢鏈熺殑涓�瑙堬紝浼氬湪涓嬮潰鍏蜂綋浠嬬粛
+     *          锛�3锛夛細璧颁笂闈㈤�氱敤鐨勬柟娉曪紝娌℃湁鑾峰彇鍒板彲浠ュ欢鏈熺殑涓�瑙堬紝閭d箞鍋氭彁绀猴紝涓嶈兘寤舵湡
+     *          锛�4锛夛細璺宠浆椤甸潰涓猴細姝ゆ涓烘壒閲忓欢鏈熻嚜瀹氫箟寮�鍙戠殑椤甸潰
+     *      绗笁绉嶆儏鍐碉細
+     *          锛�1锛夛細濡傛灉鏄粠鍗曞欢鏈燂紝閭d箞闇�瑕佹煡鐪嬫鍗曪紝姝ゅ崟鐨勫師鍗曪紝姝ゅ崟鍘熷崟涓嬫墍鏈夌殑浠庡崟鏄惁婊¤冻寤舵湡鏉′欢
+     *          锛�2锛夛細浠ヤ笂鐨勫崟瀛愬繀椤绘弧瓒筹細宸插嚭搴撶殑--宸插洖鏀讹紙涓嶅惈锛変箣闂寸姸鎬侊紝涓旀渶鏂伴瀹氬綊杩樻棩鈮� 浠婂ぉ銆�
+     *          锛�3锛夛細璧颁竴涓柟娉曪紝杩欐槸涓�涓欢鏈熼�氱敤鐨勬柟娉曪紝鐢ㄤ簬鍒ゆ柇姝ゆ寤舵湡鐨勭敵璇峰崟鏄惁鏈夊彲浠ュ欢鏈熺殑涓�瑙堬紝浼氬湪涓嬮潰鍏蜂綋浠嬬粛
+     *          锛�4锛夛細鐢变簬閫氱敤鐨勬柟娉曚細杩斿洖鎵�鏈夌敵璇峰崟鍙欢鏈熺殑涓�瑙堬紝鎵�浠ラ渶瑕佸垽鏂鍗曟槸鍚︽湁鍙互寤舵湡鐨勪竴瑙�
+     *          锛�5锛夛細鐢变簬閫氱敤鐨勬柟娉曚細璺宠繃 ok骞朵笖鍥炲瘎鏃堕棿涓嶄负绌虹殑涓�瑙堬紝鎵�浠ユ鏃跺垽鏂繖涓潯浠讹紝婊¤冻灏变笉鑳藉欢鏈�
+     *          锛�6锛夛細璺宠浆椤甸潰涓哄師鏉ュ欢鏈熷紑鍙戠殑鑷畾涔夐〉闈�
+     *
+     *     閫氱敤鏄惁鍙互寤舵湡鐨勬柟娉曪細锛堣瘯鐢紙鏈夎浠凤級銆佽瘯鐢紙鏃犺浠凤級锛�
+     *         锛�1锛夛細姝ゆ柟娉曞弬鏁颁负list锛屽鏋滆秴杩�1鏉℃暟鎹紝榛樿涓鸿蛋鎵归噺寤舵湡鐨勬潯浠�
+     *         锛�2锛夛細鐢宠鍗曪細濡傛灉size澶т簬1锛岃烦杩囦竴浜涢獙璇侊細鏈畬鎴愬埌璐х‘璁や笉楠岃瘉鍜屽欢鏈熸壒鍑嗘椂闂�(鏈�鍒�)涓嶈兘寤舵湡
+     *         锛�3锛夛細涓�瑙堬細濡傛灉size澶т簬1锛宱k骞朵笖鍥炲瘎鏃堕棿涓嶄负绌虹殑涓�瑙堜笉楠岃瘉
+     *          
+     */
+    public static String unifyGetRentalApply(Rental_Apply__c rentalApply){
+        Rental_Apply__c rac = rentalApply;
+        //濡傛灉鐢宠鍗曠殑 浣跨敤鐩�2涓� 鏈夎浠锋垨鏃犺浠风殑,閭d箞闇�瑕佺壒娈婂鐞嗕竴涓�
+        if(rac.Demo_purpose1__c == '浜у搧璇曠敤' && (rac.demo_purpose2__c == '璇曠敤锛堟棤璇环锛�' || rac.demo_purpose2__c == '璇曠敤锛堟湁璇环锛�')){
+            if(rac.ExtensionStatus__c == '宸叉壒鍑�'){
+                return '浜у搧璇曠敤鐨勭敵璇蜂笉鑳芥彁浜ょ浜屾寤舵湡鐢宠銆�';
+            }else{
+                return muchRentalApply(rac);
+            }
+        }else{
+            //鍔炰簨澶勭洰鍓嶅彧鑳藉欢鏈熸湁璇环鎴栨棤璇环
+            if(rac.RecordType.DeveloperName == 'AgencyRequest'){
+                return '鍔炰簨澶勭敵璇峰崟锛岄潪璇曠敤锛堟棤璇环锛夈�� 璇曠敤锛堟湁璇环锛変笉鍙欢鏈熴��';
+            }else{
+                List<Rental_Apply_Equipment_Set__c> raesList = RentalApplyTriggerHandler.getCan_Extend_RequestList(new List<Rental_Apply__c>{rac});
+                return '1';
+            }
+        }
+    }
+
+    /**
+     * 
+     * @param  rac [寤舵湡鍏ュ彛]
+     * @return     [description]
+     *      
+     * 閫昏緫瑙i噴锛�
+     *     鍘熷崟锛堟病鏈変粠鍗曪級锛氳蛋鍘熸潵鐨勯�昏緫
+     *     浠庡崟锛氬垽鏂浠庡崟鐨勫師鍗曘�佸師鍗曚笅鎵�鏈夌殑浠庡崟鏄惁婊¤冻绗竴鏉★紝骞朵笖褰撳墠浠庡崟蹇呴』鏈変竴鏉℃弧瓒崇浜屾潯鎵嶈兘寤舵湡
+     *     鍘熷崟锛堟湁浠庡崟锛夛細鍒ゆ柇姝ょ敵璇峰崟鍜屽師鍗曚笅鎵�鏈夌殑浠庡崟鏄惁婊¤冻绗竴鏉★紝骞朵笖杩欎簺鐢宠鍗曟渶灏戞湁涓�涓敵璇峰崟婊¤冻绗簩涓潯浠讹紝鎵嶈兘寤舵湡
+     */
+    public static String muchRentalApply(Rental_Apply__c rac){
+        //鑾峰彇鎵�鏈夌殑鐢宠鍗�
+        List<Rental_Apply__c> rentalApplyData =  getAllRentalApply(rac);
+        if(rentalApplyData != null && rentalApplyData.size() > 0){
+            //濡傛灉鍙煡鍒颁竴鏉℃暟鎹紝閭d箞璇佹槑浠栨槸鍘熷崟锛屽苟涓旀病鏈夊垎鍓插崟锛岄偅涔堝氨璧板師鏉ュ欢鏈熺殑閫昏緫
+            if(rentalApplyData.size() == 1){
+                List<Rental_Apply_Equipment_Set__c> raesList = RentalApplyTriggerHandler.getCan_Extend_RequestList(rentalApplyData);
+                return '1';
+            }else{
+                //濡傛灉涓哄鏉★紝璇佹槑浠栨湁浠庡崟鎴栧綋鍓嶈寤舵湡鐨勫崟瀛愭槸浠庡崟锛岄偅涔堝氨闇�瑕佸仛鐗规畩澶勭悊
+                List<Rental_Apply__c> racList = new List<Rental_Apply__c>();
+                //鍒ゆ柇浠栨槸鍘熷崟杩樻槸浠庡崟
+                System.debug('--345----------'+rac.Root_Rental_Apply__c);
+                if(String.isNotBlank(rac.Root_Rental_Apply__c)){
+                    //鍙欢鏈熺殑鐢宠鍗曞簲婊¤冻锛氬凡鍑哄簱鐨�--宸插洖鏀讹紙涓嶅惈锛変箣闂寸姸鎬侊紝涓旀渶鏂伴瀹氬綊杩樻棩鈮� 浠婂ぉ銆�
+                    //褰撳墠鏃ユ湡
+                    Date today = Date.today();
+                    //棰勫畾褰掕繕鏃ヤ笉鑳戒负绌�
+                    if(rac.Return_dadeline_final__c != null){
+                        //鏈�鏂伴瀹氬綊杩樻棩鈮� 浠婂ぉ銆�
+                        if(rac.Return_dadeline_final__c >= today){
+                            //鍙欢鏈熺殑鐢宠鍗曞簲婊¤冻锛氬凡鍑哄簱鐨�--宸插洖鏀讹紙涓嶅惈锛変箣闂寸姸鎬�
+                            if(rac.RA_Status__c == '鐢宠鑰呭凡鏀惰揣' || rac.RA_Status__c == '鍖婚櫌宸茶鏈虹‘璁�' || rac.RA_Status__c == '宸插嚭搴�')
+                            {
+                                //鑳借蛋鍒拌繖閲岋紝璇佹槑寤舵湡鍏ュ彛鐨勭敵璇峰崟涓嶆槸宸茬粡寤惰繃鐨勶紝鎵�鏈夌幇鍦ㄥ垽鏂叾浠栫殑鐢宠鍗曟槸鍚﹀凡缁忓欢鏈燂紝濡傛灉寤惰繃锛岄偅涔堜笉闇�瑕侀獙璇�
+                                //if(rac.ExtensionApplicationTime_Initial__c == null){
+                                    racList = rentalApplyData;
+                                //}
+                            }else{
+                                if(rac.RA_Status__c != '鍙栨秷' && rac.RA_Status__c != '鍒犻櫎'){
+                                    return '鐢宠鍗曪細'+rac.Name+'鐨勭姸鎬佷负銆�'+rac.RA_Status__c+'銆� 涓嶅彲浠ヨ繘琛屽欢鏈熴��';
+                                }
+                            }
+                        }else{
+                            return '鐢宠鍗曪細'+rac.Name+'鐨勬渶鏂伴瀹氬綊杩樻棩灏忎簬褰撳墠鏃堕棿锛屼笉鍙互杩涜寤舵湡銆�';   
+                        }
+                    }else{
+                        return '鐢宠鍗曪細'+rac.Name+' 鐨勯瀹氬綊杩樻棩涓嶈兘涓虹┖銆�';
+                    }
+                }else{
+                    //澶囧搧涓績
+                    if(rac.RecordType.DeveloperName == 'StandardRequest'){
+                        //a. 鍘熷崟涓婂垎閰嶄汉=绌猴紝鐐瑰嚮鍘熷崟涓婄殑銆愬欢鏈熺敵璇枫�戞寜閽椂锛屾彁绀恒�愬師鍗曟湭鍒嗛厤鎴栧凡鍙栨秷锛岃鍦ㄥ垎鍗曚笂鎿嶄綔寤舵湡銆�
+                        //娉細鍘熷崟鏈垎閰嶅凡鍙栨秷鎴栨湭鍒嗛厤鏃讹紝鍘熷崟鍒嗛厤浜轰负绌�
+                        if(String.isBlank(rac.Assign_Person__c)){
+                            return '鍘熷崟鏈垎閰嶆垨宸插彇娑堬紝璇峰湪鍒嗗崟涓婃搷浣滃欢鏈熴��';
+                        }
+                    }
+                    //濡傛灉鏄師鍗曪紝鐩存帴鍒ゆ柇鏄惁婊¤冻绗竴鍜岀浜屾潯锛岀涓夋潯涓嶉渶瑕佺幇鍦ㄥ垽鏂�
+                    racList = rentalApplyData;
+                }
+                if(racList != null && racList.size() > 0){
+                    System.debug('-----------543---'+racList);
+                    //姝ゆ柟娉曚富瑕侀獙璇佺涓�鍜岀浜屼釜鏉′欢
+                    List<Rental_Apply_Equipment_Set__c> raesList = RentalApplyTriggerHandler.getCan_Extend_RequestList(racList);
+                    if(raesList.size() == 0){
+                       return '鏃犱换浣曠敵璇峰崟婊¤冻銆�';
+                    }else{
+                        //濡傛灉浠庡崟涓哄欢鏈熷叆鍙o紝浼氬垽鏂粬鐨勫師鍗曞拰姝ゅ師鍗曚笅鎵�鏈変粠鍗曟弧瓒冲欢鏈熸潯浠�
+                        //濡傛灉婊¤冻鏉′欢锛岄偅涔堝垽鏂綋鍓嶄粠鍗曟槸鍚︽弧瓒冲欢鏈熸潯浠讹紝濡傛灉鏄叾浠栫敵璇峰崟婊¤冻锛岄偅涔堜笉鑳藉欢鏈燂紝
+                        //濡傛灉姝ょ敵璇峰崟鏈変竴涓厤濂楁弧瓒筹紝閭d箞鍙互寤舵湡锛岃蛋鍗曠嫭寤舵湡閫昏緫锛堝師鏉ュ欢鏈熼�昏緫锛�
+                        if(String.isNotBlank(rac.Root_Rental_Apply__c)){
+                            Integer indexI = 0;
+                            String racIds = rac.Id;
+                            racIds = racIds.substring(0,15);
+                            //寰幆鍒ゆ柇姝ゅ崟鏄惁鏈夊彲浠ュ欢鏈熺殑閰嶅鍚楋紵
+                            for(Rental_Apply_Equipment_Set__c raesc : raesList){
+                                String raescId = raesc.Rental_Apply__c;
+                                raescId = raescId.substring(0,15);
+                                if(racIds.equals(raescId)){
+                                    indexI++;
+                                }
+                            }
+                            if(indexI > 0) {
+                                //濡傛灉浠庡崟涓哄欢鏈熷叆鍙o紝浠栦細璧伴�氱敤鐨勬壒閲忓欢鏈熼獙璇侊紝鎵�浠ラ渶瑕侀獙璇佷互涓嬬殑鏉′欢锛屽鏋滄弧瓒冲氨涓嶇劧寤舵湡
+                                //鍒ゆ柇鏄鐢宠鍗曟槸鍚﹀瓨鍦� ok骞朵笖鍥炲瘎鏃堕棿涓嶄负绌虹殑涓�瑙�
+                                List<Rental_Apply_Equipment_Set__c> raescc = getAllRentalApplyEs(rac);
+                                if(raescc != null && raescc.size() > 0){
+                                    for(Rental_Apply_Equipment_Set__c rr : raescc){
+                                        if ((rr.Received_Confirm__c == 'OK' || rr.Received_Confirm__c == '榛樿绛炬敹-OK') && rr.Asset_return_time__c != null) {
+                                            return '姝ゅ崟涓嶆弧瓒冲欢鏈熸潯浠躲��';
+                                        }
+                                    }
+                                    return '1';
+                                }
+                            }else{
+                                return '姝ゅ崟涓嶆弧瓒冲欢鏈熸潯浠躲��';
+                            }
+                        }else{
+                            return '2';
+                        }
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鏍规嵁浼犺繃鏉ョ殑澶囧搧id鑾峰彇鎵�鏈夌殑浠庡崟鍜屽師鍗�
+     * @param  rea 寤舵湡鐨勫叆鍙g敵璇峰崟
+     * @return               杩斿洖鎵�鏈夌殑鍘熷崟鍜屼粠鍗�
+     * 鍙傛暟鏈夊彲鑳芥槸鍘熷崟id鎴栦粠鍗昳d
+     */
+    public static List<Rental_Apply__c> getAllRentalApply(Rental_Apply__c rea){
+        List<Rental_Apply__c> allRentalApply = [SELECT id,
+                                                        Name,
+                                                        RA_Status__c,
+                                                        Request_return_day__c,
+                                                        demo_purpose1__c,demo_purpose2__c,
+                                                        ExtensionApprovalTime_Final__c,
+                                                        RC_Ordered_Date__c,
+                                                        Bollow_Date_Add_10_WD__c,
+                                                        Loaner_received_ng_num__c,
+                                                        ExtensionApprovalTime_Initial__c,
+                                                        next_action__c,
+                                                        NewRepair__c,
+                                                        NewRepair__r.Agreed_Date__c,
+                                                        NewRepair__r.Status__c,
+                                                        NewRepair__r.ReRepairObject_F__c,
+                                                        NewRepair__r.Repair_Shipped_Date__c,
+                                                        AgreementBorrowingExtensionDate__c,
+                                                        Return_dadeline_final__c,
+                                                        ExtensionApplicationTime_Initial__c,
+                                                        Root_Rental_Apply__c,
+                                                        ExtensionStatus__c
+                                                    FROM Rental_Apply__c 
+                                                    WHERE id = :rea.Id 
+                                                        OR id = :rea.Root_Rental_Apply__c 
+                                                        OR (Root_Rental_Apply__c = :rea.Id AND Root_Rental_Apply__c != NULL)
+                                                        OR (Root_Rental_Apply__c = :rea.Root_Rental_Apply__c AND Root_Rental_Apply__c != NULL) 
+                                                        limit 1000];
+        return allRentalApply;
+    }
+
+    /**
+     * [getAllRentalApplyEs 鑾峰彇涓�瑙圿
+     * @param  rea [description]
+     * @return     [description]
+     *
+     * 鍙湁浠庡崟涓哄欢鏈熷叆鍙g殑鏃跺�欙紝鎵嶄細鍘绘煡璇竴瑙�
+     */
+    public static List<Rental_Apply_Equipment_Set__c> getAllRentalApplyEs(Rental_Apply__c rea){
+        List<Rental_Apply_Equipment_Set__c> raes = [SELECT Id,name
+                                                                , Rental_Apply__c
+                                                                , Rental_Apply__r.Repair__r.Agreed_Date__c
+                                                                , Rental_Apply__r.Repair__r.Repair_Estimated_date_formula__c
+                                                                , Rental_Apply__r.NewRepair__c
+                                                                , Rental_Apply__r.NewRepair__r.Agreed_Date__c
+                                                                , Rental_Apply__r.NewRepair__r.Status__c
+                                                                , Rental_Apply__r.NewRepair__r.ReRepairObject_F__c
+                                                                , Rental_Apply__r.NewRepair__r.Repair_Shipped_Date__c
+                                                                , Rental_Apply__r.QISRepair__r.Repair_Shipped_Date__c
+                                                                , Rental_Apply__r.RC_return_to_office__c
+                                                                , Rental_Apply__r.AgreementBorrowingExtensionDate__c
+                                                                , Rental_Apply__r.ExtensionApprovalTime_Initial__c
+                                                                , Rental_Apply__r.ExtensionApplicationTime_Final__c
+                                                                , Rental_Apply__r.RcUnexpectExpiryDelay__c
+                                                                , Final_reply_day__c
+                                                                , Asset_return_time__c
+                                                                , Bollow_Date__c
+                                                                , demo_purpose2__c
+                                                                , demo_purpose1__c
+                                                                , Request_demo_time__c
+                                                                , Loaner_received_time__c
+                                                                , Received_Confirm__c
+                                                                , Loaner_received_day2__c
+                                                                , RcUnexpectExpiryDelay__c
+                                                             FROM Rental_Apply_Equipment_Set__c
+                                                            WHERE Rental_Apply__c = :rea.Id 
+                                                              AND Cancel_Reason__c = null // 鍙栨秷閲嶆柊鍒嗛厤鐨勮瘽闇�瑕佸仛涓篘G閲嶆柊鍒嗛厤鐨勬儏鍐垫墍浠ヤ笉鑳界敤Cancel_Select__c
+                                                             ];
+        return raes;
+    }
+
+    //add       wangweipeng            2021/11/26                   start
+    
+//bp2
+//    // 澶囧搧鍊熷嚭鏃堕棿check
+//    WebService static String approvalCheck2(String raesId) {
+//        // check缁撴灉
+//        String returnStr = '';
+        
+//        // 澶囧搧鍊熷嚭鍘嗗彶鍙栧緱
+//        List<String> equipmentSetList = new List<String>();
+//        Rental_Apply_Equipment_Set__c[] raes = [
+//            select Id, Name, Equipment_Set__c, Equipment_Set__r.Name, Rental_Start_Date__c, Rental_End_Date__c, Rental_Apply__c, Rental_Apply__r.Prepare_Day__c 
+//              from Rental_Apply_Equipment_Set__c 
+//             where Id = :raesId and Cancel_Select__c = false];
+        
+//        Rental_Apply_Equipment_Set__c r = raes[0];
+//        // 鏃ュ巻鑼冨洿锛屾渶灏忕殑鍊熷嚭寮�濮嬫棩鍒版渶澶х殑鍊熷嚭缁堜簡鏃�
+//        Date startDate = r.Rental_Start_Date__c;
+//        Date endDate = r.Rental_End_Date__c;
+//        Integer prepareDay = r.Rental_Apply__r.Prepare_Day__c == null ? Integer.valueOf(System.Label.EquipmentRentalPrepare) : r.Rental_Apply__r.Prepare_Day__c.intValue();
+//        Date minDate = getWD_addday(startDate, -1 * prepareDay);
+//        Date maxDate = getWD_addday(endDate, prepareDay);
+//        // 鍏朵粬澶囧搧鍊熷嚭鐢宠鍘嗗彶
+//        Rental_Apply_Equipment_Set__c[] others = [
+//                    select Id, Name, Rental_Start_Date__c, Rental_End_Date__c, Equipment_Set__c, Rental_Apply__r.Status__c ,Rental_Apply__r.Prepare_Day__c 
+//                      from Rental_Apply_Equipment_Set__c
+//                     where Id != :raesId
+//                       and Equipment_Set__c = :r.Equipment_Set__c
+//                       and Request_Status__c != '鍙栨秷'
+//                       and Request_Status__c != '鍒犻櫎'
+//                       and Cancel_Select__c = false
+//                       and ((Rental_Start_Date__c >= :minDate and Rental_Start_Date__c <= :maxDate)
+//                            or (Rental_End_Date__c >= :minDate and Rental_End_Date__c <= :maxDate)
+//                            or (Rental_Start_Date__c <= :startDate and Rental_End_Date__c >= :endDate))];
+        
+//        Map<String, List<Rental_Apply_Equipment_Set__c>> othersMap = new Map<String,List<Rental_Apply_Equipment_Set__c>>();
+//        for (Rental_Apply_Equipment_Set__c other : others) {
+//            if (othersMap.containsKey(other.Equipment_Set__c)) {
+//                othersMap.get(other.Equipment_Set__c).add(other);
+//            } else {
+//                List<Rental_Apply_Equipment_Set__c> l = new List<Rental_Apply_Equipment_Set__c>();
+//                l.add(other);
+//                othersMap.put(other.Equipment_Set__c, l);
+//            }
+//        }
+        
+//        List<Rental_Apply_Equipment_Set__c> other = othersMap.get(r.Equipment_Set__c);
+        
+//        Map<Date, Map<String, String>> dateMap= new Map<Date, Map<String, String>>();
+//        if (other != null) {
+//            Date sdate = startDate;
+//            Date edate = endDate;
+//            for (Rental_Apply_Equipment_Set__c o : other) {
+//                if (o.Rental_Start_Date__c != null && (sdate == null || o.Rental_Start_Date__c < sdate)) {
+//                    sdate = o.Rental_Start_Date__c;
+//                }
+//                if (o.Rental_End_Date__c != null && (edate == null || o.Rental_End_Date__c > edate)) {
+//                    edate = o.Rental_End_Date__c;
+//                }
+//            }
+//            if (sdate != null && edate != null) {
+//                RentalApplyWebService raws = new RentalApplyWebService();
+//                dateMap = raws.getDateMap(sdate, edate, prepareDay);
+//            }
+//        }
+        
+//        if (r.Rental_Start_Date__c == null && r.Rental_End_Date__c == null) {
+//            // 娓呯┖璇ュ�熷嚭鍘嗗彶鐨勫嚭搴撳拰鍥炴敹鏃堕棿
+//        } else if (other == null || other.size() == 0) {
+//            // 涓庡叾浠栧�熷嚭鍘嗗彶娌℃湁鍐茬獊
+//        } else {
+//            Date fromDate = r.Rental_Start_Date__c;
+//            Date toDate = r.Rental_End_Date__c;
+//            for (Rental_Apply_Equipment_Set__c o : other) {
+//                if (o.Rental_Apply__r.Status__c != '鑽夋涓�' && o.Rental_Apply__r.Status__c != '鐢宠涓�' && o.Rental_Apply__r.Status__c != null) {
+//                    Date startD = o.Rental_Start_Date__c;
+//                    Date endD = o.Rental_End_Date__c;
+//                    Integer prepare = prepareDay; //>= o.Rental_Apply__r.Prepare_Day__c || o.Rental_Apply__r.Prepare_Day__c == null ? prepareDay : o.Rental_Apply__r.Prepare_Day__c.intValue();
+//                    Date minD = startD.addDays(-1 * prepare);
+//                    Date maxD = endD.addDays(prepare);
+//                    if ((dateMap.containsKey(fromDate) && Date.valueOf(dateMap.get(fromDate).get('Next')) > startD && dateMap.containsKey(endD) && fromDate < Date.valueOf(dateMap.get(endD).get('Next'))) ||
+//                        (dateMap.containsKey(toDate) && Date.valueOf(dateMap.get(toDate).get('Next')) > startD && dateMap.containsKey(endD) && toDate < Date.valueOf(dateMap.get(endD).get('Next'))) ||
+//                        (dateMap.containsKey(fromDate) && Date.valueOf(dateMap.get(fromDate).get('Next')) <= startD && dateMap.containsKey(endD) && toDate >= Date.valueOf(dateMap.get(endD).get('Next')))) {
+//                        returnStr = '澶囧搧' + r.Equipment_Set__r.Name + '鐨勫�熷嚭鏃ヤ笌澶囧搧鍊熷嚭鍘嗗彶' + o.Name + '鏈夊啿绐侊紝璇风‘璁ゃ��';
+//                        return returnStr;
+//                    }
+//                }
+//            }
+//        }
+        
+//        return '1';
+//    }
+
+//bp2
+//    WebService static String reserve2(String raesId) {
+//        String checkRS = '1';
+//        Rental_Apply_Equipment_Set__c raes = [
+//                select Id,Name,Rental_Apply__c,Rental_Start_Date__c,ES_Stock_Status__c,
+//                       Equipment_Set__c,
+//                       Equipment_Set__r.Name,
+//                       Equipment_Set__r.Active_judgement2__c,
+//                       Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c,
+//                       Equipment_Set__r.Pre_Reserve_Rental_Apply_Equipment_Set__c
+//                  from Rental_Apply_Equipment_Set__c where Id = :raesId and Cancel_Select__c = false
+//        ];
+//        if (raes.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c == raes.Id) {
+//            checkRS = '璇ュ�熷嚭澶囧搧set涓�瑙堝凡缁忓仛杩囧嚭搴撴寚绀�:' + raes.Name;
+//            return checkRS;
+//        }
+//        if (raes.ES_Stock_Status__c == '涓嶈兘鍑哄簱') {
+//             checkRS = '澶囧搧set ' + raes.Equipment_Set__r.Name + ' 鍦ㄩ绾︽湡闂村涓嶈兘鍑哄簱锛岃纭';
+//             return checkRS;
+//        }
+//        checkRS = RentalApplyWebService.approvalCheck2(raesId);
+//        if (checkRS != '1') {
+//            return checkRS;
+//        }
+//        /*
+//        if (raes.Rental_Start_Date__c <= Date.today()) {
+//            checkRS = '鍊熷嚭寮�濮嬫棩蹇呴』澶т簬浠婃棩銆傚�熷嚭澶囧搧set涓�瑙堬細' + raes.Name;
+//            return checkRS;
+//        }
+//        if (raes.Equipment_Set__r.Active_judgement2__c != okStatus) {
+//            checkRS = '澶囧搧set ' + raes.Equipment_Set__r.Name + ' 鐨�' + Schema.SObjectType.Equipment_Set__c.fields.Asset_Set_status2__c.label + '涓嶆槸 99.绛夊緟棰勭害 锛岀幇鍦ㄦ槸 ' + raes.Equipment_Set__r.Asset_Set_status2__c + ' 璇风‘璁�';
+//            return checkRS;
+//        }
+//        */
+//        //澶囧搧Set鏄庣粏
+//        List<Equipment_Set_Detail__c> equipmentSetDetailList = new List<Equipment_Set_Detail__c>();
+//        List<Equipment_Set_Detail__c> equipmentSetDetailList2 = new List<Equipment_Set_Detail__c>();
+//        //澶囧搧鐢宠鍊熷嚭鏄庣粏鍘嗗彶
+//        List<Rental_Apply_Equipment_Set_Detail__c> rentalApplyEquipmentSetDetailList = new List<Rental_Apply_Equipment_Set_Detail__c>();
+//        //鏇存柊澶囧搧Set
+//        Equipment_Set__c equipmentSet = new Equipment_Set__c(
+//            Id = raes.Equipment_Set__c,
+//            Last_Reserve_Rental_Apply_Equipment_Set__c = raes.Id,
+//            Pre_Reserve_Rental_Apply_Equipment_Set__c = raes.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c == null ? raes.Equipment_Set__r.Pre_Reserve_Rental_Apply_Equipment_Set__c : raes.Equipment_Set__r.Last_Reserve_Rental_Apply_Equipment_Set__c,
+//            StockDown__c = false,
+//            StockDown_time__c = null,
+//            Shipment_request_time__c = System.now(),            //鍑哄簱鎸囩ず鏃堕棿
+//            Shippment_loaner_time__c = null,            //澶囧搧涓績鍑哄簱鏃堕棿
+//            Forecast_arrival_day__c = null,             //棰勮鍒拌揣鏃�
+//            //Loaner_received_day__c = null,              //鐜板満绛炬敹鏃�
+//            Request_asset_extend_time__c = null,        //寤舵湡鐢宠鏃堕棿
+//            asset_extend_approval_time__c = null,       //寤舵湡鐢宠鎵瑰噯鏃堕棿
+//            //Asset_return_day__c = null,                 //鐗╂祦鎻愯揣鏃�
+//            Received_loaner_time__c = null,             //澶囧搧涓績鍥炴敹鏃堕棿
+//            delivery_company__c = null,
+//            Fedex_number__c = null,
+//            Distributor_method__c = null,
+//            Return_to_wh_staff__c = null,
+//            Return_delivery_company__c = null,
+//            Return_Fedex_number__c = null,
+//            Return_Distributor_method__c = null,
+//            Received_confirmation_staff__c = null,
+//            Customer_install_explanation_sign__c = null, //鏄惁鍥炴敹CDS纭鍗�
+//            Send_to_return_email__c = false, //鍙戦�佸洖鏀剁粨鏋滃弽棣堥偖浠�
+//            Return_comment_anoucment__c = null, //鍙戦�佸洖鏀剁粨鏋滃弽棣堝唴瀹�(NG鐞嗙敱鍜屾瑺鍝佹儏鍐�)
+////bp2            CDS_complete__c = false,
+//            Arrival_in_wh__c = false,
+//            Arrival_wh_time2__c = null,
+
+//            Repair_Sum_Update__c = 0
+//        );
+        
+//        //鍊熷嚭璁惧鏈鸿韩鍙风爜
+//        String assetSerialNumber = '';
+//        Boolean assetFirst = false;
+//        //澶囧搧Set鏄庣粏
+//        Equipment_Set_Detail__c[] equipmentSetDetails = [select Equipment_Set__c,Asset__c,Asset__r.SerialNumber,
+//                                            Check_lost_Item__c,Pre_disinfection__c,Water_leacage_check__c,
+//                                            Inspection_result_after__c,Arrival_in_wh__c,
+//                                            Lost_item_check_staff__c,CDS_staff__c,Inspection_staff_After__c,
+//                                            Return_wh_chenk_staff__c,Pre_inspection_time__c,Lost_item_check_time__c,
+//                                            After_Inspection_time__c,Arrival_wh_time__c,
+//                                            Inspection_result__c,Inspection_staff__c,Last_Reserve_RAES_Detail__c
+////bp2        CDS_complete_time__c,
+//                                            from Equipment_Set_Detail__c
+//                                            where Equipment_Set__c = :equipmentSet.Id and Select_rental__c = true];
+        
+//        for (Equipment_Set_Detail__c equipmentSetDetail : equipmentSetDetails) {
+//            //鎻掑叆澶囧搧鐢宠鍊熷嚭鏄庣粏鍘嗗彶
+//            Rental_Apply_Equipment_Set_Detail__c rentalApplyEquipmentSetDetail = new Rental_Apply_Equipment_Set_Detail__c();
+//            rentalApplyEquipmentSetDetail.Rental_Apply__c = raes.Rental_Apply__c;//澶囧搧鍊熷嚭鐢宠
+//            rentalApplyEquipmentSetDetail.Rental_Apply_Equipment_Set__c = raes.Id;//澶囧搧Set鍊熷嚭鍘嗗彶
+//            rentalApplyEquipmentSetDetail.Equipment_Set__c = equipmentSetDetail.Equipment_Set__c;//澶囧搧Set
+//            rentalApplyEquipmentSetDetail.Asset__c = equipmentSetDetail.Asset__c;//淇濇湁璁惧
+//            //鎻掑叆澶囧搧鐢宠鍊熷嚭鏄庣粏鍘嗗彶
+//            rentalApplyEquipmentSetDetailList.add(rentalApplyEquipmentSetDetail);
+            
+//            //鏇存柊澶囧搧Set鏄庣粏
+//            equipmentSetDetail.Check_lost_Item__c = null;//娆犲搧纭缁撴灉
+//            equipmentSetDetail.Pre_disinfection__c = null;//娓呮礂鍓�
+//            equipmentSetDetail.Water_leacage_check__c = null;//娴嬫紡妫�鏌ョ粨鏋�
+//            equipmentSetDetail.Inspection_result_after__c = null;//鍥炴敹鍚�-妫�娴嬬粨鏋�
+//            equipmentSetDetail.Arrival_in_wh__c = false;//鍥炲簱纭
+//            equipmentSetDetail.Lost_item_check_staff__c = null;//娆犲搧纭鑰�
+//            equipmentSetDetail.CDS_staff__c = null;//娑堟瘨浜哄憳
+//            equipmentSetDetail.Inspection_staff_After__c = null;//鍥炴敹鍚�-妫�娴嬩汉鍛�
+//            equipmentSetDetail.Return_wh_chenk_staff__c = null;//鍥炲簱纭鑰�
+//            equipmentSetDetail.Inspection_result__c = null;//鍙戣揣鍓�-妫�娴嬬粨鏋�
+//            equipmentSetDetail.Inspection_staff__c = null;//鍙戣揣鍓�-妫�娴嬩汉鍛�
+            
+//            equipmentSetDetail.Pre_inspection_time__c = null;//澶囧搧Set鐢�,鍙戣揣鍓�-妫�娴嬪悎鏍兼椂闂�
+//            equipmentSetDetail.Lost_item_check_time__c = null;//澶囧搧Set鐢�,娆犲搧纭鏃堕棿
+////bp2            equipmentSetDetail.CDS_complete_time__c = null;//澶囧搧Set鐢�,CDS瀹屾瘯鏃堕棿
+//            equipmentSetDetail.After_Inspection_time__c = null;//澶囧搧Set鐢�,鍥炴敹鍚�-妫�娴嬪畬姣曟椂闂�
+//            equipmentSetDetail.Arrival_wh_time__c = null;//澶囧搧Set鐢�,鍥炲簱纭瀹屾瘯鏃堕棿
+//            //鏇存柊澶囧搧Set鏄庣粏
+//            equipmentSetDetailList.add(equipmentSetDetail);
+//            //鍊熷嚭璁惧鏈鸿韩鍙风爜
+//            if (String.isNotBlank(equipmentSetDetail.Asset__r.SerialNumber)) {
+//                if (assetFirst == false) {
+//                    assetSerialNumber += ',' + equipmentSetDetail.Asset__r.SerialNumber + ',';
+//                    assetFirst = true;
+//                } else {
+//                    assetSerialNumber += equipmentSetDetail.Asset__r.SerialNumber + ',';
+//                }
+//            }
+//        }
+        
+//        Equipment_Set_Detail__c[] equipmentSetDetails2 = [select Id, Last_Reserve_RAES_Detail__c
+//                                            from Equipment_Set_Detail__c
+//                                            where Equipment_Set__c = :equipmentSet.Id and Select_rental__c = false];
+//        for (Equipment_Set_Detail__c equipmentSetDetail : equipmentSetDetails2) {
+//            equipmentSetDetail.Pre_Reserve_RAES_Detail__c = equipmentSetDetail.Last_Reserve_RAES_Detail__c;
+//            equipmentSetDetail.Last_Reserve_RAES_Detail__c = null;
+//            equipmentSetDetailList2.add(equipmentSetDetail);
+//        }
+        
+//        //鏇存柊鍊熷嚭璁惧鏈鸿韩鍙风爜
+//        raes.Rental_Asset_SerialNumber__c = assetSerialNumber;
+        
+//        Savepoint sp = Database.setSavepoint();
+//        try {
+//            if (equipmentSet != null) {
+//                update equipmentSet;
+//            }
+//            if (rentalApplyEquipmentSetDetailList.size() > 0) {
+//                insert rentalApplyEquipmentSetDetailList;
+//            }
+//            if (equipmentSetDetailList.size() > 0) {
+//                for (Integer i=0; i<equipmentSetDetailList.size(); i++) {
+//                    equipmentSetDetailList[i].Pre_Reserve_RAES_Detail__c = equipmentSetDetailList[i].Last_Reserve_RAES_Detail__c;
+//                    equipmentSetDetailList[i].Last_Reserve_RAES_Detail__c = rentalApplyEquipmentSetDetailList[i].Id;
+//                }
+//                update equipmentSetDetailList;
+//            }
+//            if (equipmentSetDetailList2.size() > 0) {
+//                update equipmentSetDetailList2;
+//            }
+//            if (String.isNotBlank(assetSerialNumber)) {
+//                update raes;
+//            }
+//            eSetRefreshStatus(equipmentSet.Id);
+//        } catch (System.Exception e) {
+//            Database.rollback(sp);
+//            return e.getMessage();
+//        }
+//        //杩斿洖缁撴灉
+//        return checkRS;
+//    }
+
+    // 鍊熷嚭澶囧搧閰嶅涓�瑙堢姸鎬佸嵆鏃舵洿鏂�
+    WebService static String eSetRefreshStatus(String raeSetId) {
+        return eSetRefreshStatus(new List<String> {raeSetId});
+    }
+    public static String eSetRefreshStatus(List<String> raeSetIds) {
+        List<Rental_Apply_Equipment_Set__c> updateList1 = new List<Rental_Apply_Equipment_Set__c>();
+
+        if (!raeSetIds.isEmpty()) {
+            for (Rental_Apply_Equipment_Set__c raes: [
+                    select Id,Repair_Status1__c,Repair_Status_Text__c,Final_reply_day__c,Final_reply_day_text__c,
+                            Received_Confirm_NG_Not_Return__c,Received_Confirm_NG_Not_Return_Text__c,
+                            Received_Confirm_Status_Text__c, Received_Confirm_Status_F__c
+                              , NG_Final_reply_day_Text__c
+                              , NG_Final_reply_day_F__c
+                              , Yizhouweixiu_Final_reply_day_Text__c
+                              , Yizhouweixiu_Final_reply_day_F__c
+                              , Extend_Final_reply_day_Text__c
+                              , Extend_Final_reply_day_F__c
+                              , QIS_Final_reply_day_Text__c
+                              , QIS_Final_reply_day_F__c
+                              , Repair_cancel_Final_reply_day_Text__c
+                              , Repair_cancel_Final_reply_day_F__c
+                              , Return_to_office_Final_reply_day_Text__c
+                              , Return_to_office_Final_reply_day_F__c
+                              , Repair_delete_Final_reply_day_Text__c
+                              , Repair_delete_Final_reply_day_F__c
+                              , Yigoudaihuo_Final_reply_day_Text__c
+                              , Yigoudaihuo_Final_reply_day_F__c
+                              , Guzhangpaicha_Final_reply_day_Text__c
+                              , Guzhangpaicha_Final_reply_day_F__c
+                              , Repair_Agreed_Quotation_Text__c
+                              , Repair_Agreed_Quotation_F__c
+                              , Return_to_office_Final_reply_day_U_RC__c
+                              , Return_to_office_Final_reply_day_U_RC_F__c
+                              , Extend_Date__c
+                              , Extend_Date_F__c
+                              , Received_NG_ReAssign_Text__c
+                              , Received_NG_ReAssign__c
+                        //銆怓Y23澶у強宸ㄥぇ璇鹃銆戦暱鍋囧鍝佸�熺敤寤舵湡寮�鍙� 2022/12/27 start xxf
+                              , Final_reply_day_Holiday_backup__c
+                              , NG_Final_reply_day_F_Holiday_backup__c
+                              , NG_Final_reply_day_Text_Holiday_backup__c
+                              , Yizhouweixiu_Final_reply_day_F_Holiday__c
+                              , Yizhouweixiu_Final_reply_day_TextHoliday__c
+                              , Extend_Final_reply_day_F_Holiday_backup__c
+                              , Extend_Final_reply_day_Text_Holiday_back__c
+                              , QIS_Final_reply_day_F_Holiday_backup__c
+                              , QIS_Final_reply_day_Text_Holiday_backup__c
+                              , Repair_cancel_Final_reply_day_F_Holiday__c
+                              , Repair_cancel_Final_reply_day_Text_Holid__c
+                              , Return_to_office_Final_reply_day_F_Ho__c
+                              , Return_to_office_Final_reply_day_Text_Ho__c
+                              , Repair_delete_Final_reply_day_F_Holiday__c
+                              , Repair_delete_Final_reply_day_Text_Ho__c
+                              , Yigoudaihuo_Final_reply_day_F_Holiday__c
+                              , Yigoudaihuo_Final_reply_day_Text_Holiday__c
+                              , FGuzhangpaicha_Final_reply_day_F_Holiday__c
+                              , Guzhangpaicha_Final_reply_day_Text_Holid__c
+                              , Return_to_office_Final_reply_day_U_RC_Ho__c
+                              , Return_to_office_Final_reply_day_U_RC_FH__c
+                        //銆怓Y23澶у強宸ㄥぇ璇鹃銆戦暱鍋囧鍝佸�熺敤寤舵湡寮�鍙� 2022/12/27 end xxf
+                      from Rental_Apply_Equipment_Set__c
+                     where Id IN :raeSetIds
+            ]) {
+                Rental_Apply_Equipment_Set__c upd = UpdateRentalApplyEquipmentSetBatch.setRAES(raes);
+                if (upd != null) {
+                    updateList1.add(upd);
+                }
+            }
+        }
+//bp2
+//        List<Equipment_Set_Detail__c> esdList = [
+//                select Id,Asset_condition__c,Asset_condition_Text__c,
+//                       Serial_Lot__c,Serial_Lot_text__c,
+//                       Asset__r.Loaner_accsessary__c, Loaner_accsessary_text__c,
+//                       Active_judgement__c,Active_judgement_select__c,Active_judgement_text__c,
+//                       Last_Reserve_RAES_Detail_RAES_F__c,Last_Reserve_RAES_Detail_RAES_Id__c,
+//                       Equipment_Set_Last_Reserve_RAES_F__c,Equipment_Set_Last_Reserve_RAES_Id__c
+//                  from Equipment_Set_Detail__c 
+//                 where Equipment_Set__c IN :eSetIds];
+//        List<Equipment_Set_Detail__c> updateList2 = UpdateRentalApplyEquipmentSetBatch.setESD(esdList);
+
+        Savepoint sp = Database.setSavepoint();
+        try {
+            if (!updateList1.isEmpty()) update updateList1;
+//bp2            if (updateList2.size() > 0) update updateList2;
+            return '1';
+        } catch (System.Exception e) {
+            Database.rollback(sp);
+            return e.getMessage();
+        }
+        return '1';
+    }
+
+//bp2    //鏁板嚭涓�鍏辨湁澶氬皯涓鍝丼et锛屽嚭搴撴寚绀猴紝鍏ㄩ儴鍙戣揣浼氱敤鍒�
+//    Webservice static Integer CntEquipmentSet(String Raid){
+//        List<Rental_Apply_Equipment_Set__c> Raesc = [Select Equipment_Set__c from Rental_Apply_Equipment_Set__c where Rental_Apply__c=:Raid and Cancel_Select__c = false];
+//        return Raesc.size();
+//    }
+    // 鍒嗛厤楠岃瘉
+    Webservice static String AssignBtn(String Rid){
+
+        List<String> statusList = System.Label.StatusProcessState.split(',');
+
+        List<Rental_Apply__c> raList = [select demo_purpose2__c,next_action__c,QIS_number__r.ReplaceDeliveryDate__c,Follow_UP_Opp__r.Shipping_Finished_Day_Func__c,repair__r.Repair_Final_Inspection_Date__c,repair__r.Return_Without_Repair_Date__c,Campaign__c,Campaign__r.Status,Repair__r.Repair_Shipped_Date__c,Campaign__r.IF_Approved__c,Campaign__r.Meeting_Approved_No__c,Campaign__r.Approved_Status__c   from Rental_Apply__c where id = :Rid];
+        // 20210803 ljh  SFDC-C5HDC7 add 鏌ヨ娣诲姞 Campaign__c,Campaign__r.Status,Repair__r.Repair_Shipped_Date__c 
+        if(raList.size()>0){
+            Rental_Apply__c Ra = raList[0];
+            // 20210803 ljh  SFDC-C5HDC7 update  鍒ゆ柇澧炲姞 Ra.repair__c != null && start
+            // if(Ra.repair__r.Repair_Final_Inspection_Date__c!=null){
+            //     return '淇悊鏈�缁堟娴嬫棩涓嶄负绌猴紝涓嶈兘鍒嗛厤';
+            // }else if(Ra.repair__r.Return_Without_Repair_Date__c !=null){
+            //     return '鏈慨鐞嗗綊杩樻棩涓嶄负绌猴紝涓嶈兘鍒嗛厤';
+            if(Ra.Campaign__c != null && Ra.Campaign__r.Status == '鍙栨秷'){
+                return '瀛︿細鍙栨秷锛屼笉鍙垎閰�';
+            }else if(Ra.repair__c != null && (Ra.repair__r.Repair_Final_Inspection_Date__c!=null || Ra.Repair__r.Repair_Shipped_Date__c != null)){
+                return '淇悊鏈夋渶缁堟娴嬫棩鎴栦慨鐞嗗搧杩旈�佹棩锛屼笉鍙垎閰�';
+            }else if(Ra.repair__c != null && Ra.repair__r.Return_Without_Repair_Date__c !=null){
+                return '鏈慨鐞嗗綊杩樻棩涓嶄负绌猴紝涓嶈兘鍒嗛厤';
+            // 20210803 ljh  SFDC-C5HDC7 add end   
+            }//1822 yc 20211021 start
+            else if(Ra.demo_purpose2__c=='宸茶喘寰呰揣' && Ra.Follow_UP_Opp__r.Shipping_Finished_Day_Func__c!= null){
+                return '宸茶喘寰呰揣鐩殑锛屾柊鍝佸凡鏈夊彂璐ф棩锛屼笉鍙垎閰�';
+           }else if(Ra.demo_purpose2__c=='绱㈣禂QIS' && Ra.next_action__c=='鏃犲伩鏇存崲' && Ra.QIS_number__r.ReplaceDeliveryDate__c!= null){
+                return '绱㈣禂QIS鐩殑锛孮IS宸叉湁鏂板搧鍙戣揣鏃ワ紝涓嶅彲鍒嗛厤';
+           }//1822 yc 20211108 end
+           else if(Ra.Campaign__r.IF_Approved__c && Ra.Campaign__r.Meeting_Approved_No__c == null){
+                return '宸茬敵璇峰喅瑁佷絾鍐宠缂栫爜涓虹┖';
+           }//20220301 sx obpm淇敼
+           else if(Ra.Campaign__r.IF_Approved__c && Ra.Campaign__r.Meeting_Approved_No__c != null && statusList.contains(Ra.Campaign__r.Approved_Status__c)){
+                return '宸茬敵璇峰喅瑁佷絾鍐宠鐘舵�佷笉绗﹀悎鏉′欢';
+           }//20220315 sx obpm澶囧搧鍐宠鐘舵�佺浉鍏充慨鏀�
+           else{
+                return 'Fin';
+            } 
+        }else{
+            return '璇ュ�熷嚭鐢宠涓嶅瓨鍦�';
+        }
+    }
+
+//bp2
+//    // 琛ュ厖闄勫睘鍝�
+//    WebService static String fillOtherDetail(String eSetId) {
+//        // 涓嶆墦鍕剧殑涓嶈琛ュ厖锛屾墍浠ョ湅 Active_judgement_select__c
+//        List<Equipment_Set_Detail__c> sesd = [select Id from Equipment_Set_Detail__c where Equipment_Set__c = :eSetId and Asset__r.Loaner_accsessary__c = false and Active_judgement_select__c != :okStatus];
+//        if (sesd.size() > 0) {
+//            // 瑕佺瓑涓绘満鍥炴潵浜嗘墠鑳借ˉ
+//            return '璇风‘璁ゅ鍝佷腑涓绘満鐘舵��';
+//        }
+        
+//        List<Equipment_Set_Detail__c> oesd = [select Id, Last_Reserve_RAES_Detail__c from Equipment_Set_Detail__c where Equipment_Set__c = :eSetId and Asset__r.Loaner_accsessary__c = true and Equipment_Set__r.ES_Status__c not in ('寮曞綋鍙�','寮曞綋娓�') and Select_rental__c = true];
+//        // 鍥犱负鏈夊弬鐓у鍝乻et鐨勫瓧娈碉紝鎵�浠ヤ负浜嗚揪鍒扮姸鎬佸彉鎴�99鐨勭洰鐨勶紝鍦ㄨ繖閲屽仛浜嗗叆搴撶殑鎿嶄綔锛岃�屼笉鏄叏娓呯┖銆�
+//        for (Equipment_Set_Detail__c esd : oesd) {
+//            if (esd.Last_Reserve_RAES_Detail__c != null) {
+//                esd.Pre_Reserve_RAES_Detail__c = esd.Last_Reserve_RAES_Detail__c;
+//                esd.Last_Reserve_RAES_Detail__c = null;
+//            }
+
+//            esd.Inspection_result_ng__c = null;
+//            esd.Pre_inspection_time__c = null;
+//            esd.Inspection_staff__c = null;
+//            esd.Inspection_result__c = 'OK';
+
+//            esd.Check_lost_Item__c = 'OK';
+//            esd.Lost_item_check_time__c = null;
+//            esd.Lost_item_check_staff__c = null;
+//            esd.Lost_item_giveup__c = false;
+
+//            esd.Inspection_result_after_ng__c = null;
+//            esd.After_Inspection_time__c = null;
+//            esd.Inspection_staff_After__c = null;
+//            esd.Inspection_result_after__c = 'OK';
+
+//            esd.Arrival_in_wh__c = true;
+//            esd.Arrival_wh_time__c = null;
+//            esd.Return_wh_chenk_staff__c = null;
+
+//            esd.Pre_disinfection__c = null;
+//            esd.Water_leacage_check__c = null;
+////bp2            esd.CDS_staff__c = null;
+////bp2            esd.CDS_complete_time__c = null;
+//        }
+
+//        Savepoint sp = Database.setSavepoint();
+//        try {
+//            update oesd;
+//            return '1';
+//        } catch (System.Exception e) {
+//            Database.rollback(sp);
+//            return e.getMessage();
+//        }
+//        return '1';
+//    }
+
+    Webservice static String postponeCheck(String endDate, Integer d) {
+        Date before5day = getWD_addday(date.parse(endDate), d);
+        if (Date.today() > before5day) {
+            return System.Label.EquipmentRentalPostponeOverDeadline;
+        }
+        return 'OK';
+    }
+    
+    // TODO please use public
+    public static Date getWD_now(Date d) {
+        List<OlympusCalendar__c> workday = [
+                select Id, Date__c, IsWorkDay__c 
+                  from OlympusCalendar__c 
+                 where Date__c >= :d 
+                   and IsWorkDay__c = 1
+                 order by Date__c
+                 limit 1];
+        Date selectDate = workday[0].Date__c;
+        return selectDate;
+    }
+
+    // TODO please use public
+    public static Date getWD_addday(Date d, Integer i) {
+        if (d == Date.valueOf('4000-12-31')) {
+            return d;
+        }
+        if (i >= 0) {
+            List<OlympusCalendar__c> workday = [
+                    select Id, Date__c, IsWorkDay__c 
+                      from OlympusCalendar__c 
+                     where Date__c >= :d 
+                       and IsWorkDay__c = 1
+                     order by Date__c
+                     limit :(i+1)];
+            Date selectDate = workday[i].Date__c;
+            return selectDate;
+        } else {
+            i = Math.abs(i);
+            List<OlympusCalendar__c> workday = [
+                    select Id, Date__c, IsWorkDay__c 
+                      from OlympusCalendar__c 
+                     where Date__c <= :d 
+                       and IsWorkDay__c = 1
+                     order by Date__c desc
+                     limit :(i+1)];
+            Date selectDate = workday[i].Date__c;
+            return selectDate;
+        }
+    }
+    
+    // pd:0浠h〃褰撳ぉ,1浠h〃绗簩澶�
+    public Map<Date, Map<String, String>> getDateMap(Date sd, Date ed, Integer pd) {
+        Map<Date, Map<String, String>> returnMap = new Map<Date, Map<String, String>>();
+        List<OlympusCalendar__c> workdayList = [
+                select Id, Date__c, IsWorkDay__c 
+                  from OlympusCalendar__c 
+                 where Date__c >= :sd
+                   and Date__c <= :ed.addDays(15 + pd)                  // +15 鐨勭洰鐨勬槸銆佷负浜嗗彇寰梕d 銇� 涓嬩竴涓伐浣滄棩
+                 order by Date__c];
+        for (Integer i = 0; i < workdayList.size(); i++) {
+            OlympusCalendar__c wd = workdayList[i];
+            if (wd.Date__c > ed) break;
+            Integer nextWordDays = 0;
+            Map<String, String> valueMap = new Map<String, String>();
+            valueMap.put('WorkDay', String.valueOf(wd.IsWorkDay__c));
+            Integer maxJ = 15 + i + pd;
+            if (maxJ > workdayList.size()) maxJ = workdayList.size();
+            for (Integer j = i; j < maxJ; j++) {
+                OlympusCalendar__c oc = workdayList[j];
+                if (oc.IsWorkDay__c == 1) {
+                    nextWordDays++;
+                    if (nextWordDays == pd + 1) {
+                        valueMap.put('Next', String.valueOf(oc.Date__c));
+                        break;
+                    }
+                }
+            }
+            
+            returnMap.put(wd.Date__c, valueMap);
+        }
+        return returnMap;
+    }
+
+//bp2
+//// TODO katsu select in for, why?銆乬etBetweenWD 銈掋仾銇忋仚鏂瑰悜銆丆ount銇犮亼銇倝銆乬etOlympusWorkDayCount 銇儭銈姐儍銉夈亴銇傘倞銇俱仚銆�
+//    //宸ヤ綔鏃�
+//    WebService static String getBetweenWD(String sd, String ed) {
+//        String betweenWD = '0';
+//        if (sd != '' && ed != '') {
+//            Date sdate = Date.valueof(sd.replace('/','-'));
+//            Date edate = Date.valueof(ed.replace('/','-'));
+//            List<OlympusCalendar__c> workdayList = [
+//                    select Id, Date__c, IsWorkDay__c 
+//                      from OlympusCalendar__c 
+//                    where Date__c >= :sdate
+//                       and Date__c <= :edate
+//                       and IsWorkDay__c = 1
+//                     order by Date__c];
+//            betweenWD = String.valueOf(workdayList.size());
+//        }
+//        return betweenWD;
+//    }
+//bp2 OLY_OCM-113
+    ////鑷劧鏃�
+    //Webservice static String getBetweenNaturalDay(String sd, String ed){
+    //    String betweenND = '0';
+    //    if(sd != '' && ed != ''){
+    //        Date sdate = Date.valueof(sd.replace('/','-'));
+    //        Date edate = Date.valueof(ed.replace('/','-'));
+    //        Integer days = sdate.daysBetween(edate);
+
+    //        betweenND = String.valueOf(days);
+    //    }
+    //    return betweenND;
+    //}
+    //WebService static String sendAll(String raid) {
+    //    return '1';
+    //}
+
+////bp2 OLY_OCM-81
+//*************************Create 20160825 SWAG-AD59Z6 瓒欏境鑺� Start*************************//
+//    //鍏ㄩ儴鍙戣揣
+//    WebService static String DeliverAll(String raid){
+//        List<Rental_Apply__c> raList = [select id,repair__r.Repair_Final_Inspection_Date__c,Bollow_Date__c,repair__r.Return_Without_Repair_Date__c, delivery_company__c, Return_to_wh_staff__c, Distributor_method__c, Tracking_Number__c,
+//                                               Shippment_loaner_time__c,Status__c,All_Delivery_Flag_c__c
+//                                          from Rental_Apply__c
+//                                         where id = :raid];
+//        Rental_Apply__c Ra = new Rental_Apply__c();
+//        System.debug(raList);
+//        if(raList.size()>0){
+//            Ra = raList[0];
+//            if(Ra.delivery_company__c == null||
+//                Ra.Return_to_wh_staff__c == null ||
+//                 Ra.Distributor_method__c == null ||
+//                  Ra.Tracking_Number__c == null){
+//                return '璇疯ˉ鍏ㄥ彂璐х墿娴佷俊鎭�';
+//            }else if(Ra.Status__c !='鍑哄簱鎸囩ず瀹屼簡'){
+//                return '璇峰厛鍋氬嚭搴撴寚绀哄悗锛屽啀杩涜鍑哄簱';
+//            }
+//            //else if(Ra.repair__c.Repair_Final_Inspection_Date__c<Ra.Bollow_Date__c){
+//            //  return '淇悊鏈�缁堟娴嬫棩鏃╀簬鍙戣揣鏃ワ紝涓嶈兘鍙戣揣';
+//            //}
+//            else if(Ra.repair__c!=null&&Ra.repair__r.Repair_Final_Inspection_Date__c!=null){
+//                return '淇悊鏈�缁堟娴嬫棩涓嶄负绌猴紝涓嶈兘鍙戣揣';
+//            }else if(Ra.repair__c!=null&&Ra.repair__r.Return_Without_Repair_Date__c!=null){
+//                return '鏈慨鐞嗗綊杩樻棩涓嶄负绌猴紝涓嶈兘鍙戣揣';
+//            }else{
+//                List<Rental_Apply_Equipment_Set__c> DeliveryGoodDetail = new List<Rental_Apply_Equipment_Set__c>();
+//                DeliveryGoodDetail = [select id,name,Equipment_Set__c from Rental_Apply_Equipment_Set__c where Shippment_loaner_time__c =null and Rental_Apply__c =:raid and  Cancel_Select__c = false];
+//                if(DeliveryGoodDetail.size()>0){
+//                    List<Rental_Apply_Equipment_Set__c> ExistSet  = new List<Rental_Apply_Equipment_Set__c>();
+//                    ExistSet = [select id,name,Equipment_Set__c from Rental_Apply_Equipment_Set__c where Rental_Apply__c =:raid and Cancel_Select__c = false];
+//                    List<String> sqlLine = new List<String>();
+//                    for(Rental_Apply_Equipment_Set__c RAESC : DeliveryGoodDetail){
+//                        sqlLine.add(RAESC.Equipment_Set__c);
+//                    }
+//                    List<Equipment_Set__c> ResultSet = new List<Equipment_Set__c>();
+//                    ResultSet = [select id,Pre_inspection_time__c,Shippment_loaner_time__c from Equipment_Set__c where id in:sqlLine];
+//                    System.debug(ResultSet);
+//                    Integer Ncnt =0;
+//                    for(Equipment_Set__c ESC : ResultSet){
+//                        if(ESC.Shippment_loaner_time__c!=null){
+//                            Ncnt=Ncnt+1;
+//                        }
+//                    }
+//                    Savepoint sp = Database.setSavepoint();
+//                    List<Equipment_Set__c> UpsertEsc = new List<Equipment_Set__c>();
+//                    if(Ncnt==0){
+//                        for(Equipment_Set__c ESC : ResultSet){
+//                            Equipment_Set__c EscEle =  new Equipment_Set__c();
+//                            EscEle.id=ESC.id;
+//                            EscEle.delivery_company__c  = Ra.delivery_company__c;
+//                            EscEle.Return_to_wh_staff__c  = Ra.Return_to_wh_staff__c;
+//                            EscEle.Distributor_method__c  = Ra.Distributor_method__c;
+//                            EscEle.Fedex_number__c  = Ra.Tracking_Number__c;
+//                            EscEle.StockDown__c  = true;
+//                            UpsertEsc.add(EscEle);
+//                        }
+//                        if(UpsertEsc.size()>0){
+//                            Ra.All_Delivery_Flag_c__c = true;
+//                            try{
+//                                update Ra;    
+//                                update UpsertEsc;
+//                                return 'Fin';
+//                            }catch (System.Exception e){
+//                                Database.rollback(sp);
+//                                return e.getMessage();
+//                            }
+//                        }else{
+//                            return '鎵�閫夊鍝丼et锛屽凡鍏ㄩ儴鍑哄簱锛屾棤娉曞啀娆″嚭搴�';
+//                        }               
+//                    }else{
+//                        return '澶囧搧宸插嚭搴�';
+//                    }
+//                }else{
+//                    return '鏈�熷嚭鐢宠鏃犻渶瑕佸嚭搴撶殑澶囧搧';
+//                }
+//            }
+//        }else{
+//            return '鏃犳晥鐨勫鍝佸�熷嚭鐢宠';
+//        }
+//    }
+
+////bp2 OLY_OCM-81
+////*************************Create 20160825 SWAG-AD59Z6 瓒欏境鑺� End***************************//
+//    WebService static String receiveAll(String raid) {
+//        List<Rental_Apply__c> raList = [select id, Return_Track_Company__c, Return_Distrubutor_Method__c, Return_Trake_Staff__c, Return_Track_Number__c,
+//                                               Shippment_loaner_time__c
+//                                          from Rental_Apply__c
+//                                         where id = :raid];
+//        if (raList.size() == 0) {
+//            return '鏃犳晥鐨勫鍝佸�熷嚭鐢宠';
+//        }
+//        Rental_Apply__c ra = raList[0];
+//        if (ra.Return_Track_Company__c == null ||
+//            ra.Return_Distrubutor_Method__c == null ||
+//            ra.Return_Trake_Staff__c == null ||
+//            ra.Return_Track_Number__c == '' || ra.Return_Track_Number__c == null) {
+//            return '璇疯ˉ鍏ㄥ洖搴撶墿娴佷俊鎭�';
+//        }
+//        if (ra.Shippment_loaner_time__c == null) {
+//            return '澶囧搧杩樻病鍑哄簱';
+//        }
+//        List<Rental_Apply_Equipment_Set__c> raesList = [select id, Equipment_Set__c from Rental_Apply_Equipment_Set__c where Shippment_loaner_time__c != null and Rental_Apply__c = :raid and Cancel_Select__c = false];
+//        if (raesList.size() == 0) {
+//            return '澶囧搧杩樻病鍑哄簱';
+//        }
+//        Map<id,id> RaesEsIdMap = new Map<Id,id>();
+//        List<String> esidList = new List<String>();
+//        for (Rental_Apply_Equipment_Set__c raes : raesList) {
+//            esidList.add(raes.Equipment_Set__c);
+//            RaesEsIdMap.put(raes.Equipment_Set__c, raes.Id);
+//        }
+//        List<Equipment_Set__c> esList = [select id,Return_Fedex_number__c,Last_Reserve_Rental_Apply_Equipment_Set__c from Equipment_Set__c where id in :esidList];
+//        List<Equipment_Set__c> updList = new List<Equipment_Set__c>();
+//        for (Equipment_Set__c es : esList) {
+//            if ((es.Return_Fedex_number__c == null || es.Return_Fedex_number__c == '') && es.Last_Reserve_Rental_Apply_Equipment_Set__c == RaesEsIdMap.get(es.Id)) {
+//                Equipment_Set__c tmp = new Equipment_Set__c(
+//                    id = es.id,
+//                    Return_delivery_company__c = ra.Return_Track_Company__c,
+//                    Received_confirmation_staff__c = ra.Return_Trake_Staff__c,
+//                    Return_Distributor_method__c = ra.Return_Distrubutor_Method__c,
+//                    Return_Fedex_number__c = ra.Return_Track_Number__c
+//                );
+//                updList.add(tmp);
+//            }
+//        }
+//        if (updList.size() == 0) {
+//            return '澶囧搧宸茬粡鍏ㄩ儴鍥炲簱';
+//        } else {
+//            try {
+//                update updList;
+//            } catch (Exception ex) {
+//                return ex.getMessage();
+//            }
+//        }
+//        return '1';
+//    }
+
+    WebService static String RentalApplyCancel(String raid, Boolean autoCancel) {
+        List<Rental_Apply__c> raList = [select id, Shipment_request_Cnt__c, Status__c, RA_Status__c, Shippment_loaner_cnt__c, Loaner_cancel_request__c, Arrival_wh_cnt__c,
+                Cancel_Reason__c
+                from Rental_Apply__c
+                where id = :raid];
+        List<Rental_Apply_Equipment_Set__c> raesList = [select id, StockDown_time__c
+//bp2        , Equipment_Set__c
+                                                          from Rental_Apply_Equipment_Set__c
+                                                         where Rental_Apply__c = :raid
+                                                           and Cancel_Select__c = false];
+
+        List<Rental_Apply_Equipment_Set__c> updList = new List<Rental_Apply_Equipment_Set__c>();
+        // List<Rental_Apply_Equipment_Set_Detail__c> delList = new List<Rental_Apply_Equipment_Set_Detail__c>();
+        Set<Id> esIdSet = new Set<Id>();
+
+        if (raList.size() <= 0) {
+            return '澶囧搧鐢宠涔︿笉瀛樺湪銆�';
+        }
+        Rental_Apply__c ra = raList[0];
+        if (ra.Status__c == '鍙栨秷') {
+            return '澶囧搧鐢宠涔﹀凡缁忓彇娑堛��';
+        }
+        if (ra.Status__c == '鍒犻櫎') {
+            return '澶囧搧鐢宠涔﹀凡缁忓垹闄ゃ��';
+        }
+        if (ra.RA_Status__c == FixtureUtil.raStatusMap.get(FixtureUtil.RaStatus.Yi_Chu_Ku.ordinal()) || ra.Arrival_wh_cnt__c > 0) {
+            return '澶囧搧宸茬粡鍑哄簱锛屼笉鑳藉彇娑堛��';
+        }
+        
+        User loginUser = [Select Id, Name, ProfileId From User where Id = :Userinfo.getUserId()];
+        if(loginUser.ProfileId != System.Label.ProfileId_SystemAdmin && loginUser.ProfileId != System.Label.ProfileId_EquipmentCenter && !System.Label.ProfileId_EquCenCheckAndDepot.contains(loginUser.ProfileId)  && !System.Label.ProfileId_EquCenAdmin.contains(loginUser.ProfileId) && loginUser.ProfileId != System.Label.ProfileId_IThelp && ra.Shipment_request_Cnt__c > 0
+        ){
+            return '涓嶈兘鍙栨秷鐢宠锛岃鑱旂郴澶囧搧涓績绐楀彛鍙栨秷銆�';
+        }
+
+
+        if (autoCancel == false && String.isBlank(ra.Cancel_Reason__c)) {
+            return '蹇呴』杈撳叆鍙栨秷鐞嗙敱銆�';
+        }
+        ra.Status__c = '鍙栨秷';
+        if (autoCancel) {
+            ra.Cancel_Reason__c = '琚姩鍙栨秷';
+        }
+        // Map<Id, Asset> assetMap = new Map<Id, Asset>();
+        // for (Rental_Apply_Equipment_Set__c raes : raesList) {
+        //     // if (raes.StockDown_time__c != null) {
+        //         raes.Cancel_Select__c = true;
+        //         raes.Cancel_Reason__c = ra.Loaner_cancel_request__c;
+        //         if (autoCancel) {
+        //             raes.Cancel_Reason__c = '琚姩鍙栨秷';
+        //         }
+        //         updList.add(raes);
+//bp2                esIdSet.add(raes.Equipment_Set__c);
+            // } else {
+                // delList.add(raes);
+//bp2                esIdSet.add(raes.Equipment_Set__c);
+            // }
+            // Asset ass = new Asset(Id = raes.Asset__c, Last_Reserve_RAES_Detail__c = null);
+            // assetMap.put(raes.Asset__c, ass);
+        // }
+
+        Savepoint sp = Database.setSavepoint();
+        try {
+            Set<Id> assetIdSet = new Set<Id>();
+            for (Rental_Apply_Equipment_Set_Detail__c raesd : [SELECT Id, Asset__c
+                                                                 FROM Rental_Apply_Equipment_Set_Detail__c
+                                                                WHERE Rental_Apply__c = :raid
+                                                                  FOR UPDATE]
+            ) {
+                if (String.isNotBlank(raesd.Asset__c)) {
+                    assetIdSet.add(raesd.Asset__c);
+                }
+            }
+            if (assetIdSet.size() > 0) {
+                List<Asset> assetList = [SELECT Id FROM Asset WHERE Id = :assetIdSet FOR UPDATE];
+            }
+            update ra;
+            //if (updList.size() > 0) update updList;
+            // if (!assetMap.isEmpty()) update assetMap.values();
+//bp2            ControllerUtil.setEquipmentSetProvisionFlg(esIdSet);
+        } catch (Exception ex) {
+            return ex.getMessage();
+            Database.rollback(sp);
+        }
+
+        return '1';
+    }
+
+    // 涓�瑕у崢浣�
+    @AuraEnabled
+    WebService static String setRaesShipment_request(String raesid) {
+      return setShipment_requests(null, raesid);
+    }
+
+    // 鐢宠珛鏇稿崢浣�
+    @AuraEnabled
+    WebService static String setShipment_request(String raid) {
+      return setShipment_requests(raid, null);
+    }
+
+    //鍑哄簱鎸囩ず鎸夐挳js涓�娆℃渶澶氭洿鏂�200鏉★紝鎵�浠ユ敼鍦╓ebService鍋氬嚭搴撴寚绀�
+    @AuraEnabled
+    WebService static String setShipment_requests(String raid, String raesid) {
+      Savepoint sp = Database.setSavepoint();
+
+      try {
+        //涓�瑙堟儏鍐典笅妫�绱竴瑙堝搴旂殑鐢宠涔d锛宻oql瀛愭煡璇笉鑳藉拰涓绘煡璇㈡槸鍚屼竴涓〃锛屽崟鐙绱竴娆�
+        if (String.isBlank(raid)) {
+            List<Rental_Apply_Equipment_Set__c> raList = [select Id, Rental_Apply__c from Rental_Apply_Equipment_Set__c where id = :raesid];
+            if (raList.size() > 0) {
+                raid = raList[0].Rental_Apply__c;
+            } else {
+                //搴旇涓嶄細鍒拌繖閲�
+                return '娌℃湁鍙互鍑哄簱鎸囩ず鐨勪竴瑙�';
+            }
+        }
+        String soql = 'SELECT Id'
+                + ' FROM Rental_Apply_Equipment_Set__c '
+                + ' WHERE Shippment_loaner_time2__c <> null '
+                + ' AND Rental_Apply__c = :raid '
+                + ' ORDER BY Id' ;
+        List<Rental_Apply_Equipment_Set__c> shippedRaesList = Database.query(soql);
+        String raesStrShipped = '';
+        for (Rental_Apply_Equipment_Set__c raes : shippedRaesList) {
+            raesStrShipped += raes.Id;
+        }
+
+        //Srring soql = "SELECT Id FROM Rental_Apply_Equipment_Set_Detail__c WHERE Rental_Apply__c = '{!Rental_Apply__c.Id}' AND Cancel_Select__c = false AND Rental_Num__c > 0 AND Rental_Apply_Equipment_Set__r.Wei_Assigned_Cnt__c = 0 AND Rental_Apply_Equipment_Set__r.Yi_Assigned_Cnt__c > 0 AND Shipment_request__c  = false";
+        soql = 'SELECT Id, Rental_Apply__c, Rental_Apply_Equipment_Set__c'
+                + ' FROM Rental_Apply_Equipment_Set_Detail__c '
+                + ' WHERE ' + (String.isNotBlank(raesid) ? 'Rental_Apply_Equipment_Set__c = :raesid ' : 'Rental_Apply__c = :raid ')
+                + ' AND Cancel_Select__c = false '
+                + ' AND Rental_Num__c > 0 '
+                + ' AND Rental_Apply_Equipment_Set__r.Wei_Assigned_Cnt__c = 0 '
+                + ' AND Rental_Apply_Equipment_Set__r.Yi_Assigned_Cnt__c > 0 '
+                + ' AND Shipment_request__c  = false'
+                + ' ORDER BY Rental_Apply_Equipment_Set__c, Id';
+        List<Rental_Apply_Equipment_Set_Detail__c> raesds = Database.query(soql);
+
+        Map<Id, List<String>> rental_Asset_SerialNumberMap = new Map<Id, List<String>>();
+
+        if (raesds.size() < 1) {
+            return '娌℃湁鍙互鍑哄簱鎸囩ず鐨勪竴瑙�';
+        } else {
+            Set<Id> raesSet = new Set<Id>();
+            String raesStrRequest = '';
+            for (Rental_Apply_Equipment_Set_Detail__c raesd : raesds) {
+                if (false == raesSet.contains(raesd.Rental_Apply_Equipment_Set__c)) {
+                    raesSet.add(raesd.Rental_Apply_Equipment_Set__c);
+                    raesStrRequest += raesd.Rental_Apply_Equipment_Set__c;
+                }
+                raesd.Shipment_request_time2__c = Datetime.now();
+                raesd.Shipment_request__c = true;
+            }
+            // 鍑哄簱鍚�, 鍐嶆鍋氬嚭搴撴寚绀虹殑涓�瑙�, 涓�瀹氳涓嚭杩囧簱鐨勪竴瑙堜竴鏍�
+            if (false == String.isBlank(raesStrShipped) && raesStrRequest != raesStrShipped) {
+                return '涓嶈兘鍋氬嚭搴撴寚绀猴紝闇�瑕佸垎鍗曞悗鍐嶆搷浣�';
+            }
+        }
+
+        // add lc 20220927 SFDC-CJ48VE 澶囧搧棰勮鍑哄簱鏃ラ�昏緫璋冩暣 start
+        List<Rental_Apply_Equipment_Set__c> RAESRecords = [
+                SELECT Id,Rental_Start_Date__c 
+                FROM Rental_Apply_Equipment_Set__c 
+                WHERE Rental_Apply__c = :raid
+                AND Cancel_Select__c = False];
+
+        for (Integer i = 0; i < RAESRecords.size(); i++) {
+            // 澶囧搧棰勮鍑哄簱鏃ヤ笉涓�鑷达紝涓嶅彲鍑哄簱鎸囩ず
+            if (RAESRecords[i].Rental_Start_Date__c != RAESRecords[0].Rental_Start_Date__c) {
+                return '澶囧搧棰勮鍑鸿揣鏃ヤ笉涓�鑷达紝涓嶅彲鍑哄簱鎸囩ず';
+            }
+        }
+        // add lc 20220927 SFDC-CJ48VE 澶囧搧棰勮鍑哄簱鏃ラ�昏緫璋冩暣 end
+
+        Rental_Apply__c ra = new Rental_Apply__c(Id = raesds[0].Rental_Apply__c, Status__c = '宸插嚭搴撴寚绀�');
+        update ra;
+        Database.SaveResult[] results = Database.update(raesds);
+        Database.SaveResult dmlResult = results[0];
+        if (dmlResult.isSuccess()) {
+            //鏄庣粏鏇存柊鎴愬姛鍚庢墠鏇存柊涓�瑙堢殑Rental_Asset_SerialNumber__c
+            soql = 'SELECT Id, SerialNumber_text__c, Rental_Apply_Equipment_Set__c '
+                    +'FROM Rental_Apply_Equipment_Set_Detail__c '
+                    +'WHERE Rental_Apply__c = \'' + raesds[0].Rental_Apply__c + '\''
+                    +'AND Shipment_request_time2__c != null '
+                    +'AND Shipment_request__c = true '
+                    +'AND SerialNumber_text__c != null '
+                    +'ORDER BY Rental_Apply_Equipment_Set__c ';
+
+
+            List<Rental_Apply_Equipment_Set_Detail__c> raesdSerialNumbers = Database.query(soql);
+
+            for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdSerialNumbers) {
+
+                if (!rental_Asset_SerialNumberMap.containsKey(raesd.Rental_Apply_Equipment_Set__c)) {
+                    // Asset__r.SerialNumber + ','
+                    rental_Asset_SerialNumberMap.put(raesd.Rental_Apply_Equipment_Set__c, new List<String>());
+                }
+                rental_Asset_SerialNumberMap.get(raesd.Rental_Apply_Equipment_Set__c).add(raesd.SerialNumber_text__c);
+            }
+
+            List<Rental_Apply_Equipment_Set__c> raess = new List<Rental_Apply_Equipment_Set__c>();
+            for (Id key : rental_Asset_SerialNumberMap.keySet()) {
+                raess.add(new Rental_Apply_Equipment_Set__c(Id = key,
+                        Rental_Asset_SerialNumber__c = ',' + String.join(rental_Asset_SerialNumberMap.get(key), ',') + ','));
+            }
+            if (!raess.isEmpty()) {
+                update raess;
+            }
+
+            return '鐘舵�佹洿鏂板埌宸插嚭搴撴寚绀�';
+        } else {
+            Database.rollback(sp);
+            Database.Error emsg = dmlResult.getErrors()[0];
+            return 'failed to update:' + emsg.getFields() +  ' ' + emsg.getMessage();
+        }
+      } catch (Exception ex) {
+        Database.rollback(sp);
+        return ex.getMessage();
+      }
+    }
+
+    /**
+     * 娉ㄦ畫鐢宠澶囧搧鐨勭鎺�
+     */
+     WebService static String RentalApplyCheckForSAoneEle(String SaID) {
+        Statu_Achievements__c Sac = [select id,
+            SalesChannel__c,
+            Opportunity__r.Sales_Root__c,
+            Status_1__c,
+            Status_2_Formula__c,
+            Opp_Number__c,
+            ContractNO__c,
+            FirstApproveDate__c,
+            CreatedDate,
+            X30_Deposit_Day__c,
+            Deposit_In_Full_Day__c,
+            DeliveryDate__c,
+            Backorder_complete_day__c,
+            DeliveryStatus__c
+        from Statu_Achievements__c where id = :SaID];
+        if(Sac.Opportunity__r.Sales_Root__c == '璨╁2搴�'){
+            if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET') ){
+                //modify by lyh 20220606 start 宸茶喘寰呰揣閫昏緫璋冩暣 
+                //瀹㈡埛GIR璁㈠崟锛屾敞娈嬬姸鎬�2鏄��12浠樺叏娆�-14宸插彂璐р�滆繖涓尯闂翠笖鍙戣揣鐘舵�佷负鈥濇湭浜や粯銆佸拰閮ㄥ垎浜や粯鈥滄椂锛岃嚜浠樻鏃ヨ捣绗�31澶╂湭鐢熸垚鈥濆鎴疯鍗曟渶缁堝彂璐ф棩鈥滄椂锛屾柟鍙互鎻愪氦鈥濆凡璐緟璐р�滅洰鐨勭殑澶囧搧鐢宠
+                //if(Sac.Status_1__c == '娉ㄦ畫' && (Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�')){
+                //    if((Date.today().addDays(-30)>Sac.Deposit_In_Full_Day__c)&&Sac.DeliveryDate__c == null){
+                if((Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�' || Sac.Status_2_Formula__c == '13 寰呭彂璐�' || Sac.Status_2_Formula__c == '14 宸插彂璐�')
+                    && (Sac.DeliveryStatus__c == '鏈氦浠�' || Sac.DeliveryStatus__c == '閮ㄥ垎浜や粯')) {
+                    if((Date.today().addDays(-30) > Sac.Deposit_In_Full_Day__c) && Sac.Backorder_complete_day__c == null) {
+                //modify by lyh 20220606 end 宸茶喘寰呰揣閫昏緫璋冩暣
+                        return 'Fin';
+                    } else {
+                        return '缁忛攢鍟嗗唴绉戣鍗曚笉鍦ㄧ敵璇锋湡鍐咃紝涓嶈兘鐢宠澶囧搧';
+                    }
+                }else{
+                    return '缁忛攢鍟嗗唴绉戣鍗曠姸鎬佷笉绗﹀悎澶囧搧鐢宠璧勬牸锛屼笉鑳界敵璇峰鍝�';
+                }
+            }else if(Sac.Opp_Number__c.contains('SP')){
+                //modify by lyh 20220606 start 宸茶喘寰呰揣閫昏緫璋冩暣 
+                //瀹㈡埛SP璁㈠崟锛屾敞娈嬬姸鎬�2鏄��11浠樺畾閲�-14宸插彂璐р�滆繖涓尯闂翠笖鍙戣揣鐘舵�佷负鈥濇湭浜や粯銆佸拰閮ㄥ垎浜や粯鈥滄椂锛岃嚜浠樻鏃ヨ捣绗�61澶╂湭鐢熸垚鈥濆鎴疯鍗曟渶缁堝彂璐ф棩鈥滄椂锛屾柟鍙互鎻愪氦鈥濆凡璐緟璐р�滅洰鐨勭殑澶囧搧鐢宠
+                //if(Sac.Status_1__c == '娉ㄦ畫' && (Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�')){
+                //    if((Date.today().addDays(-60)>Sac.X30_Deposit_Day__c )&&Sac.DeliveryDate__c == null){
+                if((Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�'||Sac.Status_2_Formula__c=='14 宸插彂璐�')
+                    && (Sac.DeliveryStatus__c == '鏈氦浠�' || Sac.DeliveryStatus__c == '閮ㄥ垎浜や粯')) {
+                    if((Date.today().addDays(-60) > Sac.X30_Deposit_Day__c ) && Sac.Backorder_complete_day__c == null){
+                //modify by lyh 20220606 end 宸茶喘寰呰揣閫昏緫璋冩暣
+                        return 'Fin';
+                    }else{
+                        return '缁忛攢鍟哠P璁㈠崟涓嶅湪鐢宠鏈熷唴锛屼笉鑳界敵璇峰鍝�';
+                    }
+                }else{
+                    return '缁忛攢鍟哠P璁㈠崟鐘舵�佷笉绗﹀悎澶囧搧鐢宠璧勬牸锛屼笉鑳界敵璇峰鍝�';
+                }
+            }else{
+                return '娉ㄦ畫閿�鍞笭閬撶被鍒笉鍦ㄥ彲鐢宠澶囧搧鑼冨洿鍐�';
+            }
+        }else if(Sac.Opportunity__r.Sales_Root__c == 'OCM鐩存帴璨╁2'){
+            if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET')){
+                //modify by lyh 20220606 start 宸茶喘寰呰揣閫昏緫璋冩暣 
+                //娉ㄦ畫鐘舵��2鏄��9宸插綍璁㈠崟鏈粯娆�-14宸插彂璐р�滆繖涓尯闂翠笖鍙戣揣鐘舵�佷负鈥濇湭浜や粯銆佸拰閮ㄥ垎浜や粯鈥滀笖鈥滈攢鍞笭閬撲负鐩撮攢鏃垛�濓紝GIR璁㈠崟鑷鍗曞綍鍏ユ棩璧风31澶�/鏈敓鎴愨�濆鎴疯鍗曟渶缁堝彂璐ф棩鈥滄椂锛屾柟鍙互鎻愪氦鈥濆凡璐緟璐р�滅洰鐨勭殑澶囧搧鐢宠
+                //if(Sac.Status_1__c == '娉ㄦ畫' && (Sac.Status_2_Formula__c == '09 宸插綍鍏ヨ鍗曟湭浠樻'||Sac.Status_2_Formula__c == '10 搴撳瓨宸查鐣欍兓鏈粯娆�'||Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�')){
+                //    if((Date.today().addDays(-30)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){
+                if((Sac.Status_2_Formula__c == '09 宸插綍鍏ヨ鍗曟湭浠樻'||Sac.Status_2_Formula__c == '10 搴撳瓨宸查鐣欍兓鏈粯娆�'||Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�'||Sac.Status_2_Formula__c=='14 宸插彂璐�')
+                    && (Sac.DeliveryStatus__c == '鏈氦浠�' || Sac.DeliveryStatus__c == '閮ㄥ垎浜や粯')){
+                    if((Date.today().addDays(-30) > Sac.FirstApproveDate__c ) && Sac.Backorder_complete_day__c == null) {
+                //modify by lyh 20220606 end 宸茶喘寰呰揣閫昏緫璋冩暣
+                        return 'Fin';
+                    }else{
+                        return 'OCM鐩撮攢鍐呯璁㈠崟涓嶅湪鐢宠鏈熷唴锛屼笉鑳界敵璇峰鍝�';
+                    }
+                }else{
+                    return 'OCM鐩撮攢鍐呯璁㈠崟鐘舵�佷笉绗﹀悎澶囧搧鐢宠璧勬牸锛屼笉鑳界敵璇峰鍝�';
+                }
+            }else if(Sac.Opp_Number__c.contains('SP')){
+                    //modify by lyh 20220606 start 宸茶喘寰呰揣閫昏緫璋冩暣 
+                    //娉ㄦ畫鐘舵��2鏄��9宸插綍璁㈠崟鏈粯娆�-14宸插彂璐р�滆繖涓尯闂翠笖鍙戣揣鐘舵�佷负鈥濇湭浜や粯銆佸拰閮ㄥ垎浜や粯鈥滀笖鈥滈攢鍞笭閬撲负鐩撮攢鏃垛�濓紝SP璁㈠崟61澶╂湭鐢熸垚鈥濆鎴疯鍗曟渶缁堝彂璐ф棩鈥滄椂锛屾柟鍙互鎻愪氦鈥濆凡璐緟璐р�滅洰鐨勭殑澶囧搧鐢宠
+                    //if(Sac.Status_1__c == '娉ㄦ畫' && (Sac.Status_2_Formula__c == '09 宸插綍鍏ヨ鍗曟湭浠樻'||Sac.Status_2_Formula__c == '10 搴撳瓨宸查鐣欍兓鏈粯娆�'||Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�')){
+                    //    if((Date.today().addDays(-60)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){
+                    if((Sac.Status_2_Formula__c == '09 宸插綍鍏ヨ鍗曟湭浠樻'||Sac.Status_2_Formula__c == '10 搴撳瓨宸查鐣欍兓鏈粯娆�'||Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�'||Sac.Status_2_Formula__c=='14 宸插彂璐�')
+                        && (Sac.DeliveryStatus__c == '鏈氦浠�' || Sac.DeliveryStatus__c == '閮ㄥ垎浜や粯')) {
+                        if((Date.today().addDays(-60) > Sac.FirstApproveDate__c ) && Sac.Backorder_complete_day__c == null) {
+                    //modify by lyh 20220606 end 宸茶喘寰呰揣閫昏緫璋冩暣   
+                            return 'Fin';
+                        }else{
+                            return 'OCM鐩撮攢SP璁㈠崟涓嶅湪鐢宠鏈熷唴锛屼笉鑳界敵璇峰鍝�';
+                        }
+                    }else{
+                        return 'OCM鐩撮攢SP璁㈠崟鐘舵�佷笉绗﹀悎澶囧搧鐢宠璧勬牸锛屼笉鑳界敵璇峰鍝�';
+                    }
+                }else{
+                    return '娉ㄦ畫閿�鍞笭閬撶被鍒笉鍦ㄥ彲鐢宠澶囧搧鑼冨洿鍐呫��';
+                }
+        }else{
+            return '閿�鍞笭閬撴湭鐭ワ紝涓嶈兘鏂板缓';
+        }
+     }
+
+
+//bp2
+    //public static String RentalApplyCheckForSA(String raid,String SaID) {
+    //    List<String> ProList = new List<String>();
+    //    if(raid!=null){
+    //        Rental_Apply__c Ra = [select id,
+    //            Product_category__c,
+    //            ProductNameNum1__c,
+    //            ProductNameNum10__c,
+    //            ProductNameNum2__c,
+    //            ProductNameNum3__c,
+    //            ProductNameNum4__c,
+    //            ProductNameNum5__c,
+    //            ProductNameNum6__c,
+    //            ProductNameNum7__c,
+    //            ProductNameNum8__c,
+    //            ProductNameNum9__c
+    //        from
+    //            Rental_Apply__c
+    //        where 
+    //            id=: Raid];
+    //        ProList.add(Ra.ProductNameNum1__c);
+    //         ProList.add(Ra.ProductNameNum2__c);
+    //          ProList.add(Ra.ProductNameNum3__c);
+    //           ProList.add(Ra.ProductNameNum4__c);
+    //            ProList.add(Ra.ProductNameNum5__c);
+    //             ProList.add(Ra.ProductNameNum6__c);
+    //              ProList.add(Ra.ProductNameNum7__c);
+    //               ProList.add(Ra.ProductNameNum8__c);
+    //                ProList.add(Ra.ProductNameNum9__c);
+    //                 ProList.add(Ra.ProductNameNum10__c);
+    //    List<asset> ast = [select
+    //                            id,
+                                
+    //                            Backorder__c 
+    //                        from
+    //                            asset
+    //                        where
+    //                            Backorder__c =:SaID];
+    //    for(asset asl : ast){
+    //        for(String proStr : ProList){
+    //            if(asl.Id == proStr){
+    //                return '浜у搧宸插彂璐э紝涓嶈兘鐢宠澶囧搧';
+    //            }
+    //        }
+    //    }
+    //    }
+        
+    
+    //    Statu_Achievements__c Sac = [select id,
+    //        SalesChannel__c,
+    //        Status_1__c,
+    //        Status_2_Formula__c,
+    //        Opp_Number__c,
+    //        CreatedDate,
+    //        FirstApproveDate__c,
+    //        Opportunity__r.Sales_Root__c,
+    //        X30_Deposit_Day__c,
+    //        Deposit_In_Full_Day__c,
+    //        DeliveryDate__c
+    //    from Statu_Achievements__c where id = :SaID];
+        
+        
+        
+    //    if(Sac.Opportunity__r.Sales_Root__c == '璨╁2搴�'){
+    //        if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET') ){
+    //            if(Sac.Status_1__c == '娉ㄦ畫' && (Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�')){
+    //                if((Date.today().addDays(-30)>Sac.Deposit_In_Full_Day__c)&&Sac.DeliveryDate__c == null){
+    //                    return 'Fin';
+    //                }else{
+    //                    return '缁忛攢鍟嗗唴绉戣鍗曚笉鍦ㄧ敵璇锋湡鍐咃紝涓嶈兘鐢宠澶囧搧';
+    //                }
+    //            }else{
+    //                return '缁忛攢鍟嗗唴绉戣鍗曠姸鎬佷笉绗﹀悎澶囧搧鐢宠璧勬牸锛屼笉鑳界敵璇峰鍝�';
+    //            }
+    //        }else if(Sac.Opp_Number__c.contains('SP')){
+    //            if(Sac.Status_1__c == '娉ㄦ畫' && (Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�')){
+    //                if((Date.today().addDays(-60)>Sac.X30_Deposit_Day__c )&&Sac.DeliveryDate__c == null){
+    //                    return 'Fin';
+    //                }else{
+    //                    return '缁忛攢鍟哠P璁㈠崟涓嶅湪鐢宠鏈熷唴锛屼笉鑳界敵璇峰鍝�';
+    //                }
+    //            }else{
+    //                return '缁忛攢鍟哠P璁㈠崟鐘舵�佷笉绗﹀悎澶囧搧鐢宠璧勬牸锛屼笉鑳界敵璇峰鍝�';
+    //            }
+    //        }else{
+    //            return 'Denied';
+    //        }
+    //    }else if(Sac.Opportunity__r.Sales_Root__c == 'OCM鐩存帴璨╁2'){
+    //        if(Sac.Opp_Number__c.contains('GI')||Sac.Opp_Number__c.contains('BF')||Sac.Opp_Number__c.contains('ET')){
+    //            if(Sac.Status_1__c == '娉ㄦ畫' && (Sac.Status_2_Formula__c == '09 宸插綍鍏ヨ鍗曟湭浠樻'||Sac.Status_2_Formula__c == '10 搴撳瓨宸查鐣欍兓鏈粯娆�'||Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�')){
+    //                if((Date.today().addDays(-30)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){
+    //                    return 'Fin';
+    //                }else{
+    //                    return 'OCM鐩撮攢鍐呯涓嶅湪鐢宠鏈熷唴锛屼笉鑳界敵璇峰鍝�';
+    //                }
+    //            }else{
+    //                 return 'OCM鐩撮攢鍐呯璁㈠崟鐘舵�佷笉绗﹀悎澶囧搧鐢宠璧勬牸锛屼笉鑳界敵璇峰鍝�';
+    //            }
+    //        }else if(Sac.Opp_Number__c.contains('SP')){
+    //            if(Sac.Status_1__c == '娉ㄦ畫' && (Sac.Status_2_Formula__c == '09 宸插綍鍏ヨ鍗曟湭浠樻'||Sac.Status_2_Formula__c == '10 搴撳瓨宸查鐣欍兓鏈粯娆�'||Sac.Status_2_Formula__c == '11 宸茶璐с兓浠樿閲�'||Sac.Status_2_Formula__c == '12 宸茶璐с兓浠樺叏娆�'||Sac.Status_2_Formula__c == '13 寰呭彂璐�')){
+    //                if((Date.today().addDays(-60)>Sac.FirstApproveDate__c )&&Sac.DeliveryDate__c == null){
+    //                    return 'Fin';
+    //                }else{
+    //                    return '鐩撮攢SP璁㈠崟涓嶅湪鐢宠鏈熷唴锛屼笉鑳界敵璇峰鍝�';
+    //                }
+    //            }else{
+    //                 return 'OCM鐩撮攢SP璁㈠崟鐘舵�佷笉绗﹀悎澶囧搧鐢宠璧勬牸锛屼笉鑳界敵璇峰鍝�';
+    //            }
+    //        }else{
+    //            return 'Fin';
+    //        }
+    //    }else{
+    //        return '閿�鍞笭閬撴湭鐭ワ紝涓嶈兘鏂板缓';
+    //    }
+    //}
+
+// bp2
+    ///**
+    //澶囧搧鏄惁鍙互缁х画鎿嶄綔鐨勭鎺�
+    //*/
+    //public static String rentalContiuneCheck(List<Rental_Apply__c> newList,Map<Id, Rental_Apply__c> oldMap){
+    //    List<String> RaidList = new List<String>();
+    //    for(Rental_Apply__c ra : newList){
+    //        RaidList.add(ra.id);
+    //    }
+    //    List<Rental_Apply__c> RaTarList = [select Campaign__c,Repair__c,
+    //                                            Campaign__r.Status,Repair__r.Repair_Final_Inspection_Date__c,Repair__r.Repair_Shipped_Date__c
+    //                                        from Rental_Apply__c 
+    //                                        where id=:RaidList];
+    //    for(Rental_Apply__c RaTar : RaTarList){
+    //    String RsStr = '';
+    //        if( RaTar.Campaign__r.Status == '鍙栨秷'||
+    //                RaTar.Campaign__r.Status == '鍙栨秷鐢宠涓�'||
+    //                    RaTar.Campaign__r.Status == '宸叉彁浜ゆ姤鍛�'||
+    //                        RaTar.Campaign__r.Status == '宸茬粨鏉�'){
+    //            RsStr = RentalApplyWebService.rentalContiuneinfoCheck(newList,oldMap);
+    //            if(RsStr == 'Denied'){
+    //                return '瀛︿細宸茬粨鏉燂紝鐢宠鍗曚笉鑳界户缁搷浣滀簡';
+    //            }else{
+    //                return 'Fin';
+    //            }
+                
+    //        }else if(   RaTar.Repair__r.Repair_Final_Inspection_Date__c!=null){
+    //            RsStr = RentalApplyWebService.rentalContiuneinfoCheck(newList,oldMap);
+    //            if(RsStr == 'Denied'){
+    //                return '瀛樺湪淇悊鏈�缁堟娴嬫棩锛岀敵璇峰崟涓嶈兘缁х画浜�';
+    //            }else{
+    //                return 'Fin';
+    //            }
+    //        }else if(   RaTar.Repair__r.Repair_Shipped_Date__c!=null){
+    //            RsStr = RentalApplyWebService.rentalContiuneinfoCheck(newList,oldMap);
+    //            if(RsStr == 'Denied'){
+    //                return '瀛樺湪RC淇悊杩旈�佹棩锛岀敵璇峰崟涓嶈兘缁х画浜�';
+    //            }else{
+    //                return 'Fin';
+    //            }
+    //        }else{
+    //            return 'Fin';
+    //        }
+    //    }
+    //    return 'Fin';
+    //}
+//bp2
+//    public static String rentalContiuneinfoCheck(List<Rental_Apply__c> newList,Map<Id, Rental_Apply__c> oldMap){
+//        for(Rental_Apply__c Rac : newList){
+//        if(
+//    //bp2  Trigger.oldMap.get(Rac.Id).get('HP_received_ng_num__c') != Rac.HP_received_ng_num__c ||
+//            Trigger.oldMap.get(Rac.Id).get('StockDown_ng_num__c') != Rac.StockDown_ng_num__c ||
+//             Trigger.oldMap.get(Rac.Id).get('Asset_return_time__c') != Rac.Asset_return_time__c ||
+//              Trigger.oldMap.get(Rac.Id).get('Count_Extend__c') != Rac.Count_Extend__c ||
+//                Trigger.oldMap.get(Rac.Id).get('Max_Extend_workday__c') != Rac.Max_Extend_workday__c ||
+//    //bp2        Trigger.oldMap.get(Rac.Id).get('Lost_item_ng_num__c') != Rac.Lost_item_ng_num__c ||
+//                  Trigger.oldMap.get(Rac.Id).get('Lost_item_finish__c') != Rac.Lost_item_finish__c ||
+//                   Trigger.oldMap.get(Rac.Id).get('Last_Assigned_Date__c') != Rac.Last_Assigned_Date__c ||
+//                    Trigger.oldMap.get(Rac.Id).get('Return_dadeline_final__c') != Rac.Return_dadeline_final__c ||
+//                     Trigger.oldMap.get(Rac.Id).get('Rental_Apply_Equipment_Set_Cnt__c') != Rac.Rental_Apply_Equipment_Set_Cnt__c ||
+//                      Trigger.oldMap.get(Rac.Id).get('Pre_inspection_ng_num__c') != Rac.Pre_inspection_ng_num__c ||
+//                       Trigger.oldMap.get(Rac.Id).get('Shippment_ng_num__c') != Rac.Shippment_ng_num__c ||
+//                        Trigger.oldMap.get(Rac.Id).get('ShelfUp_ng_num__c') != Rac.ShelfUp_ng_num__c ||
+//                         Trigger.oldMap.get(Rac.Id).get('Loaner_received_ng_num__c') != Rac.Loaner_received_ng_num__c ||
+//                          Trigger.oldMap.get(Rac.Id).get('Arrival_wh_cnt__c') != Rac.Arrival_wh_cnt__c ||
+//                           Trigger.oldMap.get(Rac.Id).get('Shippment_loaner_cnt__c') != Rac.Shippment_loaner_cnt__c ||
+//                            Trigger.oldMap.get(Rac.Id).get('Shipment_requested_cnt__c') != Rac.Shipment_requested_cnt__c ||
+//                             Trigger.oldMap.get(Rac.Id).get('Pre_inspection_ng_cnt2__c') != Rac.Pre_inspection_ng_cnt2__c ||
+//                              Trigger.oldMap.get(Rac.Id).get('Pre_inspection_ng_cnt__c') != Rac.Pre_inspection_ng_cnt__c ||
+//                               Trigger.oldMap.get(Rac.Id).get('Shippment_loaner_time__c') != Rac.Shippment_loaner_time__c ||
+//                                Trigger.oldMap.get(Rac.Id).get('Asset_loaner_closed_date__c') != Rac.Asset_loaner_closed_date__c ||
+//                                 Trigger.oldMap.get(Rac.Id).get('Asset_loaner_start_date__c') != Rac.Asset_loaner_start_date__c ||
+//                                  Trigger.oldMap.get(Rac.Id).get('Disposal_num__c') != Rac.Disposal_num__c ||
+//                                   Trigger.oldMap.get(Rac.Id).get('Asset_return_ng_num__c') != Rac.Asset_return_ng_num__c ||
+//                                    Trigger.oldMap.get(Rac.Id).get('Received_Confirm_NG_amount__c') != Rac.Received_Confirm_NG_amount__c ||
+//                                     Trigger.oldMap.get(Rac.Id).get('Received_Confirm_NG_Not_Return__c') != Rac.Received_Confirm_NG_Not_Return__c ||
+////bp2                                 Trigger.oldMap.get(Rac.Id).get('Loaner_received_time__c') != Rac.Loaner_received_time__c ||
+//                                       Trigger.oldMap.get(Rac.Id).get('Return_Track_Company__c') != Rac.Return_Track_Company__c ||
+//                                        Trigger.oldMap.get(Rac.Id).get('Return_Distrubutor_Method__c') != Rac.Return_Distrubutor_Method__c ||
+//                                         Trigger.oldMap.get(Rac.Id).get('Return_Trake_Staff__c') != Rac.Return_Trake_Staff__c ||
+//                                          Trigger.oldMap.get(Rac.Id).get('Return_Track_Number__c') != Rac.Return_Track_Number__c ||
+//                                          Trigger.oldMap.get(Rac.Id).get('HP_received_sign_day__c') != Rac.HP_received_sign_day__c ||
+//                                         Trigger.oldMap.get(Rac.Id).get('HP_received_sign_rich__c') != Rac.HP_received_sign_rich__c ||
+//                                        Trigger.oldMap.get(Rac.Id).get('HP_received_sign_text__c') != Rac.HP_received_sign_text__c ||
+//                                       Trigger.oldMap.get(Rac.Id).get('HP_received_sign_NG__c') != Rac.HP_received_sign_NG__c ||
+//                                      Trigger.oldMap.get(Rac.Id).get('HP_received_sign_NG_Reason__c') != Rac.HP_received_sign_NG_Reason__c ||
+//                                     Trigger.oldMap.get(Rac.Id).get('AssetManageConfirm__c') != Rac.AssetManageConfirm__c ||
+//                                    Trigger.oldMap.get(Rac.Id).get('Loaner_cancel_request__c') != Rac.Loaner_cancel_request__c ||
+//                                   Trigger.oldMap.get(Rac.Id).get('Status__c') != Rac.Status__c 
+//        ){
+//        return 'Fin';
+//    }
+//}   
+//    return 'Denied';
+//    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/RentalApplyWebService.cls-meta.xml b/force-app/main/default/classes/RentalApplyWebService.cls-meta.xml
new file mode 100644
index 0000000..94f6f06
--- /dev/null
+++ b/force-app/main/default/classes/RentalApplyWebService.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>40.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/SubmitExtensionApprovalProcessController.cls b/force-app/main/default/classes/SubmitExtensionApprovalProcessController.cls
new file mode 100644
index 0000000..af0b518
--- /dev/null
+++ b/force-app/main/default/classes/SubmitExtensionApprovalProcessController.cls
@@ -0,0 +1,42 @@
+public with sharing class SubmitExtensionApprovalProcessController {
+
+    public SubmitExtensionApprovalProcessController() {
+        
+    }
+
+
+    @AuraEnabled
+    public static InitData init(String recordId) {
+        InitData res = new InitData();
+
+        try {
+            Rental_Apply__c rac = [SELECT Id, ExtensionStatus__c, demo_purpose2__c, AgreementBorrowingExtensionDate__c, Return_dadeline_final__c from Rental_Apply__c where Id = :recordId];
+
+            res.Id = rac.Id;
+            res.ExtensionStatus = rac.ExtensionStatus__c;
+            res.RootRentalApply = rac.Root_Rental_Apply__c;
+            res.demoPurpose2 = rac.demo_purpose2__c;
+            res.AgreementBorrowingExtensionDate = rac.AgreementBorrowingExtensionDate__c;
+            res.ReturnDadelineFinal = rac.Return_dadeline_final__c;
+        }
+        catch (Exception e) {
+            System.debug(LoggingLevel.INFO, '****e:' + e);
+        }
+        return res;
+    }
+
+    public class InitData {
+        @AuraEnabled
+        public String Id;
+        @AuraEnabled
+        public String ExtensionStatus;
+        @AuraEnabled
+        public String RootRentalApply;
+        @AuraEnabled
+        public String demoPurpose2;
+        @AuraEnabled
+        public Date AgreementBorrowingExtensionDate;
+        @AuraEnabled
+        public Date ReturnDadelineFinal;
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/SubmitExtensionApprovalProcessController.cls-meta.xml b/force-app/main/default/classes/SubmitExtensionApprovalProcessController.cls-meta.xml
new file mode 100644
index 0000000..9662499
--- /dev/null
+++ b/force-app/main/default/classes/SubmitExtensionApprovalProcessController.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>50.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
\ No newline at end of file
diff --git a/force-app/main/default/classes/UpdateTenderInformationBatch.cls b/force-app/main/default/classes/UpdateTenderInformationBatch.cls
new file mode 100644
index 0000000..5e34510
--- /dev/null
+++ b/force-app/main/default/classes/UpdateTenderInformationBatch.cls
@@ -0,0 +1,1310 @@
+/*2021-05-08  mzy
+* 鏇存柊鎷涙爣淇℃伅鐨勮浠风姸鎬佸拰璇环鐨勬暟閲�
+* 鏇存柊鎷涙爣淇℃伅鐨�5涓尰闄�
+* 褰撳尰闄㈠彂鐢熷彉鍖�/鎷涙姇鏍囬」鐩甇CSM鐪佸彂鐢熷彉鍖栨椂,绌烘洿鏂颁竴涓嬫嫑鎶曟爣
+*/
+global class UpdateTenderInformationBatch implements Database.Batchable<sObject>, Database.Stateful {
+
+    Boolean IsNeedExecute = false;
+    String tempTenderId ='';
+    Boolean IsOnlyTrue = true;
+    List<String> tempTenderList = new List<String>(); 
+
+    //閭欢淇℃伅
+    List<String> emailMessages = new List<String>();
+
+    //鎷涙姇鏍�: 鎶ラ敊鐨勬嫑鎶曟爣Id
+    String TenderlogStr = '鎷涙爣椤圭洰 : ';
+
+    //鎷涙姇鏍�: 鎶ラ敊淇℃伅
+    String TendererrorStr = '';
+
+    //鎷涙姇鏍�: 鎬讳欢鏁�
+    Integer TendertotalCount = 0;
+
+    //鎷涙姇鏍�: 澶辫触浠舵暟
+    Integer TenderfailedCount = 0; 
+
+    //鎵ц绗﹀悎鏉′欢鐨勬寚瀹氭嫑鎶曟爣椤圭洰
+    global UpdateTenderInformationBatch(String tempTenderId) {
+        this.tempTenderId = tempTenderId;
+    }
+    //鎵ц鎸囧畾鎷涙爣椤圭洰閲岀鍚堟潯浠剁殑鎷涙姇鏍囬」鐩�
+    global UpdateTenderInformationBatch(List<String> tempTenderList) {
+        this.tempTenderList = tempTenderList;
+    }
+    //澶勭悊鍘嗗彶鏁版嵁  IsOnlyTrue = false  鎵ц鎵�鏈夌殑鎷涙爣椤圭洰
+    global UpdateTenderInformationBatch(String tempOppId, Boolean IsOnlyTrue) {
+        this.IsOnlyTrue = IsOnlyTrue;
+    }
+    //  IsOnlyTrue = false 鍙互鎵嬪姩 鏃犳潯浠舵墽琛屽鏉℃嫑鎶曟爣椤圭洰
+    global UpdateTenderInformationBatch(String tempOppId, Boolean IsOnlyTrue,List<String> tempTenderList) {
+        this.IsOnlyTrue = IsOnlyTrue;
+        this.tempTenderList = tempTenderList;
+    }
+    
+    //Batch 閾� 鏃朵娇鐢�
+    global UpdateTenderInformationBatch(Boolean IsNeedExecute) {
+        this.IsNeedExecute = IsNeedExecute;
+    }
+
+    global UpdateTenderInformationBatch() {
+        
+    }
+
+    global Database.QueryLocator start(Database.BatchableContext bc) {
+        String query = 'SELECT Id,IsBid__c,NotBidApprovalStatus__c,IsReactionOpp__c,Hospital__c,Hospital1__c,Hospital2__c,Hospital3__c,Hospital4__c, ';
+               query += 'Hospital__r.Assume_Change__c,Hospital1__r.Assume_Change__c,Hospital2__r.Assume_Change__c,Hospital3__r.Assume_Change__c,Hospital4__r.Assume_Change__c ';
+               query += 'FROM Tender_information__c ';
+            if(IsOnlyTrue){               
+               query += 'WHERE  ((IsReactionOpp__c = true ) '; 
+               //2021-07-29 mzy  update 褰撳尰闄㈠彂鐢熷彉鍖�/鎷涙姇鏍囬」鐩甇CSM鐪佸彂鐢熷彉鍖栨椂,绌烘洿鏂颁竴涓嬫嫑鎶曟爣 start
+               // 2022-04-08 ssm SWAG-CC58ME 澧炲姞鎵�鏈変汉鏃犳晥鐨勫垽鏂� start 
+               query += 'OR (Owner.IsActive = false) ';
+               // 2022-04-08 ssm SWAG-CC58ME end
+               query += 'OR (BiddingOCSMAdministration__c = true) OR (Hospital__r.Assume_Change__c = true) '; 
+               query += 'OR (Hospital1__r.Assume_Change__c = true) OR (Hospital2__r.Assume_Change__c = true) '; 
+               query += 'OR (Hospital3__r.Assume_Change__c = true) OR (Hospital4__r.Assume_Change__c = true) )'; 
+               //2021-07-29  mzy update 褰撳尰闄㈠彂鐢熷彉鍖�/鎷涙姇鏍囬」鐩甇CSM鐪佸彂鐢熷彉鍖栨椂,绌烘洿鏂颁竴涓嬫嫑鎶曟爣 end
+               // DepartmentChanges__c 鍏ㄩ儴鎹㈡垚 Assume_Change__c 
+            }   
+            if(String.isNotBlank(this.tempTenderId)){
+                if(IsOnlyTrue){
+                    query += ' AND ';
+                }else {
+                    query += ' Where ';
+                }
+               query += 'Id = :tempTenderId ';
+            }
+            if(tempTenderList.size()>0){
+                if(IsOnlyTrue){
+                    query += ' AND ';
+                }else {
+                    query += ' Where ';
+                }
+
+               query += ' Id In :tempTenderList ';
+            }
+
+            System.debug('sql璇彞锛�'+query);
+        return Database.getQueryLocator(query);
+    }
+
+    global void execute(Database.BatchableContext BC, list<Tender_information__c> TenderList) {
+        //瀹氫箟List灏佽闇�瑕佺┖鏇存柊鐨勬嫑鎶曟爣椤圭洰
+        List<Tender_information__c> EmptyUpdateTenderList = new List<Tender_information__c>();
+        Map<String,Tender_information__c> EmptyUpdateTenderMap = new Map<String,Tender_information__c>();
+ 
+        //瀹氫箟List灏佽闇�瑕佹洿鏂扮殑鎷涙爣椤圭洰
+        List<Tender_information__c> updateTenderList = new List<Tender_information__c>();
+        //瀹氫箟Map淇濆瓨鎷涙姇鏍囦俊鎭� 
+        Map<String,Tender_information__c> tenderMap = new Map<String,Tender_information__c>();
+        //瀹氫箟List灏佽鎵�鏈夎浠风殑鎷涙爣椤圭洰Id
+        Set<String> BiddingProjectID = new Set<String>();
+        for(Tender_information__c tempTender : TenderList){
+            //2021-07-29   mzy  update  褰撳尰闄㈠彂鐢熷彉鍖�/鎷涙姇鏍囬」鐩甇CSM鐪佸彂鐢熷彉鍖栨椂,绌烘洿鏂颁竴涓嬫嫑鎶曟爣  start
+            if(tempTender.IsReactionOpp__c){
+                //濡傛灉鏄�  鏄惁鍙嶅簲璇环 涓� true 鍒欓渶瑕佽繘琛� 鍙嶅簲璇环 ,鍚﹀垯灏辩┖鏇存柊涓�涓�                
+                BiddingProjectID.add(tempTender.Id);
+                tenderMap.put( String.valueOf( tempTender.Id ).substring(0,15) ,tempTender);
+            }else {
+                //闇�瑕佺┖鏇存柊鐨勬嫑鎶曟爣
+                EmptyUpdateTenderList.add(tempTender);
+                EmptyUpdateTenderMap.put(String.valueOf( tempTender.Id ).substring(0,15) ,tempTender);
+            }
+            //2021-07-29  mzy  update  褰撳尰闄㈠彂鐢熷彉鍖�/鎷涙姇鏍囬」鐩甇CSM鐪佸彂鐢熷彉鍖栨椂,绌烘洿鏂颁竴涓嬫嫑鎶曟爣   end
+        }
+        //2021-07-29  mzy  update  绌烘洿鏂板け璐ョ殑璇濅笉娓呯┖鍖婚櫌鐨勬爣璇�  start
+        // System.debug('EmptyUpdateTenderList: ' + EmptyUpdateTenderList);
+        if(EmptyUpdateTenderList.size()>0){
+            //绌烘洿鏂版嫑鎶曟爣
+            // fxk 2021/9/28 Star
+            StaticParameter.EscapeOtherUpdateTenOwner = false;
+            Database.SaveResult[] EmptySaveTenderResult = Database.update(EmptyUpdateTenderList,false);
+            StaticParameter.EscapeOtherUpdateTenOwner = true;
+            // fxk 2021/9/28 End
+            //鏇存柊鎴愬姛鐨勬嫑鎶曟爣闇�瑕佸皢鍖婚櫌鐨勬爣璇嗘竻绌�
+            //淇濆瓨鏇存柊澶辫触鐨勫尰闄�
+            Set<String> faildHospIdSet = new Set<String>(); 
+            //鏌ョ湅澶辫触鐨勫尰闄�
+            for(Integer i = 0;i<EmptySaveTenderResult.size();i++){
+                if(!EmptySaveTenderResult.get(i).isSuccess()){
+                    String faildTenderId = String.valueOf(EmptyUpdateTenderList.get(i).id).substring(0,15);
+                    Tender_information__c  faildtender = EmptyUpdateTenderMap.get(faildTenderId);
+
+                    if(faildtender.Hospital__c != null && faildtender.Hospital__r.Assume_Change__c == true){                        
+                        faildHospIdSet.add(faildtender.Hospital__c);
+                    }
+                    if(faildtender.Hospital1__c != null && faildtender.Hospital1__r.Assume_Change__c == true){                        
+                        faildHospIdSet.add(faildtender.Hospital1__c);
+                    }
+                    if(faildtender.Hospital2__c != null&& faildtender.Hospital2__r.Assume_Change__c == true){                        
+                        faildHospIdSet.add(faildtender.Hospital2__c);
+                    }
+                    if(faildtender.Hospital3__c != null&& faildtender.Hospital3__r.Assume_Change__c == true){                        
+                        faildHospIdSet.add(faildtender.Hospital3__c);
+                    }
+                    if(faildtender.Hospital4__c != null&& faildtender.Hospital4__r.Assume_Change__c == true){                        
+                       faildHospIdSet.add(faildtender.Hospital4__c);
+                    }
+                }
+            }
+            //鏌ョ湅闇�瑕佹竻绌烘爣璇嗙殑鍖婚櫌id
+            Set<String> HospitalId = new Set<String>();
+            //闇�瑕佹竻绌烘爣璇嗙殑鍖婚櫌i
+            List<Account> needUpdateHPList = new  List<Account>();
+            for(Integer i = 0;i<EmptySaveTenderResult.size();i++){
+                String tenderId = String.valueOf(EmptyUpdateTenderList.get(i).id).substring(0,15);
+                Tender_information__c  tender = EmptyUpdateTenderMap.get(tenderId);
+
+                //濡傛灉澶辫触鐨凷et閲屾病鏈夎繖涓尰闄�,鍒欐竻绌鸿繖涓尰闄㈢殑鏍囪瘑
+                if(tender.Hospital__c != null && tender.Hospital__r.Assume_Change__c == true
+                    && (!faildHospIdSet.contains(tender.Hospital__c)) ){  
+                    HospitalId.add(tender.Hospital__c);
+                }
+                if(tender.Hospital1__c != null && tender.Hospital1__r.Assume_Change__c == true
+                    && (!faildHospIdSet.contains(tender.Hospital1__c)) ){  
+                    HospitalId.add(tender.Hospital1__c);
+                }
+                if(tender.Hospital2__c != null && tender.Hospital2__r.Assume_Change__c == true
+                    && (!faildHospIdSet.contains(tender.Hospital2__c)) ){
+                    HospitalId.add(tender.Hospital2__c); 
+                }
+                if(tender.Hospital3__c != null && tender.Hospital3__r.Assume_Change__c == true
+                    && (!faildHospIdSet.contains(tender.Hospital3__c)) ){
+                    HospitalId.add(tender.Hospital3__c);  
+                }
+                if(tender.Hospital4__c != null && tender.Hospital4__r.Assume_Change__c == true
+                    && (!faildHospIdSet.contains(tender.Hospital4__c)) ){
+                    HospitalId.add(tender.Hospital4__c);
+                }
+            }
+
+            Iterator<String> HospitalIds = HospitalId.iterator();
+
+            while(HospitalIds.hasNext()){
+                Account acc = new Account();
+                acc.id = HospitalIds.next();
+                acc.Assume_Change__c = false;
+                needUpdateHPList.add(acc);  
+            }
+
+            if(needUpdateHPList.size()>0){
+                 update needUpdateHPList;
+            }
+        }
+        //2021-07-29  mzy  update  绌烘洿鏂板け璐ョ殑璇濅笉娓呯┖鍖婚櫌鐨勬爣璇�  end
+  
+        //2021-07-29  mzy  update   濡傛灉鏈夐渶瑕佸弽搴旇浠风殑鍦ㄨ蛋涓嬮潰閫昏緫   start
+        if(BiddingProjectID.size()> 0){
+
+            //鏌ヨ鎷涙爣椤圭洰涓嬬殑鎵�鏈夎浠�
+            Map<String,List<Opportunity>> BiddingProjectOppMap = findTenderRelativeOpp(BiddingProjectID);
+
+            //璁$畻璇环鏁伴噺
+            List<Tender_information__c> updateTenderNumList = updateOpportunityNum(BiddingProjectOppMap);
+
+            //璁$畻璇环鐘舵��
+            List<Tender_information__c> updateTenderNumStatusList = updateOpportunityStatus(BiddingProjectOppMap,updateTenderNumList,tenderMap);
+
+
+            updateTenderList.addAll(updateTenderNumStatusList);
+
+        }
+
+        //鏇存柊鎷涙姇鏍� 璇环鏁伴噺鍜岀姸鎬�
+        if(updateTenderList.size()>0){
+            //涓�涓嫑鎶曟爣椤圭洰鏇存柊澶辫触
+            List<String> failedTenderList = new List<String>();
+            Database.SaveResult[] saveTenderResults = Database.update(updateTenderList,false);
+            //鎷涙姇鏍囬」鐩殑鎬绘暟
+            TendertotalCount += saveTenderResults.size();
+
+            for(Integer i = 0;i<saveTenderResults.size();i++) {
+                if(!saveTenderResults.get(i).isSuccess() ){ 
+                    /*if(TenderlogStr.equals('')){
+                        TenderlogStr = '' ;
+                    } */                    
+                    TenderlogStr += updateTenderList.get(i).id +' ,';
+                    //String statusCode = String.ValueOf(saveTenderResults.get(i).getErrors()[0]).split(';')[2].split('=')[1];
+                    //String errorMsg = String.ValueOf(saveTenderResults.get(i).getErrors()[0]).split(';')[1].split('=')[1];
+                    TendererrorStr += '澶辫触鎷涙爣椤圭洰 :'+updateTenderList.get(i).id+'  澶辫触鍘熷洜:'+ String.ValueOf(saveTenderResults.get(i).getErrors()[0]).split(';')[2].split('=')[1] 
+                    +' : '+String.ValueOf(saveTenderResults.get(i).getErrors()[0]).split(';')[1].split('=')[1] + '\r\n';
+                    TenderfailedCount++ ;
+                    //灏嗘洿鏂板け璐ョ殑鎷涙姇鏍囬」鐩坊鍔犳帀闆嗗悎涓�
+                    failedTenderList.add(String.valueOf( updateTenderList.get(i).id ).substring(0,15));
+                }
+            }
+            //鏇存柊鎴愬姛鍚�,娓呴櫎鎷涙姇鏍囩殑鍙嶅簲璇环鏍囪瘑
+            List<Tender_information__c> successTenderList = new List<Tender_information__c>();
+            for(Tender_information__c tempTender:TenderList){
+                if(failedTenderList.contains( String.valueOf( tempTender.id ).substring(0,15)  )){
+                    //鏇存柊澶辫触,鍒欎笉娓呴櫎鏍囪瘑
+                }else {
+                    //鏇存柊鎴愬姛,娓呴櫎鏍囪瘑
+                    tempTender.IsReactionOpp__c = false;
+                    successTenderList.add(tempTender);
+                }
+            }
+
+            //娓呴櫎鏍囪瘑
+            if(successTenderList.size()>0){
+                update successTenderList;
+            }
+        }
+        // 2021-07-29  mzy  update   濡傛灉鏈夐渶瑕佸弽搴旇浠风殑鍦ㄨ蛋涓嬮潰閫昏緫   end
+    }
+
+    global void finish(Database.BatchableContext BC) {
+
+        UpdateTenderInformationSchedule.assignOneHours();
+        BatchIF_Log__c TenderIfLog = new BatchIF_Log__c();
+        TenderIfLog.Type__c = 'UpdateTenderInformationBatchByTenderErrorLog';
+
+        if (TenderlogStr.length() > 60000) {
+            TenderlogStr = TenderlogStr.substring(0, 60000);
+        }
+        TenderIfLog.Log__c = TenderlogStr;
+        TenderIfLog.Log__c += '\n end';
+        if (TendererrorStr.length() > 60000) {
+            TenderIfLog.ErrorLog__c = TendererrorStr.substring(0, 60000);
+        } else {
+            TenderIfLog.ErrorLog__c = TendererrorStr.substring(0, TendererrorStr.length());
+        }
+
+        insert TenderIfLog;
+
+        emailMessages.add('澶辫触鏃ュ織ID涓猴細' + TenderIfLog.Id + '\r\n澶辫触淇℃伅:\r\n'+TendererrorStr);
+
+        //鍙戦�侀偖浠�
+        sendFieldEmail();
+
+    }
+    //鎵归噺鏇存柊鎷涙姇鏍囩殑璇环淇℃伅
+    @AuraEnabled
+    WebService static String updateOpportunityInformation(List<String> TenderIdList){
+        //瀛樺偍閿欒淇℃伅
+        String errorMessage = '';
+        //鐩殑 : 濡傛灉Batch鎵ц澶辫触,鍒欐暣浣搑ollback,鏍囪瘑涓嶈繘琛屾竻闄�
+        //瀹氫箟List灏佽闇�瑕佹洿鏂扮殑鎷涙爣椤圭洰
+        List<Tender_information__c> updateTenderList = new List<Tender_information__c>();
+        try{
+
+            Set<String> BiddingProjectID = new Set<String>();
+            for(String TenderId:TenderIdList){                  
+                BiddingProjectID.add(TenderId);
+            }
+            //鏌ヨ鎷涙姇鏍囦俊鎭�
+            List<Tender_information__c> tenderList = [SELECT Id,IsBid__c,NotBidApprovalStatus__c FROM Tender_information__c where id in :BiddingProjectID];
+            Map<String,Tender_information__c> tenderMap = new Map<String,Tender_information__c>();
+            for(Tender_information__c tempTender :tenderList){
+                tenderMap.put( String.valueOf( tempTender.Id ).substring(0,15) ,tempTender);
+            }
+
+            //鏌ヨ鎷涙爣椤圭洰涓嬬殑鎵�鏈夎浠�
+            Map<String,List<Opportunity>> BiddingProjectOppMap = findTenderRelativeOpp(BiddingProjectID);
+
+            //璁$畻璇环鏁伴噺
+            List<Tender_information__c> updateTenderNumList = updateOpportunityNum(BiddingProjectOppMap);
+
+            //璁$畻璇环鐘舵��
+            List<Tender_information__c> updateTenderNumStatusList = updateOpportunityStatus(BiddingProjectOppMap,updateTenderNumList,tenderMap);
+
+            updateTenderList.addAll(updateTenderNumStatusList);
+
+            //鏇存柊
+            if(updateTenderList.size()>0){
+                List<String> failedTenderList = new List<String>();
+                // add 鍙湁绌烘洿鏂版嫑鎶曟爣鐨勬椂鍊欒蛋鎷涙姇鏍囪Е鍙戝櫒 fxk 2021/9/28 Star
+                StaticParameter.EscapeOtherUpdateTenOwner = false;     
+                Database.SaveResult[] saveTenderResults = Database.update(updateTenderList,false);
+                StaticParameter.EscapeOtherUpdateTenOwner = true; 
+                // add 鍙湁绌烘洿鏂版嫑鎶曟爣鐨勬椂鍊欒蛋鎷涙姇鏍囪Е鍙戝櫒 fxk 2021/9/28 End
+
+                for(Integer i = 0;i<saveTenderResults.size();i++) {
+                    if(!saveTenderResults.get(i).isSuccess()){ 
+                        //String statusCode = String.ValueOf(saveTenderResults.get(i).getErrors()[0]).split(';')[2].split('=')[1];
+                        //String errorMsg = String.ValueOf(saveTenderResults.get(i).getErrors()[0]).split(';')[1].split('=')[1];
+                        errorMessage += '澶辫触鎷涙爣椤圭洰 :'+updateTenderList.get(i).id+'  澶辫触鍘熷洜:'
+                        + String.ValueOf(saveTenderResults.get(i).getErrors()[0]).split(';')[2].split('=')[1] 
+                        +' : '+String.ValueOf(saveTenderResults.get(i).getErrors()[0]).split(';')[1].split('=')[1] + '\r\n';
+                        //灏嗘洿鏂板け璐ョ殑鎷涙姇鏍囬」鐩坊鍔犳帀闆嗗悎涓�
+                        failedTenderList.add(String.valueOf( updateTenderList.get(i).id ).substring(0,15));
+                    }
+                }
+
+                //鏇存柊鎴愬姛鍚�,娓呴櫎鎷涙姇鏍囩殑鍙嶅簲璇环鏍囪瘑
+                List<Tender_information__c> successTenderList = new List<Tender_information__c>();
+                for(String tempTenderId:TenderIdList){
+                    if(failedTenderList.contains( String.valueOf( tempTenderId ).substring(0,15)  )){
+                        //鏇存柊澶辫触,鍒欎笉娓呴櫎鏍囪瘑
+                    }else {
+                        //鏇存柊鎴愬姛,娓呴櫎鏍囪瘑
+                        Tender_information__c tempTender = new Tender_information__c();
+                        tempTender.Id = String.valueOf( tempTenderId ).substring(0,15);
+                        tempTender.IsReactionOpp__c = false;
+                        successTenderList.add(tempTender);
+                    }
+                }
+
+                //娓呴櫎鏍囪瘑
+                if(successTenderList.size()>0){
+                    update successTenderList;
+                }
+
+            }
+            //璇环娴佺▼鏀瑰杽 fy start
+            System.debug('batch2寮�濮�');
+            Id execBTId = Database.executeBatch(new UpdateTenderInformationBatch2(TenderIdList),100);
+            System.debug('batch2缁撴潫');
+            //璇环娴佺▼鏀瑰杽 fy end
+
+        }catch(NullPointerException ex){         
+            system.debug('aa1:'+ex.getMessage());
+            return '绌烘寚閽� :'+ex.getLineNumber();
+        }catch(Exception ex2){          
+            system.debug('aa2:'+ex2.getMessage());
+            return '鍑洪敊浜�!'+ex2.getMessage();
+        }
+
+        if(String.isNotBlank(errorMessage)){
+            return errorMessage;
+        }
+
+        system.debug('aa');
+        return 'OK';
+
+    }
+
+
+
+    //0.璁$畻璇环鏁伴噺
+    public static List<Tender_information__c> updateOpportunityNum(Map<String,List<Opportunity>> tempMap){       
+        // 鎷涙爣-璇环鍏宠仈淇敼 鑾峰彇鎷涙爣淇℃伅淇敼 20210817 start
+        // List<Tender_information__c> updateTenderNumList = new List<Tender_information__c>();
+        // //閬嶅巻Map鐨刱ey
+        // for(String k : tempMap.keySet()){
+        //     Tender_information__c tempTender = new Tender_information__c();
+        //     tempTender.id = k;
+        //     String fifteenId = String.valueOf(tempTender.Id).subString(0,15);
+        //     tempTender.OpportunityNum__c = tempMap.get(fifteenId).size();
+        //     updateTenderNumList.add(tempTender);
+        // }
+        List<String> tenders = new List<String>();
+        //閬嶅巻Map鐨刱ey
+        for(String k : tempMap.keySet()){
+            tenders.add(k);
+        }
+        // 鑾峰緱鎷涙爣鏁版嵁 鎶婁粠璇环閲屾煡璇㈢殑鎷涙爣瀛楁鎸埌杩欓噷
+        List<Tender_information__c> updateTenderNumList = [SELECT Id, Hospital__c, Hospital1__c, 
+        Hospital2__c, Hospital3__c, Hospital4__c, OwnerId, IsRelateProject__c, IsBid__c, department__c, 
+        subDepartment1__c, subDepartment2__c, subDepartment3__c, subDepartment4__c, NotBidApprovalStatus__c, 
+        OpportunityNum__c, OpportunityStatus__c
+        //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
+        ,OlyNumberHosts__c, RivalHostsNumber__c, TotalNumberHosts__c
+        //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
+        FROM Tender_information__c WHERE Id IN :tenders];
+        // 鎷涙爣-璇环鍏宠仈淇敼 20210817 end
+
+        return updateTenderNumList;
+    }
+
+
+    //1.璁$畻璇环鐘舵��
+    //2.璧嬪�煎尰闄�
+    //3.璧嬪�兼垬鐣ョ瀹�
+    //  1)  濡傛灉鎷涙姇鏍囬」鐩殑鍏宠仈鍖婚櫌涓虹┖锛岄偅涔堝氨鏇存柊涓鸿浠风殑鍖婚櫌;
+    //  2)  濡傛灉鎷涙姇鏍囬」鐩殑鍏宠仈涓绘垬鐣ョ瀹や负绌猴紝閭d箞灏辨洿鏂颁负璇环鍒涘缓鏃堕棿鏈�鏃╃殑璇环鐨勬垬鐣ョ瀹わ紱
+    //  3)  濡傛灉鎷涙姇鏍囬」鐩殑鍏宠仈鍓垬鐣ョ瀹や负绌猴紝閭d箞灏辨洿鏂颁负鎺掑悕浼樺厛绾ч珮鐨勬垬鐣ョ瀹や箣澶栫殑鍏朵粬璇环鐨勬垬鐣ョ瀹わ紝涔熸槸浠ュ垱寤烘椂闂存洿鏃╀负鍏堝悗椤哄簭锛�
+    //  4锛� 濡傛灉鏇存柊婊′簡锛屽鐨勬垬鐣ョ瀹ゅ氨涓嶆洿鏂帮紱
+    public static List<Tender_information__c> updateOpportunityStatus(Map<String,List<Opportunity>> BiddingProjectOppMap,List<Tender_information__c> updateTenderNumList,Map<String,Tender_information__c> tenderMap){
+        //璇环鐘舵��
+        //瀹氫箟List灏佽闇�瑕佹洿鏂扮殑鎷涙爣椤圭洰
+        List<Tender_information__c> updateTenderList = new List<Tender_information__c>();
+
+        //閬嶅巻Map鐨刱ey
+        for(Tender_information__c tempTender : updateTenderNumList){
+
+            String fifteenId = String.valueOf(tempTender.Id).subString(0,15);
+            //鑾峰彇褰撳墠鎷涙姇鏍囦笅鐨勮浠�
+            List<Opportunity> BiddingDownOppList= BiddingProjectOppMap.get(fifteenId) == null ? new List<Opportunity>() : BiddingProjectOppMap.get(fifteenId);
+
+            //鑾峰彇褰撳墠鎷涙姇鏍囦笅鐨勮浠风殑鍖婚櫌
+            List<String> OppHospitalList = new List<String>();
+
+            //鍒ゆ柇鐘舵��
+            if(BiddingDownOppList.size() > 0){
+                //<!----  鎵�鏈変汉 ---->
+                //2021-08-09  mzy  濡傛灉鎷涙爣鐨刼wnerid鏄ゥ鏋楀反鏂郴缁熺敤鎴� 灏辨妸璇环鐨勬墍鏈変汉鍐欎笂鍘�
+                // 20210817 鏄笉鏄簲璇ョ洿鎺ュ垽鏂璽ender涓婄殑锛�
+                // if(BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.OwnerId == '00510000000gmxH'){
+                if(tempTender.OwnerId == '00510000000gmxH'){
+                    tempTender.OwnerId = BiddingDownOppList.get(0).ownerId;
+                }
+                //2021-08-09  mzy  濡傛灉鎷涙爣鐨刼wnerid鏄ゥ鏋楀反鏂郴缁熺敤鎴� 灏辨妸璇环鐨勬墍鏈変汉鍐欎笂鍘�
+                //<!----  鎵�鏈変汉 ---->
+                //<!---- 璇环鐘舵�� start --->
+                //<!--璇环鐘舵��-->
+                //WIN num
+                Integer WinNum = 0;
+                //澶卞崟 num
+                Integer SHDNum = 0;
+                //XLIU-CG98L5銆愬鎵樸�戙�愯瘎浼般�戞柊闇�姹�-鎷涙爣椤圭洰/璇环瀵瑰簲娴佹爣銆佸簾鏍囨敼鍠� fy start
+                //鍙栨秷 num
+                Integer QuxNum = 0;
+                //XLIU-CG98L5銆愬鎵樸�戙�愯瘎浼般�戞柊闇�姹�-鎷涙爣椤圭洰/璇环瀵瑰簲娴佹爣銆佸簾鏍囨敼鍠� fy end
+                //涓爣 2022-6-29 yjk
+                Integer bidNum = 0;
+                //瀵规墜涓爣 2022-6-29 yjk
+                Integer loseNum = 0;
+
+                //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
+                tempTender.OlyNumberHosts__c = 0;
+                tempTender.RivalHostsNumber__c = 0;
+                tempTender.TotalNumberHosts__c = 0;
+
+                Decimal OlyNum = 0;
+                Decimal RivalNum = 0;
+                Decimal TotalNum = 0;
+                //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
+
+                //鑾峰彇褰撳墠key鐨凩ist
+                for(Opportunity tempOp :BiddingDownOppList){
+
+                    //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
+                    System.debug('lt123---------------------------------------');
+
+                    if(tempOp.OlyNumberHosts__c == null){
+                        tempOp.OlyNumberHosts__c = 0;
+                    }
+                    if(tempOp.RivalHostsNumber__c == null){
+                        tempOp.RivalHostsNumber__c = 0;
+                    }
+
+                    OlyNum += tempOp.OlyNumberHosts__c;
+                    RivalNum += tempOp.RivalHostsNumber__c;
+                    TotalNum += tempOp.InquireNumberHosts__c;
+                    //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
+
+                // 鏉庢収濞熷娉� 锛� 杩欓噷璇锋浛鎹㈡垚<SAP涓婁紶(WIN)>鏍囪瘑鍒ゆ柇
+                    //<!--璇环鐘舵��-->
+                    if(tempOp.SAP_Send_OK__c || '瀹屾瘯'.equals(tempOp.StageName__c)){ // 2022-6-2 yjk SWAG-CEP9G8
+                      //win 
+                      WinNum += 1; 
+                    }
+                    //XLIU-CG98L5銆愬鎵樸�戙�愯瘎浼般�戞柊闇�姹�-鎷涙爣椤圭洰/璇环瀵瑰簲娴佹爣銆佸簾鏍囨敼鍠� fy start
+                    // else if(tempOp.StageName__c.equals('澶卞崟') || tempOp.StageName__c.equals('鍙栨秷')){ //2022-5-23 yjk SWAG-CEP9G8
+                    //   //澶卞崟  
+                    //   SHDNum += 1;
+                    // }
+                    else if(tempOp.StageName__c.equals('澶卞崟')){ //2022-5-23 yjk SWAG-CEP9G8
+                            //澶卞崟  
+                        SHDNum += 1;
+                    }
+                    else if(tempOp.StageName__c.equals('鍙栨秷')){ //2022-5-23 yjk SWAG-CEP9G8
+                            //澶卞崟  
+                            QuxNum += 1;
+                    }
+                    //XLIU-CG98L5銆愬鎵樸�戙�愯瘎浼般�戞柊闇�姹�-鎷涙爣椤圭洰/璇环瀵瑰簲娴佹爣銆佸簾鏍囨敼鍠� fy end
+                    //鑾峰彇璇环鐨勫尰闄�(鐩稿叧鎬ф椂鐢�)
+                    if(!OppHospitalList.contains(tempOp.Hospital__c)&&tempOp.Hospital__c!=null){
+                        OppHospitalList.add(tempOp.Hospital__c);
+                    }
+
+                    //2022-6-29 yjk 涓爣纭璧嬪�� start
+                    if('OLY涓爣'.equals(tempOp.ConfirmationofAward__c)){
+                        bidNum++;
+                    }else if('绔炰簤瀵规墜涓爣'.equals(tempOp.ConfirmationofAward__c)){
+                        loseNum++;
+                    }
+                    //2022-6-29 yjk 涓爣纭璧嬪�� end
+
+                }
+
+                //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
+                tempTender.OlyNumberHosts__c = OlyNum;
+                tempTender.RivalHostsNumber__c = RivalNum;
+                tempTender.TotalNumberHosts__c = TotalNum;
+                //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
+
+                //<!--璇环鐘舵��-->
+                if(WinNum == BiddingDownOppList.size()){
+                    //鍏ㄩ儴涓篧in,OLY纭鐘舵�� 涓� 鎴愪氦
+                    tempTender.OpportunityStatus__c = '鎴愪氦';
+                }else if(SHDNum == BiddingDownOppList.size()){
+                    //鍏ㄩ儴涓哄け鍗�.鐘舵�佷负 澶卞崟
+                    tempTender.OpportunityStatus__c = '澶卞崟';
+                }else if(WinNum>0&&SHDNum>0&&(WinNum + SHDNum) == BiddingDownOppList.size() ){
+                    //閮ㄥ垎Win,閮ㄥ垎澶卞崟鏃�, 鐘舵�佷负  閮ㄥ垎鎴愪氦
+                    tempTender.OpportunityStatus__c = '閮ㄥ垎鎴愪氦';
+                }
+                //XLIU-CG98L5銆愬鎵樸�戙�愯瘎浼般�戞柊闇�姹�-鎷涙爣椤圭洰/璇环瀵瑰簲娴佹爣銆佸簾鏍囨敼鍠� fy start
+                else if(QuxNum == BiddingDownOppList.size()){
+                        //鍏ㄩ儴涓哄彇娑�.鐘舵�佷负 鍙栨秷
+                    tempTender.OpportunityStatus__c = '鍙栨秷';
+                }
+                //XLIU-CG98L5銆愬鎵樸�戙�愯瘎浼般�戞柊闇�姹�-鎷涙爣椤圭洰/璇环瀵瑰簲娴佹爣銆佸簾鏍囨敼鍠� fy end
+                else if(tempTender.OpportunityNum__c > 0){
+                    //濡傛灉璇环鏁伴噺澶т簬0鐨勮瘽灏辨槸 璺熻繘涓�
+                    tempTender.OpportunityStatus__c = '璺熻繘涓�';
+                }else{
+                    //鍏朵粬閮芥槸 ''
+                    tempTender.OpportunityStatus__c = '';
+                }
+                //<!---- 璇环鐘舵��  end --->
+
+                //2022-6-29 yjk 涓爣纭璧嬪�� start
+                if(bidNum > 0 && loseNum == 0){
+                    tempTender.ConfirmationofAward__c = 'OLY涓爣';
+                }else if(loseNum > 0 && bidNum == 0){
+                    tempTender.ConfirmationofAward__c = '绔炰簤瀵规墜涓爣';
+                }else if(bidNum > 0 && loseNum > 0){
+                    tempTender.ConfirmationofAward__c = '閮ㄥ垎OLY涓爣';
+                }
+
+
+                //2022-6-29 yjk 涓爣纭璧嬪�� end
+
+                //<!------ 鐩稿叧鎬� 淇℃伅   start ----> 
+                //瀹氫箟Map瀛樻斁褰撳墠鎷涙姇鏍囬」鐩殑浜斾釜鍖婚櫌
+                Map<String,String> fiveHospitalMap = new Map<String,String>();
+                // 鎷涙爣-璇环鍏宠仈淇敼 杩欓噷鏄笉鏄彲浠ョ洿鎺ヤ粠褰撳墠鎷涙爣閲屽垵濮嬪寲锛熻浠蜂笂涓嶅啀鍏宠仈鍗曚竴鐨勬嫑鏍囬」鐩簡 20210818 start
+                // fiveHospitalMap.put('Hospital__c',BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.Hospital__c);
+                // fiveHospitalMap.put('Hospital1__c',BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.Hospital1__c);
+                // fiveHospitalMap.put('Hospital2__c',BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.Hospital2__c);
+                // fiveHospitalMap.put('Hospital3__c',BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.Hospital3__c);
+                // fiveHospitalMap.put('Hospital4__c',BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.Hospital4__c);
+                fiveHospitalMap.put('Hospital__c', tempTender.Hospital__c);
+                fiveHospitalMap.put('Hospital1__c', tempTender.Hospital1__c);
+                fiveHospitalMap.put('Hospital2__c', tempTender.Hospital2__c);
+                fiveHospitalMap.put('Hospital3__c', tempTender.Hospital3__c);
+                fiveHospitalMap.put('Hospital4__c', tempTender.Hospital4__c);
+                // 鎷涙爣-璇环鍏宠仈淇敼 20210818 end
+
+                //濡傛灉鎷涙姇鏍囬」鐩殑 鏄惁鐩稿叧 瀛楁涓嶄负鍚� , 骞朵笖 鐩稿叧鍖婚櫌 鐩稿叧鎴樼暐绉戝 鐩稿叧鏅�氱瀹� 涓虹┖鏃�,鍒欐洿鏂� 涓鸿浠风殑 鍖婚櫌 鎴樼暐绉戝 瀹㈡埛鍚�
+                // 鎷涙爣-璇环鍏宠仈淇敼 鍚屼笂淇敼 浠庡綋鍓嶆嫑鏍囩殑鏁版嵁閲岃幏寰楀垽鏂潯浠� 20210818 start
+                // if(!'鍚�'.equals(BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.IsRelateProject__c)){
+                if(!'鍚�'.equals(tempTender.IsRelateProject__c)){
+                // 鎷涙爣-璇环鍏宠仈淇敼 20210818 end
+                    //涓�.鍏宠仈鍖婚櫌
+                    //閬嶅巻鎷涙姇鏍囬」鐩笅鎵�鏈夎浠风殑鍖婚櫌,缁欐嫑鎶曟爣椤圭洰鐨�5涓尰闄㈣祴鍊� ---start
+                    //閬嶅巻鎷涙姇鏍囬」鐩笅鎵�鏈夎浠风殑鍖婚櫌
+                    if(OppHospitalList.size()>0){                        
+                        for(Integer i = 0; i<OppHospitalList.size();i++){
+                            //褰撴嫑鎶曟爣椤圭洰鐨勪簲涓尰闄㈣祴鍊煎畬鎴愬悗涓嶅啀璧嬪��
+                            Boolean HospitalIsNeedBreak = false;
+                            for(String ApiName :fiveHospitalMap.keySet()){
+                                HospitalIsNeedBreak = fiveHospitalMap.get(ApiName)==null?false:true;
+                            }
+                            
+                            if(HospitalIsNeedBreak){
+                                break;
+                            }
+
+                            //缁欐嫑鎶曟爣椤圭洰鐨�5涓尰闄㈣鍊�
+                            for(String ApiName : fiveHospitalMap.keySet()){
+                                String tempTenderHospId = fiveHospitalMap.get(ApiName)==null?'':fiveHospitalMap.get(ApiName);
+                                String oppHospId = OppHospitalList.get(i); 
+                                //濡傛灉鎷涙爣椤圭洰宸茬粡鏈夎鍖婚櫌灏卞垽鏂笅涓�涓浠风殑鍖婚櫌
+                                if(tempTenderHospId.contains(oppHospId)){
+                                    break;
+                                }
+
+                                //鍖婚櫌涓虹┖,璧嬪�煎尰闄�(璧嬪�间箣鍚庤繘琛岃祴鍊间笅涓�涓尰闄�)
+                                if(String.isBlank( fiveHospitalMap.get(ApiName) )){
+                                    fiveHospitalMap.put(ApiName,oppHospId);
+                                    break;
+                                }
+                            }
+
+                        }
+                    }
+
+                    //璧嬪�煎尰闄�
+                    tempTender.Hospital__c = fiveHospitalMap.get('Hospital__c');
+                    tempTender.Hospital1__c = fiveHospitalMap.get('Hospital1__c');
+                    tempTender.Hospital2__c = fiveHospitalMap.get('Hospital2__c');
+                    tempTender.Hospital3__c = fiveHospitalMap.get('Hospital3__c');
+                    tempTender.Hospital4__c = fiveHospitalMap.get('Hospital4__c');
+                    //閬嶅巻鎷涙姇鏍囬」鐩笅鎵�鏈夎浠风殑鍖婚櫌,缁欐嫑鎶曟爣椤圭洰鐨�5涓尰闄㈣祴鍊� ---end
+
+                }
+
+                //濡傛灉 鏄惁鐩稿叧 瀛楁宸茬粡閫夋嫨鍚�, 灏变笉搴旇鏇存柊鐩稿叧鍙婄浉鍏崇殑鐩稿叧淇℃伅
+                // 鎷涙爣-璇环鍏宠仈淇敼 鍚屼笂淇敼 浠庡綋鍓嶆嫑鏍囩殑鏁版嵁閲岃幏寰楀垽鏂潯浠� 20210818 start
+                // if(!'鍚�'.equals(BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.IsRelateProject__c)
+                //     &&!'鏄�'.equals(BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.IsRelateProject__c)){
+                //     tempTender.IsRelateProject__c = '鏄�';     
+                // }
+                if(!'鍚�'.equals(tempTender.IsRelateProject__c)
+                    &&!'鏄�'.equals(tempTender.IsRelateProject__c)){
+                    tempTender.IsRelateProject__c = '鏄�';     
+                }
+                // 鎷涙爣-璇环鍏宠仈淇敼 20210818 end
+                //<!------ 鐩稿叧鎬� 淇℃伅   end ---->
+
+                //<!------ 搴旀爣 淇℃伅    start---->
+                //2021-08-09   mzy   鍏宠仈璇环鎴愬姛鍚�,涓嶉渶瑕佽缃槸鍚﹀簲鏍� 涓� 鏄�
+                //濡傛灉 鏄惁搴旀爣 瀛楁宸茬粡閫夋嫨鍚�,灏变笉搴旇鏇存柊搴旀爣鍙婄浉鍏崇殑鐩稿叧淇℃伅
+                //if(!'鍚�'.equals(BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.IsBid__c)
+                //    &&!'鏄�'.equals(BiddingDownOppList.get(0).Bidding_Project_Name_Bid__r.IsBid__c)){
+                //    tempTender.IsBid__c = '鏄�';     
+                //}
+                //2021-08-09  mzy  鍏宠仈璇环鎴愬姛鍚�,涓嶉渶瑕佽缃槸鍚﹀簲鏍� 涓� 鏄�
+                //<!------ 搴旀爣 淇℃伅    end---->
+
+            }else {
+                //娓呯┖
+                tempTender.OpportunityStatus__c = '';
+            }
+            updateTenderList.add(tempTender);
+        }
+
+
+        return updateTenderList;
+
+    }
+
+
+    //鏌ヨ鎷涙爣椤圭洰涓嬬殑鎵�鏈夎浠�
+    //param : 闇�瑕佹煡璇㈢殑鎷涙爣椤圭洰Id
+    //return Map<鎷涙姇鏍囬」鐩甀d,List<璇环>>
+    public static Map<String,List<Opportunity>> findTenderRelativeOpp(Set<String>  BiddingProjectID){
+        //瀹氫箟Map灏佽鏁版嵁
+        Map<String,List<Opportunity>> BiddingProjectOppMap = new Map<String,List<Opportunity>>();
+        //鏌ヨ鎷涙爣椤圭洰涓嬬殑鎵�鏈夎浠�
+        // 鎷涙爣-璇环鍏宠仈淇敼 澶氬澶氬叧绯诲搴� 浠庡叧鑱旇〃涓幏鍙栬浠� 20210818 start
+        List<Tender_Opportunity_Link__c> links = [SELECT Id, Tender_information__c, Opportunity__c FROM Tender_Opportunity_Link__c WHERE Tender_information__c in :BiddingProjectID];
+        List<String> oppIds = new List<String>();
+        for (Tender_Opportunity_Link__c link : links) {
+            // 澶氬澶氬叧绯� 闇�瑕佸幓閲�
+            if (oppIds.contains(link.Opportunity__c)) {
+                continue;
+            }
+            oppIds.add(link.Opportunity__c);
+        }
+        List<Opportunity> allRelativeOppList = [SELECT Id ,AccountId,Hospital__c,Department_Class__c,SAP_Send_OK__c,CreatedDate, Whether_Bidding__c,
+        Old_BiddingProject_Bid__c, OwnerId, StageName__c, Bidding_Project_Name_Bid__c, ConfirmationofAward__c
+        //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 start
+        ,OlyNumberHosts__c, RivalHostsNumber__c, InquireNumberHosts__c
+        //20221010  lt SWAG-CHL5XA銆怓Y23璇环鏀瑰杽銆�-缁熻涓绘満鍙版暟 end
+        FROM Opportunity WHERE Id in :oppIds ORDER By createdDate ASC];
+        // List<Opportunity> allRelativeOppList = [SELECT Id ,AccountId,Hospital__c,Department_Class__c,SAP_Send_OK__c,CreatedDate, Whether_Bidding__c,
+        // Old_BiddingProject_Bid__c,Bidding_Project_Name_Bid__c ,StageName__c ,Bidding_Project_Name_Bid__r.Hospital__c,Bidding_Project_Name_Bid__r.Hospital1__c,
+        // Bidding_Project_Name_Bid__r.Hospital2__c,Bidding_Project_Name_Bid__r.Hospital3__c,Bidding_Project_Name_Bid__r.Hospital4__c,
+        // Bidding_Project_Name_Bid__r.OwnerId,OwnerId,
+        // Bidding_Project_Name_Bid__r.IsRelateProject__c ,Bidding_Project_Name_Bid__r.IsBid__c ,Bidding_Project_Name_Bid__r.department__c,
+        // Bidding_Project_Name_Bid__r.subDepartment1__c,Bidding_Project_Name_Bid__r.subDepartment2__c,Bidding_Project_Name_Bid__r.subDepartment3__c,
+        // Bidding_Project_Name_Bid__r.subDepartment4__c FROM Opportunity WHERE Bidding_Project_Name_Bid__c in :BiddingProjectID ORDER By createdDate ASC];
+       
+        //閬嶅巻璇环闆嗗悎
+        //2.鎸夊垱寤烘椂闂存帓搴�(姝e簭),鍒涘缓map
+        for(Opportunity tempOp :allRelativeOppList){
+            // 寰幆link锛屾壘鍒拌浠峰搴旂殑鎷涙爣
+            for (Tender_Opportunity_Link__c link : links) {
+                if (link.Opportunity__c == tempOp.Id) {
+                    String fifteenTenderId = String.valueOf(link.Tender_information__c).subString(0,15);
+                    //Map閲岄潰娌℃湁淇濆瓨褰撳墠璇环鐨勬嫑鏍囬」鐩笅鐨勮浠�
+                    if(!BiddingProjectOppMap.containsKey(fifteenTenderId)){
+                        //绗竴娆″瓨鏀�
+                        List<Opportunity> tempOppList = new List<Opportunity>();
+                        tempOppList.add(tempOp);
+                        BiddingProjectOppMap.put(fifteenTenderId,tempOppList);
+                    }else {
+                        //浠ュ悗瀛樻斁
+                        List<Opportunity> tempOppListE = BiddingProjectOppMap.get(fifteenTenderId);
+                        tempOppListE.add(tempOp);
+                        BiddingProjectOppMap.put(fifteenTenderId,tempOppListE);
+                    }
+                }
+            }
+            //鍒ゆ柇褰撳墠璇环鏄惁鏈夋嫑鏍囬」鐩�
+            // if(tempOp.Bidding_Project_Name_Bid__c!=null){
+            //     String fifteenTenderId = String.valueOf(tempOp.Bidding_Project_Name_Bid__c).subString(0,15);
+            //     //Map閲岄潰娌℃湁淇濆瓨褰撳墠璇环鐨勬嫑鏍囬」鐩笅鐨勮浠�
+            //     if(!BiddingProjectOppMap.containsKey(fifteenTenderId)){
+            //         //绗竴娆″瓨鏀�
+            //         List<Opportunity> tempOppList = new List<Opportunity>();
+            //         tempOppList.add(tempOp);
+            //         BiddingProjectOppMap.put(fifteenTenderId,tempOppList);
+            //     }else {
+            //         //浠ュ悗瀛樻斁
+            //         List<Opportunity> tempOppListE =BiddingProjectOppMap.get(fifteenTenderId);
+            //         tempOppListE.add(tempOp);
+            //         BiddingProjectOppMap.put(fifteenTenderId,tempOppListE);
+            //     } 
+            // }
+        }
+        //瀹屽杽Map : 璇环涓�0鐨勬嫑鎶曟爣椤圭洰搴旇涔熸湁涓�鍒�
+        for(String TenderId : BiddingProjectID){
+            String fifteenTenderId = TenderId.subString(0,15);
+            if(!BiddingProjectOppMap.containsKey(fifteenTenderId)){
+                List<Opportunity> tempOppList = new List<Opportunity>();
+                BiddingProjectOppMap.put(fifteenTenderId,tempOppList);
+            }
+        }
+
+        return BiddingProjectOppMap;
+    }
+
+
+    // 鍙戦�佹彁閱掗偖浠�
+    private void sendFieldEmail() {
+        PretechBatchEmailUtil be = new PretechBatchEmailUtil();
+        String[] toList = new String[] {UserInfo.getUserEmail()};
+        String title = '鎷涙爣椤圭洰璇环鐘舵�佸拰璇环鏁伴噺鏇存柊澶辫触';
+        //String[] ccList = new String[] {'Xiaochen_You@olympus.com.cn'};
+        String[] ccList = new String[] {'miaoziyang@prec-tech.com'};
+        if (System.Test.isRunningTest()) {
+            be.successMail('', 1);
+        }
+        if (emailMessages.size() > 0 && TenderfailedCount > 0) {
+            be.failedMail(toList, ccList, title, this.emailMessages.get(0)+'\n',
+                            TendertotalCount, TendertotalCount - TenderfailedCount, TenderfailedCount,'',true);
+            if(!Test.isRunningTest()){
+                be.send();
+            }
+        }       
+    }
+    
+    public static void justForTest() {
+        Integer i = 0;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+             i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+             i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/UpdateTenderInformationBatch.cls-meta.xml b/force-app/main/default/classes/UpdateTenderInformationBatch.cls-meta.xml
new file mode 100644
index 0000000..e3d1b51
--- /dev/null
+++ b/force-app/main/default/classes/UpdateTenderInformationBatch.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>45.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/loanerArrangedEmailController.cls b/force-app/main/default/classes/loanerArrangedEmailController.cls
new file mode 100644
index 0000000..bb34d2f
--- /dev/null
+++ b/force-app/main/default/classes/loanerArrangedEmailController.cls
@@ -0,0 +1,95 @@
+public with sharing class loanerArrangedEmailController {
+
+	
+
+    public loanerArrangedEmailController() {
+    }
+
+    @AuraEnabled
+    public static InitData init(String recordId) {
+    	String statusSting = Label.StatusProcessState;
+		List<String> status = statusSting.split(',');
+    	InitData res = new InitData();
+    	try {
+    	    Rental_Apply__c rac = [SELECT Id, Status__c, Campaign__c, RC_return_to_office__c, Repair_Final_Inspection_Date_F__c, Repair__c, Assigned_Not_Shipment__c, Demo_purpose1__c, Contract_pdf_updated__c, Wei_Assigned_Cnt__c from Rental_Apply__c where Id = :recordId];
+
+    	    if( rac.Campaign__c != null ){
+    	    	//鑾峰彇瀛︿細瀵硅薄
+    	    	Campaign camp = [select Id, Status, Rental_Apply_Flag__c,IF_Approved__c,Approved_Status__c, Meeting_Approved_No__c from Campaign where id = :rac.Campaign__c];
+    	    	res.CampaignId = camp.Id;
+    	    	res.CampaignStatus = camp.Status;
+    	    	res.IFApproved = camp.IF_Approved__c;
+	    	    res.MeetingApprovedNo = camp.Meeting_Approved_No__c;
+	    	    res.ApprovedStatus = camp.Approved_Status__c;
+    	    }   
+    	    res.Id = recordId;   
+    	    res.RaStatus = rac.Status__c;
+    	    res.WeiAssignedCnt = Integer.valueOf(rac.Wei_Assigned_Cnt__c);
+    	    res.AssignedNotShipment = Integer.valueOf(rac.Assigned_Not_Shipment__c);
+    	    res.DemoPurpose1 = rac.Demo_purpose1__c;
+    	    res.ContractPdfUpdated = rac.Contract_pdf_updated__c;
+    	    res.RepairId = rac.Repair__c;
+    	    res.RepairFinalInspectionDateF = rac.Repair_Final_Inspection_Date_F__c;
+    	    res.RCReturnToOffice = rac.RC_return_to_office__c;
+    	    res.StatusList = status;
+    	}
+    	catch (Exception e) {
+    	    System.debug(LoggingLevel.INFO, '****e:' + e);
+    	}
+    	system.debug('res======'+res);
+    	return res;
+    }
+
+    
+    //鑾峰彇澶囧搧鍊熷嚭涓�鏍�
+    @AuraEnabled
+    public static Integer getRentalApplyEquipmentSet(String recordId) {
+    	Rental_Apply__c tempRa = [SELECT Id, Bollow_Date__c from Rental_Apply__c where Id = :recordId];
+    	List<Rental_Apply_Equipment_Set__c> tempRaEquipSetList = new List<Rental_Apply_Equipment_Set__c>();
+    	Integer pageLength ;
+    	if(tempRa.Bollow_Date__c != null) {
+    		tempRaEquipSetList = [SELECT Id from Rental_Apply_Equipment_Set__c where Rental_Apply__c = :recordId AND Shippment_loaner_time__c != null and RAES_Status__c != '宸插垎閰�' and RAES_Status__c != '鍙栨秷鍒嗛厤'];
+    	}else {
+    		tempRaEquipSetList = [SELECT Id from Rental_Apply_Equipment_Set__c where Rental_Apply__c = :recordId AND RAES_Status__c != '宸插垎閰�' and RAES_Status__c != '鍙栨秷鍒嗛厤'];
+    	}
+    	//
+    	if(tempRaEquipSetList.size()>0) {
+			Integer setLength = tempRaEquipSetList.size();
+			pageLength = Math.mod(setLength,10) == 0 ? setLength/10 : Math.round(setLength) + 1;
+    	}
+    	return pageLength;
+    }
+
+    public class InitData{
+		@AuraEnabled
+		public String Id;
+		@AuraEnabled
+		public String CampaignStatus;	//瀛︿細鐘舵��
+		@AuraEnabled
+		public String CampaignId;	//瀛︿細Id
+		@AuraEnabled
+		public String RaStatus;		//澶囧搧鍊熷嚭鐢宠鐘舵��
+		@AuraEnabled
+		public Integer WeiAssignedCnt;		//鏈垎閰嶄欢鏁�  Wei_Assigned_Cnt__c
+		@AuraEnabled
+		public Integer AssignedNotShipment;	//宸插垎閰嶆湭鍑哄簱鎸囩ず  Assigned_Not_Shipment__c
+		@AuraEnabled
+		public String DemoPurpose1;			//浣跨敤鐩殑1	 Demo_purpose1__c
+		@AuraEnabled
+		public Boolean ContractPdfUpdated;	//鍚堝悓涔﹀凡涓婁紶	Contract_pdf_updated__c
+		@AuraEnabled
+		public String RepairId;				//瀛︿細.淇悊Id
+		@AuraEnabled
+		public Date RepairFinalInspectionDateF;		//淇悊鏈�缁堟娴嬫棩F  	Repair_Final_Inspection_Date_F__c
+		@AuraEnabled
+		public Date RCReturnToOffice;		//RC淇悊鍝佽繑閫佹棩		RC_return_to_office__c
+		@AuraEnabled
+		public Boolean IFApproved;			//瀛︿細.鏄惁闇�瑕佺敵璇峰喅瑁�
+		@AuraEnabled
+		public String MeetingApprovedNo;	//瀛︿細.浼氳鍐宠缂栫爜
+		@AuraEnabled
+		public String ApprovedStatus;		//瀛︿細.鍐宠鐘舵��	Approved_Status__c
+		@AuraEnabled
+		public List<String> StatusList;
+	}
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/loanerArrangedEmailController.cls-meta.xml b/force-app/main/default/classes/loanerArrangedEmailController.cls-meta.xml
new file mode 100644
index 0000000..d75b058
--- /dev/null
+++ b/force-app/main/default/classes/loanerArrangedEmailController.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>51.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/rentalApplyEquipmentRentalPDFController.cls b/force-app/main/default/classes/rentalApplyEquipmentRentalPDFController.cls
new file mode 100644
index 0000000..9959c74
--- /dev/null
+++ b/force-app/main/default/classes/rentalApplyEquipmentRentalPDFController.cls
@@ -0,0 +1,25 @@
+public with sharing class rentalApplyEquipmentRentalPDFController {
+    public rentalApplyEquipmentRentalPDFController() {
+        
+    }
+    @AuraEnabled
+    public static InitData initJumptoPDFButton(String recordId) {
+    	InitData res = new InitData();
+    	try {
+    		List<Rental_Apply_Equipment_Set__c> raeSet = [SELECT Id from Rental_Apply_Equipment_Set__c where Rental_Apply__c = :recordId and Yi_Shipment_request__c > 0 and RAES_Status__c != '鍙栨秷'];
+    		Integer setLength = raeSet.size();
+    		res.pageLength = Math.mod(setLength,10)== 0 ? setLength/10 : Math.round(setLength) +1 ;
+    	}catch(Exception e){
+    		System.debug(LoggingLevel.INFO, '****e:' + e);
+    	}
+    	return res;
+    }
+
+    public class InitData{
+		@AuraEnabled
+		public String Id;
+		@AuraEnabled
+		public Integer pageLength;
+	}
+    
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/rentalApplyEquipmentRentalPDFController.cls-meta.xml b/force-app/main/default/classes/rentalApplyEquipmentRentalPDFController.cls-meta.xml
new file mode 100644
index 0000000..d75b058
--- /dev/null
+++ b/force-app/main/default/classes/rentalApplyEquipmentRentalPDFController.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>51.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.css b/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.css
new file mode 100644
index 0000000..b606828
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.css
@@ -0,0 +1,11 @@
+.lexFinlibraryHolder{
+ position: relative;
+ display: inline-block;
+ width: 80px;
+ height: 80px;
+ text-align: center;
+}
+
+.container .uiContainerManager{
+ display : none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.html b/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.html
new file mode 100644
index 0000000..aab9e0c
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.html
@@ -0,0 +1,4 @@
+<template>
+<div class="lexFinlibraryHolder" if:true={IsLoding}>
+<lightning-spinner alternative-text="Loading" size="medium">  </lightning-spinner> </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.js b/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.js
new file mode 100644
index 0000000..febcdf5
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.js
@@ -0,0 +1,55 @@
+import { LightningElement, track, wire,api } from 'lwc';
+import getBulletinBoard  from '@salesforce/apex/FinLibraryButtonController.getBulletinBoard';
+import {CurrentPageReference} from 'lightning/navigation';
+import { CloseActionScreenEvent } from 'lightning/actions';
+export default class lexFinLibrary extends LightningElement {
+
+		@api recordId;
+		IsLoading;
+		Bulletin_Board__c;
+
+
+		@wire(CurrentPageReference)
+    getStateParameters(currentPageReference){
+    	if(currentPageReference){
+    		console.log(currentPageReference);
+    		console.log("杩涘叆鑾峰彇page鍙傛暟")
+    		const IdValue=currentPageReference.state.recordId;
+    		if(IdValue){
+    			let str=`${IdValue}`;
+    			this.recordId=str;
+    			console.log("recordId="+str);
+    		}
+    	}
+    }
+
+
+    connectedCallback(){
+    getBulletinBoard({recordId:this.recordId}).then(res=>{
+    	if(res!=null){
+    	this.IsLoading=false;
+    	console.log("res");
+    	console.log(res);
+    	console.log("杩涘叆鍒濆鍖栧璞″叾浠栧睘鎬�");
+    	this.Bulletin_Board__c=res;
+    	console.log(this.Bulletin_Board__c);
+        this.FinLibrary();
+    	}
+    	else{
+    		 var a="娌¤繘鏂规硶";
+ 			console.log(a);
+    	}
+    }).catch(error =>{
+    	console.log("error");
+    	console.log(error.message);
+    }).finally(()=>{
+
+    });
+    }
+
+    FinLibrary(){
+    	window.open(this.Bulletin_Board__c.iPad_Finlibrary__c, 'FinLibrary', '_top');
+    	this.dispatchEvent(new CloseActionScreenEvent());
+    }
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.js-meta.xml b/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.js-meta.xml
new file mode 100644
index 0000000..79fced5
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary/lexFinLibrary.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexFinLibrary">
+    <apiVersion>51.0</apiVersion>
+    <isExposed>true</isExposed>
+     <targets>
+        <target>lightning__AppPage</target>
+        <target>lightning__RecordPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.css b/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.css
new file mode 100644
index 0000000..bb273c4
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.css
@@ -0,0 +1,11 @@
+.lexFinlibraryHolder2{
+ position: relative;
+ display: inline-block;
+ width: 80px;
+ height: 80px;
+ text-align: center;
+}
+
+.container .uiContainerManager{
+ display : none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.html b/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.html
new file mode 100644
index 0000000..81373b2
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.html
@@ -0,0 +1,4 @@
+<template>
+<div class="lexFinlibraryHolder2" if:true={IsLoding}>
+<lightning-spinner alternative-text="Loading" size="medium">  </lightning-spinner> </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.js b/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.js
new file mode 100644
index 0000000..3db3717
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.js
@@ -0,0 +1,62 @@
+import { LightningElement, track, wire,api } from 'lwc';
+import getBulletinBoard  from '@salesforce/apex/FinLibraryButtonController2.getBulletinBoard';
+import {CurrentPageReference} from 'lightning/navigation';
+import { CloseActionScreenEvent } from 'lightning/actions';
+export default class lexFinLibrary2 extends LightningElement {
+
+
+	@api recordId;
+	IsLoading;
+	Bulletin_Board__c;
+
+
+	@wire(CurrentPageReference)
+    getStateParameters(currentPageReference){
+    	if(currentPageReference){
+    		console.log(currentPageReference);
+    		console.log("杩涘叆鑾峰彇page鍙傛暟")
+    		const IdValue=currentPageReference.state.recordId;
+    		if(IdValue){
+    			let str=`${IdValue}`;
+    			this.recordId=str;
+    			console.log("recordId="+str);
+    		}
+    	}
+    }
+
+
+
+
+    connectedCallback(){
+    getBulletinBoard({recordId:this.recordId}).then(res=>{
+    	if(res!=null){
+    	this.IsLoading=false;
+    	console.log("res");
+    	console.log(res);
+    	console.log("杩涘叆鍒濆鍖栧璞″叾浠栧睘鎬�");
+    	this.Bulletin_Board__c=res;
+    	console.log(this.Bulletin_Board__c);
+        this.FinLibrary2();
+    	}
+    	else{
+    		 var a="娌¤繘鏂规硶";
+ 			console.log(a);
+    	}
+    }).catch(error =>{
+    	console.log("error");
+    	console.log(error.message);
+    }).finally(()=>{
+
+    });
+    }
+
+
+    FinLibrary2(){
+
+
+    	window.open(this.Bulletin_Board__c.iPad_Finlibrary_2__c, 'FinLibrary', '_top');
+    	this.dispatchEvent(new CloseActionScreenEvent());
+
+    }
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.js-meta.xml b/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.js-meta.xml
new file mode 100644
index 0000000..f128d90
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary2/lexFinLibrary2.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexFinLibrary2">
+    <apiVersion>51.0</apiVersion>
+    <isExposed>true</isExposed>
+      <targets>
+        <target>lightning__AppPage</target>
+        <target>lightning__RecordPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.css b/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.css
new file mode 100644
index 0000000..69ceae8
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.css
@@ -0,0 +1,11 @@
+.lexFinlibraryHolder3{
+ position: relative;
+ display: inline-block;
+ width: 80px;
+ height: 80px;
+ text-align: center;
+}
+
+.container .uiContainerManager{
+ display : none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.html b/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.html
new file mode 100644
index 0000000..2e542b1
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.html
@@ -0,0 +1,4 @@
+<template>
+<div class="lexFinlibraryHolder3" if:true={IsLoding}>
+<lightning-spinner alternative-text="Loading" size="medium">  </lightning-spinner> </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.js b/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.js
new file mode 100644
index 0000000..21eca75
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.js
@@ -0,0 +1,58 @@
+import { LightningElement, track, wire,api } from 'lwc';
+import getBulletinBoard  from '@salesforce/apex/FinLibraryButtonController3.getBulletinBoard';
+import {CurrentPageReference} from 'lightning/navigation';
+import { CloseActionScreenEvent } from 'lightning/actions';
+export default class lexFinLibrary3 extends LightningElement {
+
+	@api recordId;
+	IsLoading;
+	Bulletin_Board__c;
+
+	@wire(CurrentPageReference)
+    getStateParameters(currentPageReference){
+    	if(currentPageReference){
+    		console.log(currentPageReference);
+    		console.log("杩涘叆鑾峰彇page鍙傛暟")
+    		const IdValue=currentPageReference.state.recordId;
+    		if(IdValue){
+    			let str=`${IdValue}`;
+    			this.recordId=str;
+    			console.log("recordId="+str);
+    		}
+    	}
+    }
+
+
+
+
+    connectedCallback(){
+    getBulletinBoard({recordId:this.recordId}).then(res=>{
+    	if(res!=null){
+    	this.IsLoading=false;
+    	console.log("res");
+    	console.log(res);
+    	console.log("杩涘叆鍒濆鍖栧璞″叾浠栧睘鎬�");
+    	this.Bulletin_Board__c=res;
+    	console.log(this.Bulletin_Board__c);
+        this.FinLibrary3();
+    	}
+    	else{
+    		 var a="娌¤繘鏂规硶";
+ 			console.log(a);
+    	}
+    }).catch(error =>{
+    	console.log("error");
+    	console.log(error.message);
+    }).finally(()=>{
+
+    });
+    }
+
+
+    FinLibrary3(){
+    	window.open(this.Bulletin_Board__c.iPad_Finlibrary_3__c, 'FinLibrary', '_top');
+    	this.dispatchEvent(new CloseActionScreenEvent());
+    }
+
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.js-meta.xml b/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.js-meta.xml
new file mode 100644
index 0000000..5323374
--- /dev/null
+++ b/force-app/main/default/lwc/lexFinLibrary3/lexFinLibrary3.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexFinLibrary3">
+    <apiVersion>51.0</apiVersion>
+    <isExposed>true</isExposed>
+     <targets>
+        <target>lightning__AppPage</target>
+        <target>lightning__RecordPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.css b/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.css
new file mode 100644
index 0000000..ebb43d9
--- /dev/null
+++ b/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.css
@@ -0,0 +1,10 @@
+.exampleHolder{
+    position: relative;
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    text-align: center;
+}
+.container .uiContainerManager{
+	display: none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.html b/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.html
new file mode 100644
index 0000000..3eff9e8
--- /dev/null
+++ b/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="EquipmentRentalPDF" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.js b/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.js
new file mode 100644
index 0000000..3916190
--- /dev/null
+++ b/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.js
@@ -0,0 +1,102 @@
+import { LightningElement, track, wire, api } from 'lwc';
+import { CurrentPageReference,NavigationMixin } from 'lightning/navigation';
+import { CloseActionScreenEvent } from 'lightning/actions';
+
+import init from '@salesforce/apex/loanerArrangedEmailController.init';
+import getRentalApplyEquipmentSet from '@salesforce/apex/loanerArrangedEmailController.getRentalApplyEquipmentSet';
+import approvalCheck from '@salesforce/apex/RentalApplyWebService.approvalCheck';
+import setShipment_request from '@salesforce/apex/RentalApplyWebService.approvalCheck';
+export default class lexLoanerArrangedEmail extends LightningElement {
+	@api recordId;
+	IsLoading = true;
+
+	@wire(CurrentPageReference)
+	getStateParameters(currentPageReference) {
+		if(currentPageReference) {
+			const urlValue = currentPageReference.state.recordId;
+			if(urlValue) {
+				let str = `${urlValue}`;
+		        this.recordId = str;
+			}
+		}
+	}
+
+	connectedCallback() {
+		init({
+			recordId: this.recordId
+		}).then(result => {
+			console.log(this.recordId);
+			console.log('result==='+JSON.stringify(result));
+			if(result != null) {
+				if( result.WeiAssignedCnt > 0 ) {
+					alert("鐢宠鍗曞唴瀛樺湪鏈垎閰嶇殑閰嶅锛岃鍒嗛厤澶囧搧鎴栧垎鍓茬敵璇峰崟");
+				}else if(result.CampaignStatus == "鍙栨秷") {
+					alert("瀛︿細鍙栨秷锛屼笉鍙嚭搴撴寚绀�"); 
+				}else if (result.RaStatus == "宸插嚭搴撴寚绀�" && result.AssignedNotShipment == 0){
+					alert("鎵�鏈夌殑鍊熷嚭澶囧搧Set涓�瑙堥兘杩涜杩囧嚭搴撴寚绀轰簡");
+				}else if (result.AssignedNotShipment == 0) {
+					alert("娌℃湁鍙互鍑哄簱鎸囩ず鐨勬槑缁�"); 
+				}else if (result.DemoPurpose1 == "闀挎湡鍊熷嚭" && result.ContractPdfUpdated == 0){
+					alert("闀挎湡鍊熷嚭鏃讹紝蹇呴』鍏堜笂浼犲绾︿功"); 
+				}else if (result.RepairId != '' && (result.RepairFinalInspectionDateF != null && result.RepairFinalInspectionDateF != '') || (result.RCReturnToOffice != null && result.RCReturnToOffice != '')){
+					alert("淇悊鏈夋渶缁堟娴嬫棩鎴栦慨鐞嗗搧杩旈�佹棩锛屼笉鍙嚭搴撴寚绀�"); 
+				}else if (result.IFApproved == "true" && (result.MeetingApprovedNo == null || result.MeetingApprovedNo == "")){
+					alert("娌℃湁鍐宠鍙风殑锛屾殏涓嶈兘鍑哄��,璇锋洿鏂拌鍐充俊鎭��"); 
+				}else if (result.IFApproved == "true" && result.MeetingApprovedNo != "" && result.StatusList.indexOf(records[0].Approved_Status__c) != -1){
+					alert("宸茬敵璇峰喅瑁佷絾鍐宠鐘舵�佷笉绗﹀悎鏉′欢銆�"); 
+				}else {
+					approvalCheck({
+						rentalApplyId: this.recordId
+					}).then(res=>{
+						if (res != '1') {
+							alert(rs1);
+						} else {
+							//bp2 var rs2 = sforce.apex.execute("RentalApplyWebService", "reserve", {rentalApplyId: raid});
+							//bp2 if (rs2 != '1') {
+							//bp2 alert(rs2);
+							//bp2 } else {
+							//var rs1 = sforce.apex.execute("RentalApplyWebService", "setShipment_request", {raid : "{!Rental_Apply__c.Id}"}); 
+
+							setShipment_request({
+								raid: this.recordId
+							}).then(res=>{
+								if (res == "鐘舵�佹洿鏂板埌宸插嚭搴撴寚绀�") { 
+									alert("鐘舵�佹洿鏂板埌宸插嚭搴撴寚绀�");
+									print();
+									setTimeout(function() {
+										location.href = "/{!Rental_Apply__c.Id}"; 
+									},100);
+								}else {
+									alert(res);
+								}
+							}).catch(e=>{
+								console.log('approvalCheck==='+e);
+							})
+						}
+					}).catch(e=>{
+						console.log('setShipment_request==='+e);
+					})				
+				}
+				this.dispatchEvent(new CloseActionScreenEvent());
+			}
+		})
+	}
+
+	print() {
+		getRentalApplyEquipmentSet({
+			recordId: this.recordId
+		}).then(result => {
+			window.open("https://ocsm--partial.sandbox.lightning.force.com/apex/FixtureRentalPDF?raid=" + this.recordId + "&page=" + result);
+		})
+	}
+
+	fixDate(date){
+		var Month = fixTime(date.getMonth() + 1);
+		var Day = fixTime(date.getDate());
+		var UTC = date.toUTCString();
+		var Time = UTC.substring(UTC.indexOf(':')-2, UTC.indexOf(':')+6);
+		var Minutes = fixTime(date.getMinutes());
+		var Seconds = fixTime(date.getSeconds());
+		return date.getFullYear() + "-" + Month + "-" + Day + "T" + Time;
+	}
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.js-meta.xml b/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.js-meta.xml
new file mode 100644
index 0000000..e261be9
--- /dev/null
+++ b/force-app/main/default/lwc/lexLoanerArrangedEmail/lexLoanerArrangedEmail.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>54.0</apiVersion>
+    <isExposed>true</isExposed>
+    <targets>
+        <target>lightning__RecordPage</target>
+        <target>lightning__AppPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.css b/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.css
new file mode 100644
index 0000000..79456f2
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.css
@@ -0,0 +1,22 @@
+.outerBorderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    border-top : 3px solid #565959;
+}
+.borderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    margin-bottom : 7px;
+    border-top : 3px solid #565959;
+}
+.headerDorderCss{
+    border-top: 1px solid #565959;
+    border-bottom: 1px solid #D4D4D4;
+    padding:3px;
+}
+.centerCss{
+    text-align: center;
+}
+.centerCss .left{
+    margin-left: 100px;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.html b/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.html
new file mode 100644
index 0000000..c8bdbfc
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.html
@@ -0,0 +1,5 @@
+<template>
+   <div class="sisToOPDHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.js b/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.js
new file mode 100644
index 0000000..2c3c93c
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.js
@@ -0,0 +1,105 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import { NavigationMixin } from 'lightning/navigation';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+import init  from '@salesforce/apex/QISReportController.initForlexOCSMNoToReportLightingButton';
+import updateQis  from '@salesforce/apex/QISReportController.updateQisForlexOCSMNoToReportLighting';
+import UserInfo_Owner from '@salesforce/apex/TaskFeedbackController.UserInfo_Owner';
+import { updateRecord } from 'lightning/uiRecordApi';
+
+export default class lexOCSMNoToReportLighting extends LightningElement {
+	@api recordId;
+	IsLoading = true;
+	qisReportId;
+	OCSMAdministrativeReportNumber;
+    OCSMAdministrativeReportDate;
+    Awaredate;
+    err;
+    
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+             console.log(111);
+             console.log(currentPageReference);
+
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             console.log("str");
+             console.log(str);
+             this.recordId = str;
+           }
+         }
+    }
+
+    connectedCallback () {
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            this.IsLoading = false;
+            this.OCSMAdministrativeReportNumber = result.oCSMAdministrativeReportNumber;
+            this.OCSMAdministrativeReportDate = result.oCSMAdministrativeReportDate;
+            this.qisReportId = result.Id;
+            this.Awaredate = result.awaredate;
+            if (!confirm("涓嶈鎶ュ憡鍚庢棤娉曟挙鍥烇紝鏄惁缁х画锛�")) {
+            		this.dispatchEvent(new CloseActionScreenEvent());
+                    return;
+        	}
+            if (this.OCSMAdministrativeReportDate != null || this.OCSMAdministrativeReportNumber != null) {
+            		const evt = new ShowToastEvent({
+                            title : '宸茬粡鎶ュ憡鐨凲IS锛屼笉鍙互鐐瑰嚮OCSM涓嶈鎶ュ憡',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
+            }
+         	if (this.Awaredate!=null) {
+         		this.updateQisSubmit();
+         	}else{
+         		const evt = new ShowToastEvent({
+                        title : '娌℃湁AwareDate鎴栧凡缁廜CSM琛屾斂鎶ュ憡锛岃纭',
+                        message: '',
+                        variant: 'error'
+                    });
+                    this.dispatchEvent(evt);
+                    this.dispatchEvent(new CloseActionScreenEvent());
+                    return;
+         	}
+        }).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        }); 
+    }
+
+    updateRecordView(recordId) {
+        updateRecord({fields: { Id: recordId }});
+    }
+
+    updateQisSubmit(){
+        	updateQis({
+        		 recordId: this.recordId
+        		}).then(result =>{
+        			console.log('result'+result);
+                     this.err = result;
+        			if (result!='鎴愬姛') {
+                        const evt = new ShowToastEvent({
+                            title : '鏇存柊澶辫触',
+                            message: this.err,
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                    }
+                this.dispatchEvent(new CloseActionScreenEvent());
+                this.updateRecordView(this.recordId);
+        		}).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        });
+    }
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.js-meta.xml b/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.js-meta.xml
new file mode 100644
index 0000000..791ff80
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMNoToReportLighting/lexOCSMNoToReportLighting.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexOCSMNoToReportLighting">
+   <apiVersion>54.0</apiVersion>
+    <isExposed>true</isExposed>
+    <targets>
+        <target>lightning__RecordPage</target>
+        <target>lightning__AppPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.css b/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.css
new file mode 100644
index 0000000..0ca9d8e
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.css
@@ -0,0 +1,10 @@
+.toReportHolder{
+    position: relative;
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    text-align: center;
+}
+.container .uiContainerManager{
+	display: none !important;
+}/* sample css file *//* sample css file */
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.html b/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.html
new file mode 100644
index 0000000..c8bdbfc
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.html
@@ -0,0 +1,5 @@
+<template>
+   <div class="sisToOPDHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.js b/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.js
new file mode 100644
index 0000000..fe89267
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.js
@@ -0,0 +1,89 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import { NavigationMixin } from 'lightning/navigation';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+import init  from '@salesforce/apex/QISReportController.initForlexOCSMToReportLightingButton';
+import updateQis  from '@salesforce/apex/QISReportController.updateQisForlexOCSMToReportLighting';
+import UserInfo_Owner from '@salesforce/apex/TaskFeedbackController.UserInfo_Owner';
+import { updateRecord } from 'lightning/uiRecordApi';
+
+export default class lexOCSMToReportLighting extends LightningElement {
+	@api recordId;
+    str;
+    err;
+    IsLoading = true;
+    qisReportId;
+    OCSMAdministrativeReportStatus;
+    Awaredate;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+                this.IsLoading = false;
+                this.OCSMAdministrativeReportStatus = result.oCSMAdministrativeReportStatus;
+                this.qisReportId = result.Id;
+                this.Awaredate = result.awaredate;
+                if (!confirm("涓嶈鎶ュ憡鍚庢棤娉曟挙鍥烇紝鏄惁缁х画锛�")) {
+            		this.dispatchEvent(new CloseActionScreenEvent());
+                    return;
+        		}
+        		if (this.OCSMAdministrativeReportStatus == null && this.Awaredate!=null) {
+	         		this.updateQisSubmit();
+	         	}else{
+	         		const evt = new ShowToastEvent({
+                            title : '娌℃湁AwareDate鎴栧凡缁廜CSM琛屾斂鎶ュ憡锛岃纭',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
+	         	}
+        }).catch(error => {
+            console.log(error);
+        }).finally(() => {
+
+        });
+    }
+    updateRecordView(recordId) {
+        updateRecord({fields: { Id: recordId }});
+    }
+
+    updateQisSubmit(){
+        	updateQis({
+        		 recordId: this.recordId
+        		}).then(result =>{
+        			console.log('result'+result);
+                     this.err = result;
+        			if (result!='鎴愬姛') {
+                        const evt = new ShowToastEvent({
+                            title : '鏇存柊澶辫触',
+                            message: this.err,
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                    }
+                this.dispatchEvent(new CloseActionScreenEvent());
+                this.updateRecordView(this.recordId);
+        		}).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        });
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.js-meta.xml b/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.js-meta.xml
new file mode 100644
index 0000000..b0e1001
--- /dev/null
+++ b/force-app/main/default/lwc/lexOCSMToReportLighting/lexOCSMToReportLighting.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexOCSMToReportLighting">
+   <apiVersion>54.0</apiVersion>
+    <isExposed>true</isExposed>
+    <targets>
+        <target>lightning__RecordPage</target>
+        <target>lightning__AppPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js b/force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js
index 0e82f06..515ea3e 100644
--- a/force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js
+++ b/force-app/main/default/lwc/lexOSHSubmit/lexOSHSubmit.js
@@ -2,6 +2,7 @@
 import { CurrentPageReference } from "lightning/navigation";
 import { CloseActionScreenEvent } from 'lightning/actions';
 import { NavigationMixin } from 'lightning/navigation';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
 import init  from '@salesforce/apex/QISReportController.initForOSHSubmitButton';
 import updateQis  from '@salesforce/apex/QISReportController.updateQis1';
 import UserInfo_Owner from '@salesforce/apex/TaskFeedbackController.UserInfo_Owner';
@@ -44,27 +45,59 @@
             console.log('this.OSHstaff='+this.OSHstaff);
             console.log('this.OSHstaffEmail='+this.OSHstaffEmail);
          	if (this.qisStatus=='OSH妫�娴嬬敵璇�' && this.qisStatus=='瀹屾瘯') {
-         		alert('闇�瑕佸厛鐐瑰嚮锛籓SH妫�鏌ュ彈鐞嗭冀'); 
-         		return;
+                const evt = new ShowToastEvent({
+                            title : '闇�瑕佸厛鐐瑰嚮锛籓SH妫�鏌ュ彈鐞嗭冀',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
          	}
          	if (this.qisStatus!='OSH妫�娴嬩腑') {
-         		alert('宸茬粡鎻愪氦瀹℃壒');
-         		return;
+                const evt = new ShowToastEvent({
+                            title : '宸茬粡鎻愪氦瀹℃壒',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
          	}
          	if (!confirm("涓�鏃︽彁浜ゆ璁板綍浠ュ緟鎵瑰噯锛屾牴鎹偍鐨勮缃偍鍙兘涓嶅啀鑳藉缂栬緫姝よ褰曟垨灏嗕粬浠庢壒鍑嗚繃绋嬩腑璋冨洖銆傛槸鍚︾户缁紵")) {
 				return;
 			}
 			if (this.OSHstaff==null||this.OSHstaffEmail==null) {
-				alert("OSH鎷呭綋蹇呴』濉啓");
-				return;
+                const evt = new ShowToastEvent({
+                            title : 'OSH鎷呭綋蹇呴』濉啓',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
 			}
             try{
                 this.updateQisSubmit();
             }catch(err){
                 if(err.faultstring !=undefined && err.faultstring.indexOf('INVALID_SESSION_ID') != -1) {
-                    alert('褰撳墠缃戦〉宸茬櫥鍑猴紝璇锋偍閲嶆柊鐧诲綍鍚庡埛鏂拌缃戦〉锛�');
+                    const evt = new ShowToastEvent({
+                            title : '褰撳墠缃戦〉宸茬櫥鍑猴紝璇锋偍閲嶆柊鐧诲綍鍚庡埛鏂拌缃戦〉锛�',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
                 } else {
-                    alert(err.faultstring);
+                    const evt = new ShowToastEvent({
+                            title : err.faultstring,
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
                 }
                 return;
             }
diff --git a/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.css b/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.css
new file mode 100644
index 0000000..635bc6c
--- /dev/null
+++ b/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.css
@@ -0,0 +1,22 @@
+.outerBorderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    border-top : 3px solid #565959;
+}
+.borderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    margin-bottom : 7px;
+    border-top : 3px solid #565959;
+}
+.headerDorderCss{
+    border-top: 1px solid #565959;
+    border-bottom: 1px solid #D4D4D4;
+    padding:3px;
+}
+.centerCss{
+    text-align: center;
+}
+.centerCss .left{
+    margin-left: 100px;
+}/* sample css file */
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.html b/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.html
new file mode 100644
index 0000000..49a10f7
--- /dev/null
+++ b/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="sisToOPDHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.js b/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.js
new file mode 100644
index 0000000..2afabee
--- /dev/null
+++ b/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.js
@@ -0,0 +1,103 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import { NavigationMixin } from 'lightning/navigation';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+import { updateRecord } from 'lightning/uiRecordApi';
+import init  from '@salesforce/apex/QISReportController.initForlexRCRecievedButton';
+import updateQis  from '@salesforce/apex/QISReportController.updateQisForRCRecieved';
+
+export default class lexRCRecieved extends LightningElement {
+	@api recordId;
+	err;
+	IsLoading = true;
+	qisReportId;
+	qisStatus;
+	isAEProfile;
+	isPAEProfile;
+	isCNBuy;
+	 @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+             console.log(111);
+             console.log(currentPageReference);
+
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             console.log("str");
+             console.log(str);
+             this.recordId = str;
+           }
+         }
+     }
+
+     connectedCallback () {
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            this.IsLoading = false;
+            this.qisReportId = result.Id;
+            this.qisStatus = result.qIStatus;
+            this.isAEProfile = result.isAEProfile;
+            this.isPAEProfile = result.isPAEProfile;
+            this.isCNBuy = result.isCNBuy;
+            console.log('this.qisStatus='+this.qisStatus);   
+         	if (this.qisStatus!='RC妫�娴嬬敵璇�') {
+                const evt = new ShowToastEvent({
+                        title : 'OCM鏈嶅姟鏈儴宸茬粡鏀跺埌瀹炵墿',
+                        message: '',
+                        variant: 'error'
+                    });
+                this.dispatchEvent(evt);
+                this.dispatchEvent(new CloseActionScreenEvent());
+                return;
+         	}else{
+         		if (this.isAEProfile == null || this.isPAEProfile == null || this.isCNBuy != 'true') {
+         			const evt = new ShowToastEvent({
+                        title : '瀹夊叏淇℃伅鏈垽瀹氾紝璇疯仈绯昏川閲忔硶瑙勯儴',
+                        message: '',
+                        variant: 'error'
+                    });
+	                this.dispatchEvent(evt);
+	                this.dispatchEvent(new CloseActionScreenEvent());
+	                return;
+         		}else{
+         			this.updateQisSubmit();
+         		}
+         	}
+        }).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        }); 
+    }
+
+    updateRecordView(recordId) {
+        updateRecord({fields: { Id: recordId }});
+    }
+
+    updateQisSubmit(){
+        	updateQis({
+        		 recordId: this.recordId
+        		}).then(result =>{
+                    
+        			console.log('result'+result);
+        			this.err = result;
+        			if (result!='鎴愬姛') {
+                        const evt = new ShowToastEvent({
+                            title : '鏇存柊澶辫触',
+                            message: this.err,
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                    }
+                this.dispatchEvent(new CloseActionScreenEvent());
+                this.updateRecordView(this.recordId);
+        		}).catch(error => {
+           				 console.log('error='+error);
+		        }).finally(() => {
+		            
+		        });
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.js-meta.xml b/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.js-meta.xml
new file mode 100644
index 0000000..120b162
--- /dev/null
+++ b/force-app/main/default/lwc/lexRCRecieved/lexRCRecieved.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexRCRecieved">
+   <apiVersion>54.0</apiVersion>
+    <isExposed>true</isExposed>
+    <targets>
+        <target>lightning__RecordPage</target>
+        <target>lightning__AppPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSendQIS/lexSendQIS.css b/force-app/main/default/lwc/lexSendQIS/lexSendQIS.css
new file mode 100644
index 0000000..635bc6c
--- /dev/null
+++ b/force-app/main/default/lwc/lexSendQIS/lexSendQIS.css
@@ -0,0 +1,22 @@
+.outerBorderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    border-top : 3px solid #565959;
+}
+.borderCss{
+    border: 1px solid #D4D4D4;
+    border-radius : 5px;
+    margin-bottom : 7px;
+    border-top : 3px solid #565959;
+}
+.headerDorderCss{
+    border-top: 1px solid #565959;
+    border-bottom: 1px solid #D4D4D4;
+    padding:3px;
+}
+.centerCss{
+    text-align: center;
+}
+.centerCss .left{
+    margin-left: 100px;
+}/* sample css file */
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSendQIS/lexSendQIS.html b/force-app/main/default/lwc/lexSendQIS/lexSendQIS.html
new file mode 100644
index 0000000..c8bdbfc
--- /dev/null
+++ b/force-app/main/default/lwc/lexSendQIS/lexSendQIS.html
@@ -0,0 +1,5 @@
+<template>
+   <div class="sisToOPDHolder" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSendQIS/lexSendQIS.js b/force-app/main/default/lwc/lexSendQIS/lexSendQIS.js
new file mode 100644
index 0000000..f1ca368
--- /dev/null
+++ b/force-app/main/default/lwc/lexSendQIS/lexSendQIS.js
@@ -0,0 +1,121 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import { NavigationMixin } from 'lightning/navigation';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+import init  from '@salesforce/apex/QISReportController.initForlexSendQISButton';
+import sendSPO  from '@salesforce/apex/QISReportController.updateQisForSendQIS';
+import UserInfo_Owner from '@salesforce/apex/TaskFeedbackController.UserInfo_Owner';
+import { updateRecord } from 'lightning/uiRecordApi';
+
+export default class lexSendQIS extends LightningElement {
+	@api recordId;
+    str;
+    err;
+    IsLoading = true;
+    qisReportId;
+    qisRecordTypeId;
+    qisRecordName;
+    ProfileName;
+    IsSendQIS;
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+            const urlValue = currentPageReference.state.recordId;
+            if (urlValue) {
+                let str = `${urlValue}`;
+                this.recordId = str;
+            }
+        }
+    }
+
+    connectedCallback() {
+        console.log(this.recordId);
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            console.log(result);
+                this.IsLoading = false;
+                this.qisRecordTypeId = result.qisRecordTypeId;
+                this.qisReportId = result.Id;
+                this.qisRecordName = result.qisRecordName;
+                this.ProfileName = result.profileName;
+                this.IsSendQIS = result.isSendQIS;
+                if (this.qisRecordName == '2.OCSM') {
+                	const evt = new ShowToastEvent({
+                            title : '涓嶈兘鎻愪氦鍒癝PO',
+                            message: '璁板綍绫诲瀷涓�'+this.qisRecordName,
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
+                }
+
+                if (!(this.ProfileName == '绯荤粺绠$悊鍛�' || this.ProfileName == '2F4_鎶�鏈帹杩涢儴' || this.ProfileName == '2F1_鏈嶅姟绐楀彛')) {
+                	const evt = new ShowToastEvent({
+                            title : '娌℃湁鏉冮檺鎻愪氦锛岃鑱旂郴绯荤粺绠$悊鍛�',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
+                }
+
+                if (this.IsSendQIS) {
+                	const evt = new ShowToastEvent({
+                            title : '宸叉彁浜ゅ埌SPO锛岃涓嶈閲嶅鎻愪氦',
+                            message: '',
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
+                }
+                this.send2SPO();
+        }).catch(error => {
+            console.log(error.getMessage());
+        }).finally(() => {
+
+        });
+    }
+    updateRecordView(recordId) {
+        updateRecord({fields: { Id: recordId }});
+    }
+
+    send2SPO(){
+        	sendSPO({
+        		 recordId: this.recordId
+        		}).then(result =>{
+        			console.log('result'+result);
+                     this.err = result;
+        			if (result!='鎴愬姛') {
+                        const evt = new ShowToastEvent({
+                            title : '鏇存柊澶辫触',
+                            message: this.err,
+                            variant: 'error'
+                        });
+                        this.dispatchEvent(evt);
+                        this.dispatchEvent(new CloseActionScreenEvent());
+                        return;
+                    }else{
+                    	const evt = new ShowToastEvent({
+                            title : '鎻愪氦鎴愬姛锛佽鍦⊿PO绯荤粺涓畬鎴愰��鎹㈣揣鐢宠',
+                            message: '',
+                            variant: 'success'
+                        });
+		                this.dispatchEvent(evt);   
+		                this.dispatchEvent(new CloseActionScreenEvent());
+		                this.updateRecordView(this.recordId);
+                        window.location.replace("https://olympus.sharepoint.cn/sites/GSPWF/SitePages/HomePage.aspx");
+                    }
+                
+        		}).catch(error => {
+            console.log('error='+error);
+        }).finally(() => {
+            
+        });
+    }
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSendQIS/lexSendQIS.js-meta.xml b/force-app/main/default/lwc/lexSendQIS/lexSendQIS.js-meta.xml
new file mode 100644
index 0000000..814503e
--- /dev/null
+++ b/force-app/main/default/lwc/lexSendQIS/lexSendQIS.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="lexSendQIS">
+   <apiVersion>54.0</apiVersion>
+    <isExposed>true</isExposed>
+    <targets>
+        <target>lightning__RecordPage</target>
+        <target>lightning__AppPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.css b/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.css
new file mode 100644
index 0000000..ebb43d9
--- /dev/null
+++ b/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.css
@@ -0,0 +1,10 @@
+.exampleHolder{
+    position: relative;
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    text-align: center;
+}
+.container .uiContainerManager{
+	display: none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.html b/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.html
new file mode 100644
index 0000000..3eff9e8
--- /dev/null
+++ b/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="EquipmentRentalPDF" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.js b/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.js
new file mode 100644
index 0000000..54846fe
--- /dev/null
+++ b/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.js
@@ -0,0 +1,67 @@
+import { LightningElement, track, wire, api } from 'lwc';
+import { CurrentPageReference,NavigationMixin } from 'lightning/navigation';
+import { CloseActionScreenEvent } from 'lightning/actions';
+
+import init from '@salesforce/apex/SubmitExtensionApprovalProcessController.init';
+export default class lexSubmitExtensionApprovalProcess extends LightningElement {
+	@api
+	recordId;
+	IsLoading = true;
+
+	@wire(CurrentPageReference)
+	getStateParameters(currentPageReference){
+		if(currentPageReference) {
+			const urlValue = currentPageReference.state.recordId;
+			if(urlValue) {
+				let str = `${urlValue}`;
+		        this.recordId = str;
+			}
+		}
+	}
+
+	connectedCallback(){
+		init({
+			recordId:this.recordId
+		}).then(result=>{
+			var today = new Date();
+			//杩藉姞澶囧搧鐢宠鐘舵�佺‘璁わ紝宸茬粡鎻愪氦杩囩殑鐢宠锛屼笉鑳介噸澶嶆彁浜tatus__c 
+			if(result.ExtensionStatus == '濉啓瀹屾瘯' || result.ExtensionStatus == '鐢宠涓�') {
+				alert('璇风‘璁ゅ欢鏈熺敵璇风姸鎬侊紝宸茬粡鎻愪氦杩囩殑鐢宠锛屼笉鑳介噸澶嶆彁浜�');
+				return; 
+			}
+
+			var rs1 = sforce.apex.execute("RentalApplyWebService", "extension_approval_processCheck", {rentalApplyId: this.recordId});
+			if(rs1 != '1'){
+				if(rs1 == '2'){
+					//杩斿洖鍊间负2锛屽垽鏂叆鍙d负浠庡崟杩樻槸涓诲崟锛屽鏋滄槸浠庡崟锛岄偅涔堝氨闇�瑕佽烦鍘熸潵鐨勫崟涓欢鏈熼〉闈� 
+					if(result.RootRentalApply == '' || result.RootRentalApply == null){
+						window.open("/apex/RentalApplyMultiPostpone?parentId=" + this.recordId); 
+					}else {
+						window.open("/apex/RentalApplyExtensions?parentId=" + this.recordId); 
+					}
+				}else{
+					alert(rs1);
+					return
+				}
+			}else{
+				if(result.demoPurpose2 == '鍗忚鍊熺敤'){
+					alert('璇峰湪[闄勪欢]鍐呬笂浼犳柊鐨勫悎鍚岄檮浠讹紝骞朵緷鎹悎鍚屽唴鏈熼檺杩涜鏃ユ湡濉啓锛屼箣鍚庢彁浜ゅ鎵�'); 
+					return;
+				}
+				if(result.AgreementBorrowingExtensionDate =='' || result.AgreementBorrowingExtensionDate == null){
+					alert('鍗忚鍊熺敤鐨勫欢鏈熺敵璇风殑銆愬崗璁�熺敤寤舵湡鏃ユ湡銆戜笉鑳戒负绌�'); 
+					return;
+				}
+				if(result.AgreementBorrowingExtensionDate <= result.ReturnDadelineFinal){
+					alert('鍗忚鍊熺敤鐨勫欢鏈熺敵璇风殑銆愬崗璁�熺敤寤舵湡鏃ユ湡銆戝繀椤诲ぇ浜庢渶鏂伴瀹氬綊杩樻棩');
+					return; 
+				}
+				if(result.AgreementBorrowingExtensionDate <= today ){
+					alert('鍗忚鍊熺敤鐨勫欢鏈熺敵璇风殑銆愬崗璁�熺敤寤舵湡鏃ユ湡銆戝繀椤诲ぇ浜庝粖澶�');
+					return; 
+				}
+			}
+			window.open("/apex/RentalApplyExtensions?parentId=" + this.recordId); 
+		})
+	}
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.js-meta.xml b/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.js-meta.xml
new file mode 100644
index 0000000..e261be9
--- /dev/null
+++ b/force-app/main/default/lwc/lexSubmitExtensionApprovalProcess/lexSubmitExtensionApprovalProcess.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>54.0</apiVersion>
+    <isExposed>true</isExposed>
+    <targets>
+        <target>lightning__RecordPage</target>
+        <target>lightning__AppPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.html b/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.html
new file mode 100644
index 0000000..31d96b3
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="EnquiryButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.js b/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.js
new file mode 100644
index 0000000..24650e9
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.js
@@ -0,0 +1,62 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import  updateOpportunityInformation  from '@salesforce/apex/UpdateTenderInformationBatch.updateOpportunityInformation';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class lexTenderingEnquiryButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    IsLoading = true;
+    isRelateProject;//鍒ゆ柇鏄惁鍙嶅簲
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            if (result != null) {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.isRelateProject = result.isRelateProject;
+                this.EnquiryButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        })     
+    }
+    //鎷涙爣椤圭洰 鍙嶅簲璇环鐘舵��
+    EnquiryButton(){
+        if(this.isRelateProject == "鍚�"){
+            this.showToast('鎷涙姇鏍囬」鐩笉鐩稿叧鍚庝笉鑳藉弽搴旇浠风姸鎬�!','error');
+            return;
+        }
+        var listss = [];
+        listss.push(this.id);
+        updateOpportunityInformation({TenderIdList : listss}).then(result=>{
+            if(result != 'OK'){
+                this.showToast(result,'error');
+            }else {
+                this.showToast('鍙嶆槧瀹屼簡','success');
+            }
+        })
+    }
+
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+        this.dispatchEvent(new CloseActionScreenEvent());
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingEnquiryButton/lexTenderingEnquiryButton.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+	<apiVersion>54.0</apiVersion>
+	<isExposed>true</isExposed>
+	<targets>
+		<target>lightning__RecordPage</target>
+		<target>lightning__AppPage</target>
+		<target>lightning__HomePage</target>
+		<target>lightning__RecordAction</target>
+	</targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.html b/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.html
new file mode 100644
index 0000000..8e46b4b
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="IntentionButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.js b/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.js
new file mode 100644
index 0000000..f5f5d53
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.js
@@ -0,0 +1,52 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class lexTenderingIntentionButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            if (result != null) {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.IntentionButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+            }
+        })      
+    }
+
+    //鎷涙爣椤圭洰鏂板缓鎰忓悜
+    IntentionButton(){
+            // alert('濉啓澶卞崟鎶ュ憡璇风洿鎺ョ偣鍑绘嫑鏍囬〉闈€�愬け鍗曘�戞寜閽�');
+            this.showToast('濉啓澶卞崟鎶ュ憡璇风洿鎺ョ偣鍑绘嫑鏍囬〉闈€�愬け鍗曘�戞寜閽�','success');
+            var url = '/apex/NewAndEditLead?' + '00N10000009HKS5=' + this.id
+            + '&LeadSource=鎷涙爣缃�' + '&RecordTypeId=01210000000QiRf' + '&retURL=%2F' + this.id ;
+            window.open(url);
+    }
+
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+        this.dispatchEvent(new CloseActionScreenEvent());
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingIntentionButton/lexTenderingIntentionButton.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+	<apiVersion>54.0</apiVersion>
+	<isExposed>true</isExposed>
+	<targets>
+		<target>lightning__RecordPage</target>
+		<target>lightning__AppPage</target>
+		<target>lightning__HomePage</target>
+		<target>lightning__RecordAction</target>
+	</targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.html b/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.html
new file mode 100644
index 0000000..0f47a3a
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="NoStandardButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.js b/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.js
new file mode 100644
index 0000000..b071b10
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.js
@@ -0,0 +1,49 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class lexTenderingNoStandardButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    opportunityNum;
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.opportunityNum = result.opportunityNum;
+                this.NoStandardButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+        })        
+    }
+    //鎷涙爣椤圭洰涓嶅簲鏍囩敵璇�
+    NoStandardButton(){
+        if(Number(this.opportunityNum) > 0) {
+            this.showToast('椤圭洰宸插叧鑱旇繃璇环锛岃鍒拌浠烽噷鍋氫笉搴旀爣鐢宠','error');
+            return;
+        }
+        window.open ('/apex/Bidding?id='+this.id, '', 'height=350, width=600, top=200, left=350,location=no');
+    }
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+        this.dispatchEvent(new CloseActionScreenEvent());
+    }
+}
diff --git a/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingNoStandardButton/lexTenderingNoStandardButton.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+	<apiVersion>54.0</apiVersion>
+	<isExposed>true</isExposed>
+	<targets>
+		<target>lightning__RecordPage</target>
+		<target>lightning__AppPage</target>
+		<target>lightning__HomePage</target>
+		<target>lightning__RecordAction</target>
+	</targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.html b/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.html
new file mode 100644
index 0000000..40c4113
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="NotarizeButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.js b/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.js
new file mode 100644
index 0000000..e7f76d4
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.js
@@ -0,0 +1,72 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class lexTenderingNotarizeButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    status;//鐘舵��
+    profileId;//profileId id
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.status = result.status;
+                this.profileId = result.profileId.slice(0,15);
+                this.NotarizeButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+        })       
+    }
+
+    //鎷涙爣椤圭洰 鐩稿叧鎬х‘璁�
+    NotarizeButton(){
+        if( this.ProfileId!= '00e1m000000MSci'
+        && this.ProfileId!= '00e10000000Y3o5'
+        && this.ProfileId!= '00e10000000xnpR' && this.ProfileId!= '00e10000000xyK6'
+        && this.ProfileId!= '00e10000000xnpW'
+        && this.ProfileId!= '00e10000000xnpb' && this.ProfileId!= '00e10000000xyKB'
+        && this.ProfileId!= '00e10000000a7NY'
+        && this.ProfileId!= '00e10000000s2fZ'
+        && this.ProfileId!= '00e10000000s3Jp'
+        ){
+            this.showToast("鍙湁鍔╃悊鎵嶈兘杩涜鐩稿叧鎬х‘璁わ紒","error");
+            return;
+        }
+        if(this.status== '01.寰呯‘璁�' ||
+           this.status== '02.涓嶇浉鍏�' ||
+           this.status == '03.涓嶅簲鏍�' ||
+           this.status== '04.寰呭叧鑱旇浠�' 
+        ){
+            window.open (`/apex/Relevance?id=${this.id}`, '', 'height=500, width=800, top=200, left=250,location=no');
+        }
+        else{
+            this.showToast("鍏宠仈璇环鍚庝笉鑳借繘琛岀浉鍏虫�х‘璁わ紒","error");
+        }
+
+    }
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+        this.dispatchEvent(new CloseActionScreenEvent());
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingNotarizeButton/lexTenderingNotarizeButton.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+	<apiVersion>54.0</apiVersion>
+	<isExposed>true</isExposed>
+	<targets>
+		<target>lightning__RecordPage</target>
+		<target>lightning__AppPage</target>
+		<target>lightning__HomePage</target>
+		<target>lightning__RecordAction</target>
+	</targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.html b/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.html
new file mode 100644
index 0000000..71d8dbe
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="RelevancyButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.js b/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.js
new file mode 100644
index 0000000..977a883
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.js
@@ -0,0 +1,60 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+
+export default class LexTenderingRelevancyButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    ProfileId;
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+    getStateParameters(currentPageReference) {
+        if (currentPageReference) {
+          const urlValue = currentPageReference.state.recordId;
+          if (urlValue) {
+            let str = `${urlValue}`;
+            this.recordId = str;
+          }
+        }
+    }
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+                this.IsLoading = false;
+                this.id = result.Id;
+                this.ProfileId = result.profileId.slice(0,15);
+                this.RelevancyButton();
+                this.dispatchEvent(new CloseActionScreenEvent());
+        })       
+    }
+    //鎷涙爣椤圭洰 鍏宠仈宸叉湁璇环
+    RelevancyButton(){
+        if( this.ProfileId != '00e1m000000MSci'
+        && this.ProfileId != '00e10000000Y3o5'
+        && this.ProfileId != '00e10000000xnp2' && this.ProfileId != '00e10000000xzQ0'
+        && this.ProfileId != '00e10000000xnp7'&& this.ProfileId != '00e10000001220i'
+        && this.ProfileId != '00e10000000xnpH' && this.ProfileId != '00e10000000xzQA'
+        && this.ProfileId != '00e10000000hkas'
+        && this.ProfileId != '00e10000000xnpR' && this.ProfileId != '00e10000000xyK6'
+        && this.ProfileId != '00e10000000xnpW'
+        && this.ProfileId != '00e10000000Nb7i'
+        ){
+        this.showToast('鍙湁鎷呭綋鍜屽姪鐞嗘墠鑳藉叧鑱旇浠�','error');
+        return;
+        }
+        window.open ('/apex/Enquiry?id='+this.recordId, '_blank');
+    }
+
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+        this.dispatchEvent(new CloseActionScreenEvent());
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingRelevancyButton/lexTenderingRelevancyButton.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+	<apiVersion>54.0</apiVersion>
+	<isExposed>true</isExposed>
+	<targets>
+		<target>lightning__RecordPage</target>
+		<target>lightning__AppPage</target>
+		<target>lightning__HomePage</target>
+		<target>lightning__RecordAction</target>
+	</targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.html b/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.html
new file mode 100644
index 0000000..40c4113
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="NotarizeButton" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.js b/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.js
new file mode 100644
index 0000000..7c0e891
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.js
@@ -0,0 +1,46 @@
+import { LightningElement,wire,track,api} from 'lwc';
+import { CurrentPageReference } from "lightning/navigation";
+import { CloseActionScreenEvent } from 'lightning/actions';
+import  init  from '@salesforce/apex/TenderingButtonController.initTenderingController';
+import { ShowToastEvent } from 'lightning/platformShowToastEvent';
+export default class lexTenderingUsedAttachmentButton extends LightningElement {
+    @api recordId;//褰撳墠杩欐潯鏁版嵁鐨刬d
+    id;//杩斿洖鍊肩殑id  Tender_information__c鎷涙爣椤圭洰鐨刬d
+    IsLoading = true;
+
+    @wire(CurrentPageReference)
+     getStateParameters(currentPageReference) {
+         if (currentPageReference) {
+           const urlValue = currentPageReference.state.recordId;
+           if (urlValue) {
+             let str = `${urlValue}`;
+             this.recordId = str;
+           }
+         }
+     }
+    
+    connectedCallback(){
+        init({
+            recordId: this.recordId
+        }).then(result => {
+            this.IsLoading = false;
+            this.id = result.Id;
+            this.AttachmentButton();
+            this.dispatchEvent(new CloseActionScreenEvent());
+        })        
+    }
+    
+    //鎷涙爣椤圭洰 鏌ョ湅闄勪欢(鏃�)
+    AttachmentButton(){
+        window.open(`/apex/QLMAttachmentPreview?parentId=${this.id}`);
+    }
+
+    showToast(msg,type) {
+        const event = new ShowToastEvent({
+            message: msg,
+            variant: type
+        });
+        this.dispatchEvent(event);
+        this.dispatchEvent(new CloseActionScreenEvent());
+    }
+}
diff --git a/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.js-meta.xml b/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.js-meta.xml
new file mode 100644
index 0000000..2b7649d
--- /dev/null
+++ b/force-app/main/default/lwc/lexTenderingUsedAttachmentButton/lexTenderingUsedAttachmentButton.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+	<apiVersion>54.0</apiVersion>
+	<isExposed>true</isExposed>
+	<targets>
+		<target>lightning__RecordPage</target>
+		<target>lightning__AppPage</target>
+		<target>lightning__HomePage</target>
+		<target>lightning__RecordAction</target>
+	</targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.css b/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.css
new file mode 100644
index 0000000..ebb43d9
--- /dev/null
+++ b/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.css
@@ -0,0 +1,10 @@
+.exampleHolder{
+    position: relative;
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    text-align: center;
+}
+.container .uiContainerManager{
+	display: none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.html b/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.html
new file mode 100644
index 0000000..3eff9e8
--- /dev/null
+++ b/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.html
@@ -0,0 +1,5 @@
+<template>
+    <div class="EquipmentRentalPDF" if:true={IsLoading}>
+        <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+    </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.js b/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.js
new file mode 100644
index 0000000..12d6d76
--- /dev/null
+++ b/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.js
@@ -0,0 +1,44 @@
+import { LightningElement, track, wire, api } from 'lwc';
+import {CurrentPageReference,NavigationMixin} from 'lightning/navigation';
+import { CloseActionScreenEvent } from 'lightning/actions';
+
+import init from '@salesforce/apex/rentalApplyEquipmentRentalPDFController.initJumptoPDFButton';
+
+export default class rentalApplyEquipmentRentalPDF extends LightningElement {
+	@api recordId;
+	IsLoading = true;
+
+	@wire(CurrentPageReference)
+	getStateParameters(currentPageReference) {
+		console.log(currentPageReference);
+
+		if(currentPageReference) {
+			const urlValue = currentPageReference.state.recordId;
+			if(urlValue) {
+				let str = `${urlValue}`;
+		        console.log("str");
+		        console.log(str);
+		        this.recordId = str;
+			}
+		}
+	}
+
+	connectedCallback() {
+		console.log('this.recordId' + this.recordId);
+		init({
+			recordId : this.recordId
+		}).then(result => {
+			if(result != null) {
+				this.IsLoading = false;
+				let num = result.pageLength;
+				console.log("======"+this.recordId + '   ' +num);
+				console.log("https://ocsm--partial.sandbox.lightning.force.com/lightning/r/FixtureRentalPDF?raid=" + this.recordId + "&page=" + num)
+				window.location.replace("https://ocsm--partial.sandbox.lightning.force.com/apex/FixtureRentalPDF?raid=" + this.recordId + "&page=" + num);
+			}
+		})
+		.catch( error =>{
+			console.log(error);
+		})
+	}
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.js-meta.xml b/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.js-meta.xml
new file mode 100644
index 0000000..36ce96d
--- /dev/null
+++ b/force-app/main/default/lwc/rentalApplyEquipmentRentalPDF/rentalApplyEquipmentRentalPDF.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>54.0</apiVersion>
+    <isExposed>true</isExposed>
+    <targets>
+		<target>lightning__RecordPage</target>
+		<target>lightning__AppPage</target>
+		<target>lightning__HomePage</target>
+		<target>lightning__RecordAction</target>
+	</targets>
+</LightningComponentBundle>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.css b/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.css
new file mode 100644
index 0000000..af18c76
--- /dev/null
+++ b/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.css
@@ -0,0 +1,11 @@
+.Holder{
+	position: relative;
+	display: inline-block;
+	width: 80px;
+	height: 80px;
+	text-align: center;
+}
+
+.container .uiContainerManager{
+	display : none !important;
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.html b/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.html
new file mode 100644
index 0000000..960b41d
--- /dev/null
+++ b/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.html
@@ -0,0 +1,5 @@
+<template>
+      <div class="Holder" if:true={IsLoading}>
+              <lightning-spinner alternative-text="Loading" size="medium"></lightning-spinner>
+      </div>
+</template>
\ No newline at end of file
diff --git a/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.js b/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.js
new file mode 100644
index 0000000..91a23a0
--- /dev/null
+++ b/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.js
@@ -0,0 +1,659 @@
+import { LightningElement,api, track, wire } from 'lwc';
+import getUserId from '@salesforce/apex/RentalApplyControllerLWT.getUserId';
+import getProfileId from '@salesforce/apex/RentalApplyControllerLWT.getProfileId';
+import init from '@salesforce/apex/RentalApplyControllerLWT.initFromCancelSubmitButton';
+import selectRentalApplyEquipmentSetDetailByRacId from '@salesforce/apex/RentalApplyControllerLWT.selectRentalApplyEquipmentSetDetailByRacId';
+import selectQISReportById from '@salesforce/apex/RentalApplyControllerLWT.selectQISReportById';
+import selectRepairById from '@salesforce/apex/RentalApplyControllerLWT.selectRepairById';
+import selectCampaignById from '@salesforce/apex/RentalApplyControllerLWT.selectCampaignById';
+import selectRentalApplyEquipmentSetByRacId from '@salesforce/apex/RentalApplyControllerLWT.selectRentalApplyEquipmentSetByRacId';
+import selectRentalApplyById from '@salesforce/apex/RentalApplyControllerLWT.selectRentalApplyById';
+import selectUserById from '@salesforce/apex/RentalApplyControllerLWT.selectUserById';
+import selectQISreportById2 from '@salesforce/apex/RentalApplyControllerLWT.selectQISreportById2';
+import setSObjectShare from '@salesforce/apex/RentalApplyControllerLWT.setSObjectShare';
+import updateRentalApplyC from '@salesforce/apex/RentalApplyControllerLWT.updateRentalApplyC';
+import {CurrentPageReference} from 'lightning/navigation';
+import { CloseActionScreenEvent } from 'lightning/actions';
+import STATUS_PROCESS_STATE from '@salesforce/label/c.StatusProcessState';
+export default class rentalApplyLWT extends LightningElement {
+
+    contactFirstName = 'Yan';
+    contactLastName = 'Khang';
+    opportunityName = 'Possible deal';
+    clickedButtonLabel;
+
+    @api recordId;
+    @track StatusProcessState=STATUS_PROCESS_STATE;
+    Rental_Apply__c;
+    Status__c;
+    Id;
+    Yi_loaner_arranged__c;
+    RA_Status__c;
+    IsLoading=true;
+    demo_purpose2__c;
+    Follow_UP_Opp__c;
+    Statu_Achievements__c;
+    Statu_Achievements_ID__c;
+    Request_shipping_day__c;
+    Demo_purpose1__c;
+    Repair__c;
+    RecordTypeId;
+    SupplementCreated__c;
+    OPDPlan__c;
+    Campaign__c;
+    QIS_number__c;
+	RepairId__c;
+    @wire(CurrentPageReference)
+	getStateParameters(currentPageReference){
+		console.log("杩涘叆椤甸潰");
+		console.log(currentPageReference);
+		if(currentPageReference){
+			const urvalue=currentPageReference.state.recordId;
+			if(urvalue){
+				let str=`${urvalue}`;
+				console.log('str');
+				console.log(str);
+				this.recordId=str;
+			}
+		}
+	}
+
+
+	async connectedCallback(){
+		console.log(this.recordId);
+		await init({recordId:this.recordId}).then(result=>{
+			console.log(result);
+			if(result!=null){
+				this.Rental_Apply__c=result;
+				this.Status__c=result.Status__c;
+				this.Yi_loaner_arranged__c=result.Yi_loaner_arranged__c;
+				this.Id=result.Id;
+				this.RA_Status__c=result.RA_Status__c;
+			    // this.Rental_Apply__c.demo_purpose2__c=result.DemoPurpose2C;
+			    // this..Follow_UP_Opp__c=result.FollowUPOppC;
+			    // this.Rental_Apply__c.Statu_Achievements__c=result.StatuAchievementsC;
+			    // this.Rental_Apply__c.Statu_Achievements_ID__c=result.StatuAchievementsIDC;
+			    // this.Rental_Apply__c.Request_shipping_day__c=result.RequestShippingDayC;
+			    // this.Rental_Apply__c.Demo_purpose1__c=result.DemoPurpose1C;
+			    // this.Rental_Apply__c.Repair__c=result.RepairC;
+			    // this.Rental_Apply__c.RecordTypeId=result.RecordTypeId;
+			    // this.Rental_Apply__c.SupplementCreated__c=result.SupplementCreatedC;
+			    // this.Rental_Apply__c.OPDPlan__c=result.OPDPlanC;
+			    // this.Rental_Apply__c.Campaign__c=result.CampaignC;
+			    // this.Rental_Apply__c.QIS_number__c=result.QISNumberC;
+				
+				this.sumit().then(res=>{
+					console.log("鍏抽棴绐楀彛");
+					this.IsLoading=false;
+					this.dispatchEvent(new CloseActionScreenEvent());
+				}).catch(err=>{
+					console.log("error:");
+					console.log(err.message);
+					alert("鎿嶄綔澶辫触,閿欒淇℃伅:"+err.message);
+				});
+				console.log("end");
+			}
+		}).catch(err=>{
+			console.log("error:");
+			console.log(err.message);
+			console.log("鎶ラ敊缁撴潫");
+		}).finally(()=>{
+			console.log("finally");
+			
+		});
+		
+	}
+
+
+    handleClick(event) {
+        this.clickedButtonLabel = event.target.label;
+    }
+    handleContactFirstNameInputChange(event) {
+        this.contactFirstName = event.target.value;
+    }
+    cancelSubmit(){
+    	console.log('djwaijd');
+    	if (this.Rental_Apply__c.Status__c == "鍙栨秷") {
+			alert("宸茬粡鍙栨秷锛�");
+			console.log('1');
+			return;
+		}
+		if (this.Rental_Apply__c.Status__c == "鍒犻櫎") {
+			alert("宸茬粡鍒犻櫎锛�");
+			console.log('2');
+			return;
+		}
+		if(this.RA_Status__c == "宸插嚭搴�" || this.Yi_loaner_arranged__c > 0) {
+			alert("澶囧搧宸茬粡鍑哄簱锛屼笉鑳藉彇娑堬紒");
+			console.log('2');
+			return;
+		}
+		let raid = this.Id;
+		window.open("/apex/RentalApplyCancel?objId="+raid, 'RentalApplyCancel', 'width=500,height=250');
+	}
+
+	
+
+	async sumit(){
+		let buttons = document.getElementsByName('submit_approval_process'.toLowerCase());
+		for (let i=0; i<buttons.length; i++) {
+			buttons[i].className = "btnDisabled";
+			buttons[i].disabled = true;
+		}
+		//kk
+		if (!confirm("涓�鏃︽彁浜ゆ璁板綍浠ュ緟鎵瑰噯锛屾牴鎹偍鐨勮缃偍鍙兘涓嶅啀鑳藉缂栬緫姝よ褰曟垨灏嗕粬浠庢壒鍑嗚繃绋嬩腑璋冨洖銆傛槸鍚︾户缁紵")) {
+			return;
+		}
+		//1540 you 璇曠敤锛堟棤璇环锛夌洰鐨勭殑澶囧搧鐢宠鍗曪紝涓嶈兘鍏宠仈璇环淇℃伅锛�
+		if(this.Rental_Apply__c.demo_purpose2__c == '璇曠敤锛堟棤璇环锛�' && this.Rental_Apply__c.Follow_UP_Opp__c !=null && this.Rental_Apply__c.Follow_UP_Opp__c != ''){
+			alert('璇曠敤锛堟棤璇环锛夌洰鐨勭殑澶囧搧鐢宠鍗曪紝涓嶈兘鍏宠仈璇环淇℃伅锛�');
+			return;
+		}
+		// 宸茶喘寰呰揣鐨勭敵璇峰崟瀹℃壒鏃讹紝闇�瑕乧heck娉ㄦ畫鐨勭姸鎬�
+		if (this.Rental_Apply__c.Statu_Achievements__c!=null&&this.Rental_Apply__c.Statu_Achievements__c!='') {
+
+			let SaID=this.Rental_Apply__c.Statu_Achievements_ID__c;
+			let rtn = sforce.apex.execute("RentalApplyWebService","RentalApplyCheckForSAoneEle",{SaID:SaID});
+			if(rtn!='Fin'){
+				alert(rtn);
+				return;
+			}
+		}
+		// 甯屾湜鍒拌揣鏃ヤ笉鑳芥棭浜庣敵璇锋彁浜ゆ棩-0418杩藉姞
+		let d=new Date();
+		if (this.Rental_Apply__c.Request_shipping_day__c < d ) {
+			alert('甯屾湜鍒拌揣鏃ヤ笉鑳芥棭浜庣敵璇锋彁浜ゆ棩');
+			return;
+		}
+		let raesdList = new Array();
+		await selectRentalApplyEquipmentSetDetailByRacId({recordId:this.recordId}).then(result=>{
+			console.log(result);
+			if(result!=null){
+				raesdList=result;
+				let modelSet = new Set();
+				let stoppedSet = new Set();
+				for(let i=0;i<raesdList.length;i++){
+					modelSet.add(raesdList[i].Fixture_Model_No_F__c);
+					if('false' == raesdList[i].Product_Status_Flag_F__c
+					&& (this.Rental_Apply__c.demo_purpose2__c == '璇曠敤锛堟湁璇环锛�' || this.Rental_Apply__c.demo_purpose2__c == '璇曠敤锛堟棤璇环锛�')){
+						stoppedSet.add(raesdList[i].Fixture_Model_No_F__c);
+					}
+				}
+				if(stoppedSet.size> 0) {
+					alert( Array.from(stoppedSet).join('锛�') + ' 浜у搧娉ㄥ唽璇佺姸鎬佷负鍋滄锛屼笉鍙敵璇�');
+					return;
+				}
+			}
+		}).catch(err=>{
+			console.log("selectRentalApplyEquipmentSetDetailByRacId error:");
+			console.log(err.message);
+			console.log("鎶ラ敊缁撴潫");
+		}).finally(()=>{
+		});
+
+
+
+		if(this.Rental_Apply__c.demo_purpose2__c == '绱㈣禂QIS'){
+			let DeliveryGood = new Array();
+			await selectQISReportById({recordId:this.Rental_Apply__c.QIS_number__c}).then(result=>{
+				console.log(result);
+				DeliveryGood=result;	
+			}).catch(err=>{
+				console.log("selectQISReportById error:");
+				console.log(err.message);
+			}).finally(()=>{
+			});
+			console.log(DeliveryGood);	
+			let records= DeliveryGood;
+			if(records.length == 0 || !modelSet.has(records[0].nonyushohin__r.Product2.Fixture_Model_No_T__c)){
+				alert('鐢宠鐨勫瀷鍙峰繀椤讳笌QIS鐢宠鍨嬪彿涓�鑷�');
+				return;
+			}
+		}
+		if(this.Rental_Apply__c.Repair__c==null){
+			console.log("Repair__c涓虹┖")
+		}else{
+			if( this.Rental_Apply__c.Repair__c != ''){
+				console.log("hhh7.1.1");
+				let DeliveryGood ;
+				let records;
+				await selectRepairById({recordId:this.Rental_Apply__c.Repair__c}).then(result=>{
+					console.log(result);
+					DeliveryGood=result;	
+					records=result;
+				}).catch(err=>{
+					console.log("selectRepairById error:");
+					console.log(err.message);
+				}).finally(()=>{
+				});
+				if(records==null||records.length==0){
+					console.log("records涓虹┖");
+				}else{
+					if(this.Rental_Apply__c.Demo_purpose1__c == '缁翠慨浠g敤' && this.Rental_Apply__c.demo_purpose2__c != '绱㈣禂QIS') {
+						if(!modelSet.has(records[0].Delivered_Product__r.Product2.Fixture_Model_No_T__c)){
+							alert('鐢宠鐨勫瀷鍙峰繀椤讳笌閫佷慨鐨勫瀷鍙蜂竴鑷�');
+							return;
+						}
+					}
+					if(this.Rental_Apply__c.Demo_purpose1__c==null){
+						console.log("Demo_purpose1__c涓虹┖");
+					}else if(this.Rental_Apply__c.Demo_purpose1__c == '缁翠慨浠g敤' && this.Rental_Apply__c.demo_purpose2__c == '涓�鑸敤鎴�' ){
+						if (records[0].Repair_Estimated_date_formula__c == null) {
+							alert('涓�鑸淮淇棤鎶ヤ环鏃ワ紝涓嶅彲鍊熺敤澶囧搧');
+							return;
+						}
+
+						else if (records[0].Repair_Estimated_date_formula__c < '2019-07-01' && records[0].Agreed_Date__c == null) {
+							alert('鎶ヤ环鏃ュ湪2019/7/1涔嬪墠涓旀埛鍚屾剰鏃ヤ负绌猴紝涓嶅彲鍊熺敤澶囧搧');
+							return;
+						}
+						//20210608 ljh SFDC-C3CCN4 start
+						if(records[0].Repair_Rank__c == '' || records[0].Repair_Rank__c == null){
+							alert('鎶ヤ环绛夌骇涓虹┖涓嶈兘鐢宠澶囧搧');
+							return;
+						}else{
+							if(records[0].DW_Sign_Txt__c == 'false' && records[0].Repair_Rank__c == 'DW'){
+								alert('DW鎶ヤ环绛夌骇涓嬫鍨嬪彿涓嶇鍚堝鍝佺敵璇峰�熺敤鏉′欢');
+								return;
+							}
+							if(records[0].Repair_Rank__c == 'D1'
+								||records[0].Repair_Rank__c == 'D2'
+								||records[0].Repair_Rank__c == 'D3'
+								||records[0].Repair_Rank__c == 'E2'){
+								alert('鎶ヤ环绛夌骇涓嶇鍚堝鍝佺敵璇峰�熺敤鏉′欢');
+								return;
+							}
+						}
+					//20210608 ljh SFDC-C3CCN4 end
+					}
+					if(this.Rental_Apply__c.Demo_purpose1__c ==null){
+						console.log("Demo_purpose1__c涓虹┖");
+					}else if(this.Rental_Apply__c.Demo_purpose1__c == '缁翠慨浠g敤' && this.Rental_Apply__c.demo_purpose2__c == '甯傚満澶氬勾淇濅慨' ){
+						if (records[0].FSE_ApplyForRepair_Day__c == null) {
+							alert('甯傚満澶氬勾淇濅慨锛屾病鏈塠FSE淇悊鐢宠鏃锛屼笉鍙�熺敤澶囧搧');
+							return;
+						}
+					}
+					if(this.Rental_Apply__c.Demo_purpose1__c == '缁翠慨浠g敤' && this.Rental_Apply__c.demo_purpose2__c == '鏁呴殰鎺掓煡' ){
+						if (records[0].FSE_ApplyForRepair_Day__c == null) {
+							alert('鏁呴殰鎺掓煡锛屾病鏈塠FSE淇悊鐢宠鏃锛屼笉鍙�熺敤澶囧搧');
+							return;
+						}
+						if(records[0].Repair_Ordered_Date__c != null) {
+							alert('鏁呴殰鎺掓煡锛孾4.淇悊鍝丷C鍙楃悊鏃蹇呴』涓虹┖');
+							return;
+						}
+						if(records[0].IfCheckFixture__c == 'false'){
+							alert('涓嶆弧瓒虫晠闅滄帓鏌ョ洰鐨�');
+							return;
+						}
+					}
+					let profileId="";
+					await getProfileId().then(result=>{
+						console.log(result);
+						profileId=result;	
+					}).catch(err=>{
+						console.log("getProfileId error:");
+						console.log(err.message);
+					}).finally(()=>{
+					});
+					if(this.Rental_Apply__c.RecordTypeId==null){
+						console.log("RecordTypeId涓虹┖");
+					}else if (this.Rental_Apply__c.RecordTypeId != "01210000000RHIn"
+						&& profileId != '00e10000000Y3o5'
+						&& records[0].NewProductGuaranteeObject__c == '8: 甯傚満澶氬勾淇濅慨'
+						&& this.Rental_Apply__c.demo_purpose2__c != '甯傚満澶氬勾淇濅慨') {
+						alert('鏃犲伩鍖哄埆鏍囧織涓�8: 甯傚満澶氬勾淇濅慨锛屽繀椤婚�夋嫨甯傚満澶氬勾淇濅慨銆�');
+					}
+					if(records[0].Repair_Final_Inspection_Date__c != null){
+						alert('瀛樺湪淇悊鏈�缁堟娴嬫棩锛屼笉鍙�熺敤澶囧搧');
+						return;
+					}
+					if(records[0].Repair_Shipped_Date__c != null){
+						alert('瀛樺湪RC淇悊杩旈�佹棩锛屼笉鍙�熺敤澶囧搧');
+						return;
+					}
+					if(records[0].Status1__c =='0.鍒犻櫎' ||records[0].Status1__c =='0.鍙栨秷' ||records[0].Status1__c =='5.瀹屾瘯' ){
+						alert('淇悊宸茬粡缁撴潫锛屼笉鑳界敵璇峰鍝�');
+						return;
+					}
+					if ( this.Rental_Apply__c.demo_purpose2__c == '鍐嶄慨鐞�' && records[0].ReRepairObject_F__c == 'false') {
+						alert('涓嶅睘浜庡啀鍙楃悊鍙傝�冨璞★紝涓嶅彲鍊熺敤澶囧搧');
+						return;
+					}
+					if (this.Rental_Apply__c.RecordTypeId != '01210000000RHIn'
+						&& this.Rental_Apply__c.demo_purpose2__c != '淇濅慨鐢ㄦ埛'
+						&& this.Rental_Apply__c.demo_purpose2__c != '甯傚満澶氬勾淇濅慨'
+						&& records[0].Number_of_EffectiveContract__c == '鏈�' ) {
+						alert('鏈夌淮淇悎鍚�,蹇呴』閫夋嫨淇濅慨鐢ㄦ埛.');
+						return;
+					}
+					let AssetModelNo = records[0].Delivered_Product__r.Product2.Asset_Model_No__c;
+					if (this.Rental_Apply__c.RecordTypeId != '01210000000RHIn' && records[0].Number_of_EffectiveContract__c == '鏃�'
+						&& (records[0].NewProductGuaranteeObject__c == '2: 鏈嶅姟澶氬勾淇濅慨'
+						&& (AssetModelNo == 'LTF-190-10-3D' || AssetModelNo == 'LTF-S190-5' || AssetModelNo == 'CYF-VHA' || AssetModelNo == 'CYF-VA2' || AssetModelNo == 'CYF-5A'|| AssetModelNo == 'LTF-S190-10'|| AssetModelNo == 'OER-AW'|| AssetModelNo == 'URF-V'|| AssetModelNo == 'URF-V2'|| AssetModelNo == 'URF-P6'))
+						&& this.Rental_Apply__c.demo_purpose2__c != '淇濅慨鐢ㄦ埛' ) {
+						alert('姝よ澶囧瀷鍙峰骞翠繚淇紝璇烽�夋嫨淇濅慨鐢ㄦ埛.');
+						return;
+					}
+
+					if (this.Rental_Apply__c.RecordTypeId != '01210000000RHIn'
+						&& records[0].NewProductGuaranteeObject__c == '2: 鏈嶅姟澶氬勾淇濅慨'
+						&& (AssetModelNo == 'CV-V1' || AssetModelNo == 'CV-V1(A)' || AssetModelNo == 'CV-V1(B)' || AssetModelNo == 'GIF-LV1' || AssetModelNo == 'CF-LV1L' || AssetModelNo == 'CF-LV1I' || AssetModelNo == 'MAJ-1910')
+						&& (this.Rental_Apply__c.demo_purpose2__c == '涓�鑸敤鎴�' || this.Rental_Apply__c.demo_purpose2__c == '鍐嶄慨鐞�')
+						) {
+							alert('濂ヨ緣璁惧锛屼繚淇湡鍐呬笉鎻愪緵澶囧搧.');
+							return;
+					}
+				}
+				
+			}
+		} 
+
+		if(this.Rental_Apply__c.SupplementCreated__c==null){
+			console.log("SupplementCreated__c涓虹┖");
+		}else if (this.Rental_Apply__c.SupplementCreated__c == '1' && this.Rental_Apply__c.OPDPlan__c != '') {
+			let raId = this.Id;
+			//kk
+			let raesCountCheck = sforce.apex.execute("OpdPlanWebService", "raesCountCheck", {rentalApplyId: raId});
+			if(raesCountCheck != 'OK'){
+				alert(raesCountCheck);
+				return;
+			}
+		}
+		console.log("hhh10");
+		if(this.Rental_Apply__c.Campaign__c==null){
+			console.log("Campaign__c涓虹┖");
+		}else if( this.Rental_Apply__c.Campaign__c != ''){
+			let DeliveryGood = new Array();
+			// 20220324 ljh obpm update start
+			//kk1
+			let statusSting = this.StatusProcessState;
+			let statusList = statusSting.split(',');
+			// DeliveryGood = sforce.connection.query("select Status, Rental_Apply_Flag__c from Campaign where id ='{!Rental_Apply__c.Campaign__c}'");
+			// DeliveryGood = await selectCampaignById(this.Rental_Apply__c.Campaign__c);
+			await selectCampaignById({recordId:this.Rental_Apply__c.Campaign__c}).then(result=>{
+				console.log(result);
+				DeliveryGood=result;	
+			}).catch(err=>{
+				console.log("selectCampaignById error:");
+				console.log(err.message);
+			}).finally(()=>{
+			});
+			// 20220324 ljh obpm update start
+			//kk
+			let records= DeliveryGood;
+
+			let interval = records[0].Status;
+			let records_Date = records[0].Rental_Apply_Flag__c;
+			if (interval==null ) {
+				alert("璇风‘璁ゅ浼氱姸鎬�");
+				return;
+			}
+			else if (interval == '鑽夋涓�') {
+				alert('瀛︿細鐘舵�佷负鑽夋涓紝涓嶈兘鎻愪氦');
+				return;
+			}
+			else if (interval == '鐢宠涓�') {
+				alert('瀛︿細鐘舵�佷负鐢宠涓紝涓嶈兘鎻愪氦');
+				return;
+			}
+			else if (interval == '宸茬粨鏉�') {
+				alert('瀛︿細鐘舵�佷负宸茬粨鏉燂紝涓嶈兘鎻愪氦');
+				return;
+			}
+			else if (interval == '宸叉彁浜ゆ姤鍛�') {
+				alert('瀛︿細鐘舵�佷负宸叉彁浜ゆ姤鍛婏紝涓嶈兘鎻愪氦');
+				return;
+			}
+			else if (interval == '鍙栨秷鐢宠涓�') {
+				alert('瀛︿細鐘舵�佷负鍙栨秷鐢宠涓紝涓嶈兘鎻愪氦');
+				return;
+			}
+			else if (interval == '鍙栨秷') {
+				alert('瀛︿細鐘舵�佷负鍙栨秷锛屼笉鑳芥彁浜�');
+				return;
+			}
+			//kk
+			if(this.Rental_Apply__c.Request_shipping_day__c==null){
+				alert("璇风‘璁ゅ笇鏈涘埌璐ф棩鏈�");
+				return;
+			}else{
+				if (d >= this.Rental_Apply__c.Request_shipping_day__c -7) {
+					alert("蹇呴』鎻愬墠浜庡笇鏈涘埌璐ф棩7澶╀互涓婃彁浜ょ敵璇�");
+					return;
+				}
+				// 20220324 ljh obpm add start
+				if (records != null && records[0].IF_Approved__c == "true" && (records[0].Meeting_Approved_No__c == null || records[0].Meeting_Approved_No__c == "") ) {
+					alert("娌℃湁鍐宠鍙风殑锛屾殏涓嶈兘鍑哄��,璇锋洿鏂拌鍐充俊鎭��");
+					return;
+				}
+				if (records != null && records[0].IF_Approved__c == "true" && records[0].Meeting_Approved_No__c != "" && statusList.indexOf(records[0].Approved_Status__c) != -1 && records[0].Approved_Status__c != '鑽夌' ) {
+					alert("宸茬敵璇峰喅瑁佷絾鍐宠鐘舵�佷笉绗﹀悎鏉′欢銆�");
+					return;
+				}
+			}
+			
+			// 20220324 ljh obpm add end
+		}
+
+		if (this.Rental_Apply__c.QIS_number__c == null) {
+			console.log("QIS_number__c 鏄┖鐨�");
+		}else{
+			if( this.Rental_Apply__c.QIS_number__c != ''){
+				let DeliveryGood = new Array();
+				// DeliveryGood =await selectQISreportById2(this.Rental_Apply__c.QIS_ID_Line__c);
+				await selectQISreportById2({recordId:this.Rental_Apply__c.QIS_ID_Line__c}).then(result=>{
+					console.log(result);
+					DeliveryGood=result;	
+				}).catch(err=>{
+					console.log("selectQISreportById2 error:");
+					console.log(err.message);
+				}).finally(()=>{
+				});
+				let records= DeliveryGood;
+				let interval = records[0].next_action__c;
+				if (interval == '閫佸洖') {
+					alert("QIS 宸查�佸洖锛屼笉鑳藉啀鐢宠澶囧搧浜�");
+					return;
+				}
+			}
+		}
+		// share
+		let userAccess = new Array();
+		//kk
+		let t=this.Rental_Apply__c.applyUser__c+'_Edit';
+		userAccess.push(t);
+		let rtn ;
+		await setSObjectShare({sobjectName:'Rental_Apply__Share',rowCause:'ApplyUserShare__c',parentId:this.Rental_Apply__c.Id,userAccess:userAccess,ownerId:this.Rental_Apply__c.OwnerId}).then(result=>{
+			console.log(result);
+			rtn=result;	
+		}).catch(err=>{
+			console.log("setSObjectShare error:");
+			console.log(err.message);
+		}).finally(()=>{
+		});
+
+		if(rtn==null){
+			alert("rtn涓虹┖");
+			return;
+		}else{
+			if (rtn != 'OK') {
+				alert(rtn);
+				return;
+			}	
+		}
+		if(this.Rental_Apply__c.Status__c == null){
+			alert('璇峰鍝佺敵璇风姸鎬佺‘璁わ紝涓嶈兘涓虹┖');
+			return;
+		}else{
+			if (this.Rental_Apply__c.Status__c == '濉啓瀹屾瘯' ||
+				this.Rental_Apply__c.Status__c == '鐢宠涓�' ||
+				this.Rental_Apply__c.Status__c == '宸叉壒鍑�' ||
+				//鐜板湪鐢宠涔︾殑Status__c宸茬粡娌℃湁寮曞綋瀹屼簡鐘舵�併�傛墍浠ヨ繖閲屼笉闇�瑕佸垽鏂�
+				//'{!Rental_Apply__c.Status__c}' == '寮曞綋瀹屼簡' ||
+				this.Rental_Apply__c.Status__c == '宸插嚭搴撴寚绀�' ||
+				this.Rental_Apply__c.Status__c == '鍒犻櫎' ||
+				this.Rental_Apply__c.Status__c == '鍙栨秷' ) {
+					alert('璇峰鍝佺敵璇风姸鎬佺‘璁わ紝宸茬粡鎻愪氦杩囩殑鐢宠锛屼笉鑳介噸澶嶆彁浜�');
+					return;
+			}
+		}
+			// 娌℃湁鏄庣粏鐨勪竴瑙坈heck
+		let raesList = new Array();
+		// raesList = selectRentalApplyEquipmentSetByRacId(this.recordId);
+		await selectRentalApplyEquipmentSetByRacId({recordId:this.recordId}).then(result=>{
+			console.log(result);
+			raesList=result;	
+		}).catch(err=>{
+			console.log("selectRentalApplyEquipmentSetByRacId error:");
+			console.log(err.message);
+		}).finally(()=>{
+		});
+		let records= raesList;
+
+		if(records.length > 0){
+			alert('鏈夋病鏈夋槑缁嗙殑鍊熷嚭澶囧搧閰嶅涓�瑙堬紝涓嶈兘鎻愪氦');
+			return;
+		}
+		
+		let racs ;
+		await selectRentalApplyById({recordId:this.recordId}).then(result=>{
+			console.log(result);
+			racs=result;	
+		}).catch(err=>{
+			console.log("selectRentalApplyById error:");
+			console.log(err.message);
+		}).finally(()=>{
+		});
+		let racNew = racs[0];
+		let id=this.Rental_Apply__c.Id;
+		let Status__c="濉啓瀹屾瘯";
+		let userId;
+		await getUserId().then(result=>{
+			console.log(result);
+			userId=result;	
+		}).catch(err=>{
+			console.log("getUserId error:");
+			console.log(err.message);
+		}).finally(()=>{
+		});
+		let manageUsers;
+		await selectUserById({recordId:userId}).then(result=>{
+			console.log(result);
+			manageUsers=result;	
+		}).catch(err=>{
+			console.log("selectUserById error:");
+			console.log(err.message);
+		}).finally(()=>{
+		});
+		let SalesManagerSubmit__c;
+		let OPDManagerApprover__c;
+		let BuchangApprovalManagerSalesSubmit__c;
+		let OPDBuchangApprover__c;
+		if(manageUsers[0].JingliEquipmentManager__c != null){
+			SalesManagerSubmit__c = manageUsers[0].JingliEquipmentManager__r.Name;
+		// 20220930 ljh SWAG-CJR8S7 start
+			if(racNew.OPDPlan__c != null){
+				OPDManagerApprover__c = SalesManagerSubmit__c == racNew.OPDPlan__r.SalesManager_Txt__c?SalesManagerSubmit__c:' ';
+			}
+		// 20220930 ljh SWAG-CJR8S7 end
+		}
+		if(manageUsers[0].Buzhang_Equipment_Manager__c != null){
+			BuchangApprovalManagerSalesSubmit__c = manageUsers[0].Buzhang_Equipment_Manager__r.Name; //2022-07-22 zyh
+		// 20220930 ljh SWAG-CJR8S7 start
+			if(racNew.OPDPlan__c != null){
+				OPDBuchangApprover__c = BuchangApprovalManagerSalesSubmit__c == racNew.OPDPlan__r.BuchangApprovalManagerSales_Txt__c?BuchangApprovalManagerSalesSubmit__c:' ';
+			}
+		// 20220930 ljh SWAG-CJR8S7 end
+		}
+		let resultt;
+		await updateRentalApplyC({
+			recordId:id,
+			SalesManagerSubmitC:SalesManagerSubmit__c,
+			StatusC:Status__c,
+			OPDManagerApproverC:OPDManagerApprover__c,
+			BuchangApprovalManagerSalesSubmitC:BuchangApprovalManagerSalesSubmit__c,
+			OPDBuchangApproverC:OPDBuchangApprover__c
+		}).then(res=>{
+			console.log(res);
+			if(res!=null&&res.success==false){
+				resultt=res;
+				let messages ="";
+				messages=resultt.errors[0].split(',')[1];
+				if (messages!=null&&messages!="") {
+					console.log("hhh26");
+					alert("鎿嶄綔澶辫触,閿欒淇℃伅:"+messages);
+					return;
+				}
+			}
+		}).catch(err=>{
+			console.log("updateRentalApplyC error:");
+			console.log(err.message);
+		}).finally(()=>{
+			console.log("finally");
+			console.log(resultt);
+		});
+
+		this.dispatchEvent(new CloseActionScreenEvent());
+	};
+
+	getConnectDMLErrorMessages (results) {
+		console.log("in 1");
+		console.log(results);
+		let messages = [];
+		let	i = 0;
+		let	len = results.length;
+		let	r;
+		console.log("in 1.1");
+		for (; i < len; i++) {
+			console.log("in 1.2");
+			r = results[i];
+			console.log("in 1.3");
+			if (r.success==false) {
+				console.log("in 1.4");
+				messages = messages.concat(this.getConnectDMLMessagesOfAResult(r));
+			}
+		}
+		console.log("in 1");
+		console.log("1缁撴灉");
+		console.log(messages);
+		return messages;
+	};
+	getConnectDMLMessagesOfAResult(res) {
+		console.log("in 2");
+		console.log(res);
+		let messages = [];
+		let	errors = res.errors;
+		let	i = 0;
+		let	len = errors.length;
+		let	e;
+		for (; i < len; i++) {
+			e = errors[i];
+			console.log("in 2.1");
+			messages.push(e + " " + this.getConnectDMLErrorFields(errors));
+			console.log("3缁撴灉");
+			console.log(this.getConnectDMLErrorFields(errors));
+			console.log("in 2.2");
+		}
+		console.log("in 2");
+		console.log("2缁撴灉");
+		console.log(messages);
+		return messages;
+	};
+	
+	getConnectDMLErrorFields (error) {
+		console.log("in 3");
+		console.log(error);
+		let fields = error;
+		if (fields.length > 0) {
+			console.log("in 3");
+			return "[" + fields + ",]"
+		} 
+		else {
+			console.log("in 3");
+			return "";
+		}
+
+	};
+}
\ No newline at end of file
diff --git a/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.js-meta.xml b/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.js-meta.xml
new file mode 100644
index 0000000..9ac5a4a
--- /dev/null
+++ b/force-app/main/default/lwc/rentalApplyLWT/rentalApplyLWT.js-meta.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata" fqn="rentalApplyLWT">
+    <apiVersion>51.0</apiVersion>
+    <isExposed>true</isExposed>
+    <targets>
+        <target>lightning__AppPage</target>
+        <target>lightning__RecordPage</target>
+        <target>lightning__HomePage</target>
+        <target>lightning__RecordAction</target>
+    </targets>
+</LightningComponentBundle>
\ No newline at end of file

--
Gitblit v1.9.1