From b1dadcc62a48f7179d2d2011b17488e439d9db66 Mon Sep 17 00:00:00 2001
From: 游畅 <youchang@prec-tech.com>
Date: 星期二, 17 五月 2022 15:03:40 +0800
Subject: [PATCH] LLIU-CEGCRB 【委托】【新需求】产品咨询单的确认日相关

---
 force-app/main/default/classes/calendarUtilTest.cls                                |   39 +++
 force-app/main/default/classes/calendarUtilTest.cls-meta.xml                       |    5 
 force-app/main/default/classes/UpdateInquiryFormConfirmationBatch.cls              |  105 +++++++++
 force-app/main/default/classes/UpdateInquiryFormConfirmationBatchTest.cls-meta.xml |    5 
 force-app/main/default/classes/OpportunityAndContactDailyUpdateBatch.cls           |   40 +++
 force-app/main/default/classes/UpdateInquiryFormConfirmationBatch.cls-meta.xml     |    5 
 force-app/main/default/classes/UpdateInquiryFormConfirmationBatchTest.cls          |   62 +++++
 force-app/main/default/classes/InquiryFormHandler.cls                              |  270 +++++++++++++++++++++++-
 force-app/main/default/classes/calendarUtil.cls-meta.xml                           |    5 
 force-app/main/default/classes/calendarUtil.cls                                    |  109 +++++++++
 10 files changed, 631 insertions(+), 14 deletions(-)

diff --git a/force-app/main/default/classes/InquiryFormHandler.cls b/force-app/main/default/classes/InquiryFormHandler.cls
index aa44703..d148ca9 100644
--- a/force-app/main/default/classes/InquiryFormHandler.cls
+++ b/force-app/main/default/classes/InquiryFormHandler.cls
@@ -1,12 +1,12 @@
 public without sharing class InquiryFormHandler extends Oly_TriggerHandler {
-		private Map<Id, Inquiry_form__c> newMap;
-	    private Map<Id, Inquiry_form__c> oldMap;
-	    private List<Inquiry_form__c> newList;
-	    private List<Inquiry_form__c> oldList;
+    private Map<Id, Inquiry_form__c> newMap;
+      private Map<Id, Inquiry_form__c> oldMap;
+      private List<Inquiry_form__c> newList;
+      private List<Inquiry_form__c> oldList;
 
     public InquiryFormHandler(){
 
- 		this.newMap = (Map<Id, Inquiry_form__c>) Trigger.newMap;
+     this.newMap = (Map<Id, Inquiry_form__c>) Trigger.newMap;
         this.oldMap = (Map<Id, Inquiry_form__c>) Trigger.oldMap;
         this.newList = (List<Inquiry_form__c>) Trigger.new;
         this.oldList = (List<Inquiry_form__c>) Trigger.old;
@@ -45,7 +45,7 @@
             if (oldMap != null && oldMap.containsKey(nnObj.Id)) {
                 oObj = oldMap.get(nnObj.Id);
             }
-            if (String.isNotBlank(nnObj.Hospital_Name__c) && (Trigger.isInsert || oObj.Hospital_Name__c != nnObj.Hospital_Name__c || System.Label.Inquiry_form_flag == 'True')) {
+            if (String.isNotBlank(nnObj.Hospital_Name__c) && (Trigger.isInsert || oObj.Hospital_Name__c != nnObj.Hospital_Name__c)) {// || System.Label.Inquiry_form_flag == 'True')
                 depIDList.add(nnObj.Hospital_Name__c);
             }
             if (Trigger.isUpdate && String.isBlank(nnObj.Hospital_Name__c)){
@@ -54,6 +54,7 @@
                 nnObj.Department_Class__c = null; //鎴樼暐绉戝
                 nnObj.HospitalName__c = null;     //鍖婚櫌鍚�
                 nnObj.Hospital__c = null;         //鍖婚櫌
+                nnObj.CreateDate__c = null;      //鍒涘缓鏃�
             }
            
         }
@@ -81,7 +82,7 @@
 
 
             
-        	//浜у搧淇℃伅鐨勬嫾鎺�
+          //浜у搧淇℃伅鐨勬嫾鎺�
             if (String.isNotBlank(nObj.Product1__c) && String.isNotBlank(nObj.Product1_Manual__c)){
                 nObj.Product1__c = nObj.Product1__c +';'+nObj.Product1_Manual__c;
             }else if (String.isBlank(nObj.Product1__c) && String.isNotBlank(nObj.Product1_Manual__c)){
@@ -105,13 +106,20 @@
             
             nObj.Product1_Manual__c = '';
              //20220419 you SWAG-CBUB2W start
-            //鍏紡鑰冩枃鏈�  缁橣SE鎷呭綋璧嬪��
+            //鍏紡鑰冩枃鏈�  缁橣SE鎷呭綋璧嬪�� 杩欐蹇呴』鏀惧湪杩欙紝鍥犱负鏂板垱寤虹殑鏁版嵁锛屽瓨鍦ㄧ瀹や负绌虹殑鎯呭喌锛�
             System.debug(nObj.FSE_Owner_id__c+'==123=='+nObj.FSE_Owner__c);
             if(nObj.FSE_Owner_id__c != nObj.FSE_Owner__c){
                 nObj.FSE_Owner__c = nObj.FSE_Owner_id__c;
             }
-            if(Trigger.isInsert && (nObj.Request1__c.indexOf('鏈嶅姟瀵瑰簲') !=-1 || nObj.ServiceCorrespond__c ==true)){
-                nObj.Service_Status__c ='01.鏈窡杩�';
+            if(Trigger.isInsert){
+                if( nObj.Request1__c.indexOf('鏈嶅姟瀵瑰簲') !=-1 || nObj.ServiceCorrespond__c ==true){
+                    nObj.Service_Status__c ='01.鏈窡杩�';
+                }
+                if(String.isBlank(nObj.Hospital_Name__c)){
+                    nObj.CreateDate__c = null;      //鍒涘缓鏃�
+                }else{
+                    nObj.CreateDate__c = Date.today();
+                }
             }
             if(Trigger.isUpdate){
 
@@ -122,11 +130,75 @@
 
                     }
                 }else if( nObj.Request1__c.indexOf('鏈嶅姟瀵瑰簲') ==-1 && nObj.ServiceCorrespond__c ==false){
-                       nObj.Service_Status__c ='';
+                    nObj.Service_Status__c ='';
                 }
-            }
+                if(nObj.Hospital_Name__c !=  oldMap.get(nObj.Id).Hospital_Name__c && String.isBlank(oldMap.get(nObj.Id).Hospital_Name__c)){
+                    nObj.CreateDate__c = Date.today();
+                }
+                //20220419 you SWAG-CBUB2W end
+             
+                //涓嶉渶瑕佹棩鏈燂紝璺熻繘鏃ユ湡锛屾湇鍔¤窡杩涙棩鏈燂紝鍒涘缓鎰忓悜鏃ユ湡锛屾瘮杈冩渶鏃╂棩鏈�
+                String date1;
+                String date2;
+                String date3;
+                String date4;
+                if(null != nObj.No_Need_Date__c){
+                  date1=String.valueOf(nObj.No_Need_Date__c);
+                }
+                if(null != nObj.Follow_Date__c){
+                  date2=String.valueOf(nObj.Follow_Date__c);
+                }
+                if(null != nObj.Confirmation_Date__c){
+                  date3=String.valueOf(nObj.Confirmation_Date__c);
+                }
+                if(null != nObj.Service_Follow_Date__c){
+                  date4=String.valueOf(nObj.Service_Follow_Date__c);
+                }
+
+                //鏂规硶璋冪敤 
+                 Date date_MD;
+                 if((String.isNotBlank(date1) && nObj.No_Need_Date__c !=oldMap.get(nObj.Id).No_Need_Date__c) || (String.isNotBlank(date2) && nObj.Follow_Date__c !=oldMap.get(nObj.Id).Follow_Date__c) || (String.isNotBlank(date3) && nObj.Confirmation_Date__c !=oldMap.get(nObj.Id).Confirmation_Date__c) || (String.isNotBlank(date4) && nObj.Service_Follow_Date__c !=oldMap.get(nObj.Id).Service_Follow_Date__c)){
+                    date_MD =getBigTime(date1,date2,date3,date4); 
+                    nObj.MinimumDate__c = date_MD;//鏈�灏忔棩鏈�
+                    String date5 = nObj.CreateDate__c==null?'':String.valueOf(nObj.CreateDate__c);
+                    if(null != nObj.CreateDate__c){
+                         String confdate=calendarUtil.getWorkDayNum(date5,String.valueOf(date_MD));
+                         //nObj.addError(s+'=='+date5+'==='+String.valueOf(date_MD)+'=='+e+'=='+confdate);
+                         nObj.Confirmation_days__c =Integer.valueOf(confdate);
+                         if(Integer.valueOf(confdate) > 5){
+                            nObj.TimeoutDays__c = Integer.valueOf(confdate)-5;
+                         }else{
+                            nObj.TimeoutDays__c = null;
+                         }
+                         system.debug('璺戣繖浜�3');
+                    }else{
+                         nObj.Confirmation_days__c = null;
+                         nObj.TimeoutDays__c = null;
+                         system.debug('璺戣繖浜�1');
+                    }
+                   
+                 } 
+                 //澶勭悊鑰佹暟鎹�
+                 if( System.Label.Inquiry_form_flag == 'True' && null != nObj.CreateDate__c){
+                    if(String.isNotBlank(date1) || String.isNotBlank(date2) || String.isNotBlank(date3) || String.isNotBlank(date4)){
+                       date_MD =getBigTime(date1,date2,date3,date4); 
+                       nObj.MinimumDate__c = date_MD;//鏈�灏忔棩鏈�
+                       String date5 = nObj.CreateDate__c==null?'':String.valueOf(nObj.CreateDate__c);
+                       String confdate=calendarUtil.getWorkDayNum(date5,String.valueOf(date_MD));
+                       system.debug('璺戣繖浜�2'+date5+'==='+String.valueOf(date_MD)+'=='+confdate);
+                       nObj.Confirmation_days__c =Integer.valueOf(confdate);
+                       if(Integer.valueOf(confdate) > 5){
+                            nObj.TimeoutDays__c = Integer.valueOf(confdate)-5;
+                         }else{
+                            nObj.TimeoutDays__c = null;
+                         }
+                    }
+                 }
+                 system.debug('==='+date_MD);
+                }
             
-            //20220419 you SWAG-CBUB2W end
+            
+
         }
     }
     //20220419 you SWAG-CBUB2W start
@@ -219,7 +291,65 @@
         
      }
      //20220419 you SWAG-CBUB2W end
+ //澶氫釜鏃ユ湡姣旇緝鏈�灏忔棩鏈�
+    public static Date getBigTime(String date1, String date2, String date3, String date4) {
+        system.debug(date1+'======'+date2+'====='+date3);
+         long millis1 =0;
+         Long millis2 =0;
+         Long millis3 =0;
+         Long millis4 =0;
+         List<Long> list_dateDecimal = new List<Long>();
+         if(String.isNotBlank(date1)){
+           millis1 = Datetime.valueOf(date1+' 08:00:05').getTime();
+           list_dateDecimal.add(millis1);
+         }
+         if(String.isNotBlank(date2)){
+           millis2 = Datetime.valueOf(date2+' 08:00:05').getTime();
+           list_dateDecimal.add(millis2);
+         }
+         if(String.isNotBlank(date3)){
+           millis3 = Datetime.valueOf(date3+' 08:00:05').getTime();
+           list_dateDecimal.add(millis3);
+         }
+         if(String.isNotBlank(date4)){
+           millis4 = Datetime.valueOf(date4+' 08:00:05').getTime();
+           list_dateDecimal.add(millis4);
+         }
+         
+         list_dateDecimal.sort();
+         Date date_Mid;
+         if(null !=list_dateDecimal && list_dateDecimal.size()>0){
+             Long aaa=list_dateDecimal[0];
+             DateTime dt =DateTime.newInstance(aaa);
+             date_Mid = dt.dateGmt();
+             // DateTime.newInstance
+             system.debug('鏈�灏忕殑==='+date_Mid+list_dateDecimal);
+         }
+        
+         return date_Mid;
+      
+    }
+//淇╀釜鏃ユ湡涔嬮棿鐨勫伐浣滄棩
+    public integer diff(Datetime sdate, Datetime edate){
+        integer count=0;
+        Date d1 = Date.valueOf(sdate);
+        Date d2 = Date.valueOf(edate);
+        integer wDay = d1.daysBetween(d2) ;
 
+        do{
+        if(sdate.format('EEEE') == 'Saturday') {
+        count++;
+        }
+        if(sdate.format('EEEE') == 'Sunday') {
+        count++;
+        }
+        sdate= sdate.adddays(1);
+        }while(sdate<=edate);
+
+        wDay = wDay-count+1;
+        system.debug('*************'+wDay);
+        return wDay;
+    }
     //瀹㈡埛浜哄憳褰曞叆鍚�,銆愮數璇濄�戙�愰偖绠便�戣嚜鍔ㄥ綍鍏� thh 20220321 start
     // private void getContactInformation(){
     //     List<String> ContactIdList = new List<String>();
@@ -382,6 +512,120 @@
         i++;
         i++;
         i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        i++;
+        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/OpportunityAndContactDailyUpdateBatch.cls b/force-app/main/default/classes/OpportunityAndContactDailyUpdateBatch.cls
index e5baedd..b12d6c5 100644
--- a/force-app/main/default/classes/OpportunityAndContactDailyUpdateBatch.cls
+++ b/force-app/main/default/classes/OpportunityAndContactDailyUpdateBatch.cls
@@ -89,6 +89,7 @@
             ' Salesdepartment_HP__c = \'' + salesdepartment + '\'';
         }
         system.debug('=====query:' + query);
+        //Id=\'0011000000V9OGP\' and  娴嬭瘯鐢� 缁欎竴鏉″鎴穒d
         return Database.getQueryLocator(query);
     
     }
@@ -103,6 +104,10 @@
          //20220415 you SWAG-CBUB2W start 
          updateFromHosToInquiryForm(deptUpdateList, iflog);
          //20220415 you SWAG-CBUB2W end
+
+         //20220509 you SWAG-CBUB2W start 
+         //updateFromHosToInquiryFormFSEMain(hpList, iflog);
+         //20220509 you SWAG-CBUB2W end
     }
      //鍚屾鎵�灞炵殑璇环锛堜笟鍔℃満浼氾級鐨勬墍鏈変汉
     public static void updateFromHosToContact(List<Account> deptUpdateList, BatchIF_Log__c iflog) {
@@ -134,11 +139,12 @@
      //鍚屾鎵�灞炵殑浜у搧鍜ㄨ鍗曠殑鎵�鏈変汉
     public static void updateFromHosToInquiryForm(List<Account> deptUpdateList, BatchIF_Log__c iflog) {
          List<Inquiry_form__c> updateInquiryFormList =
-            [select id, Ownerid, Hospital_Name__r.ownerId from Inquiry_form__c
+            [select id, Ownerid,Depart_Owner__c, Hospital_Name__r.ownerId from Inquiry_form__c
         where Hospital_Name__c in:deptUpdateList
         and isOwnerDiffWithAccount__c = true ];
         for (Inquiry_form__c ifo : updateInquiryFormList) {
             if (ifo.Ownerid != ifo.Hospital_Name__r.ownerId) {
+                ifo.Depart_Owner__c = ifo.Hospital_Name__r.ownerId;
                 ifo.Ownerid = ifo.Hospital_Name__r.ownerId;
             }
         }
@@ -156,7 +162,39 @@
         }
 
     }
+
     //20220415 you SWAG-CBUB2W end 
+    ////20220509 you SWAG-CBUB2W start 
+    // public static void updateFromHosToInquiryFormFSEMain(List<SObject> hpList, BatchIF_Log__c iflog) {
+    //     List<Inquiry_form__c> updateInquiryFormFSEList =
+    //        [select id, Ownerid,Hospital_Name__c,Hospital_Name__r.Name, Hospital_Name__r.ownerId,FSE_Owner__c,
+    //        Hospital_Name__r.Parent.Parent.FSE_GI_Main_Leader__c,Hospital_Name__r.Parent.Parent.FSE_SP_Main_Leader__c from Inquiry_form__c
+    //    where Hospital__c in:hpList
+    //    and isFSEDiffWithAccount__c = true ];
+    //    for (Inquiry_form__c ifo : updateInquiryFormFSEList) {
+    //        if (String.isNotBlank(ifo.Hospital_Name__r.Name) && (ifo.Hospital_Name__r.Name.contains('娑堝寲') || ifo.Hospital_Name__r.Name.contains('鍛煎惛') || ifo.Hospital_Name__r.Name.contains('ET')) && ifo.FSE_Owner__c != ifo.Hospital_Name__r.Parent.Parent.FSE_GI_Main_Leader__c) {
+    //            ifo.FSE_Owner__c = ifo.Hospital_Name__r.Parent.Parent.FSE_GI_Main_Leader__c;
+                
+    //        }
+    //        if(String.isNotBlank(ifo.Hospital_Name__r.Name) && !ifo.Hospital_Name__r.Name.contains('娑堝寲')  && !ifo.Hospital_Name__r.Name.contains('鍛煎惛') && !ifo.Hospital_Name__r.Name.contains('ET') &&  ifo.FSE_Owner__c != ifo.Hospital_Name__r.Parent.Parent.FSE_SP_Main_Leader__c){
+    //           ifo.FSE_Owner__c = ifo.Hospital_Name__r.Parent.Parent.FSE_SP_Main_Leader__c;
+    //        }
+    //    }
+    //    Integer indexCon = 0;
+    //    Database.SaveResult[] lsrUpdateInq = Database.update(updateInquiryFormFSEList, false);
+    //    for (Database.SaveResult lsrChild : lsrUpdateInq) {
+    //        if (!lsrChild.isSuccess()) {
+    //            iflog.Is_Error__c = 3;
+    //            Database.Error emsg = lsrChild.getErrors()[0];
+    //            iflog.ErrorLog__c += 'ownerId: ' + updateInquiryFormFSEList.get(indexCon).ownerId + ' \n'
+    //                                 + 'InquiryFormID: ' + updateInquiryFormFSEList.get(indexCon).Id + '\n ConLog:' + emsg.getMessage() + '\n';
+
+    //        }
+    //        indexCon ++ ;
+    //    }
+
+    //}
+    //20220509 you SWAG-CBUB2W end
     global void finish(Database.BatchableContext BC) {
         system.debug('=====iflog:' + iflog.id);
         iflog.Log__c += 'OpportunityAndContactDailyUpdateBatch finish()\n';
diff --git a/force-app/main/default/classes/UpdateInquiryFormConfirmationBatch.cls b/force-app/main/default/classes/UpdateInquiryFormConfirmationBatch.cls
new file mode 100644
index 0000000..b8310d8
--- /dev/null
+++ b/force-app/main/default/classes/UpdateInquiryFormConfirmationBatch.cls
@@ -0,0 +1,105 @@
+/*2022-05-13  you
+* 鏇存柊浜у搧鍜ㄨ鍗�
+* 娌℃湁纭鐨勶紝纭澶╂暟=浠婂ぉ-鍒涘缓鏃�----鑷姩 batch
+* 鏈夌‘璁ょ殑锛堝瓨鍦ㄦ渶灏忔棩鏈燂級 纭澶╂暟=鏈�灏忔棩鏈�-鍒涘缓鏃�-----瑙﹀彂鍣�
+*/
+global class UpdateInquiryFormConfirmationBatch implements Database.Batchable<sObject> {
+    public String query;
+    public String inqid;
+    private BatchIF_Log__c iflog;
+
+    global UpdateInquiryFormConfirmationBatch() {
+        this.query = query;
+        iflog = new BatchIF_Log__c();
+        iflog.Type__c = 'PushNotification';
+        iflog.Is_Error__c = 0;
+        iflog.Log__c = 'UpdateInquiryFormConfirmationBatch start\n';
+        iflog.ErrorLog__c = '';
+        insert iflog;
+    }
+
+    global UpdateInquiryFormConfirmationBatch(String inqid) {
+        this.inqid = inqid;
+        this.query = query;
+        iflog = new BatchIF_Log__c();
+        iflog.Type__c = 'PushNotification';
+        iflog.Is_Error__c = 0;
+        iflog.Log__c = 'UpdateInquiryFormConfirmationBatch start\n';
+        iflog.ErrorLog__c = '';
+        insert iflog;
+    }
+
+    global Database.QueryLocator start(Database.BatchableContext BC) {
+
+        query = 'select TimeoutDays__c, Id,CreateDate__c from Inquiry_form__c where CreateDate__c != null and MinimumDate__c =null';  
+        if (inqid != null && inqid !='') {
+           query += ' and id = :inqid ';
+        }
+        return Database.getQueryLocator(query);
+    }
+
+    global void execute(Database.BatchableContext BC, list<Inquiry_form__c> inquiryList) {
+        system.debug('==='+inquiryList.size());
+        String dateToday = String.valueOf(Date.today());
+        for(Inquiry_form__c inq:inquiryList){
+            String crdate = String.valueOf(inq.CreateDate__c);
+
+            String confdate=calendarUtil.getWorkDayNum(crdate,dateToday);
+            if(Integer.valueOf(confdate) > 5){
+                inq.TimeoutDays__c = Integer.valueOf(confdate)-5;
+
+             }else{
+                inq.TimeoutDays__c = null;
+             }
+             inq.Confirmation_days__c =null;
+            //inq.Confirmation_days__c =Integer.valueOf(confdate);
+            system.debug(inq.id+'=鐩稿樊鍑犲ぉ=='+confdate +'==鍒涘缓鏃�=='+crdate+'==浠婂ぉ=='+dateToday);
+        }
+        Integer indexCon = 0;
+        if(null!=inquiryList && inquiryList.size()>0){
+           system.debug('inquiryList==='+inquiryList); 
+           Database.SaveResult[] lsrUpdateCon = Database.update(inquiryList, false); 
+            for (Database.SaveResult lsrChild : lsrUpdateCon) {
+
+                if (!lsrChild.isSuccess()) {
+                    iflog.Is_Error__c = 3;
+                    Database.Error emsg = lsrChild.getErrors()[0];
+                    iflog.ErrorLog__c += 'confdays: ' + inquiryList.get(indexCon).TimeoutDays__c + ' \n'
+                                         + 'inquiryID: ' + inquiryList.get(indexCon).Id + '\n ConLog:' + emsg.getMessage() + '\n';
+                    system.debug('lsrChild.isSuccess()=='+iflog.ErrorLog__c); 
+                }
+                indexCon ++ ;   
+            } 
+        }
+        
+    }
+
+    global void finish(Database.BatchableContext BC) {
+        system.debug('=====iflog:' + iflog.id+'==='+iflog.ErrorLog__c);
+        iflog.Log__c += 'UpdateInquiryFormConfirmationBatch finish()\n';
+        iflog.Log__c += '\nUpdateInquiryFormConfirmationBatch end';
+
+        String tmp = iflog.ErrorLog__c;
+        if (tmp.length() > 65000) {
+            tmp = tmp.substring(0, 65000);
+            tmp += ' ...have more lines...';
+            iflog.ErrorLog__c = tmp;
+        }
+        String tmp2 = iflog.Log__c;
+        if (tmp2.length() > 65000) {
+            tmp2 = tmp2.substring(0, 65000);
+            tmp2 += ' ...have more lines...';
+            iflog.Log__c = tmp2;
+        }
+        if (System.Label.Log_IO_Flag == 'Keep') {
+            system.debug('jinlaile');
+            update iflog;
+        } else if (System.Label.Log_IO_Flag == 'Auto') {
+            system.debug('jinlaile1');
+            if (iflog.Is_Error__c > 0) {
+                update iflog;
+            }
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/UpdateInquiryFormConfirmationBatch.cls-meta.xml b/force-app/main/default/classes/UpdateInquiryFormConfirmationBatch.cls-meta.xml
new file mode 100644
index 0000000..91b23b8
--- /dev/null
+++ b/force-app/main/default/classes/UpdateInquiryFormConfirmationBatch.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>46.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/UpdateInquiryFormConfirmationBatchTest.cls b/force-app/main/default/classes/UpdateInquiryFormConfirmationBatchTest.cls
new file mode 100644
index 0000000..096f32f
--- /dev/null
+++ b/force-app/main/default/classes/UpdateInquiryFormConfirmationBatchTest.cls
@@ -0,0 +1,62 @@
+@isTest
+private class UpdateInquiryFormConfirmationBatchTest {
+    static  testMethod void test_method_one() {
+     //鍖婚櫌
+        List<RecordType> rectHp = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'HP'];
+        if (rectHp.size() == 0) {
+            return;
+        }
+        //绉戝
+        List<RecordType> rectDpt = [select Id from RecordType where IsActive = true and SobjectType = 'Account' and DeveloperName = 'Department_GI'];
+        if (rectDpt.size() == 0) {
+            return;
+        }
+
+        Profile p = [select Id from Profile where id =:System.Label.ProfileId_SystemAdmin];
+
+        User thisUser = [select Id from User where Id = :UserInfo.getUserId() ];
+        System.runAs ( thisUser ){
+	        Account hp = new Account(RecordTypeId = rectHp[0].Id, Name = 'hp', OwnerId = thisUser.Id);
+	        hp.FSE_GI_Main_Leader__c = thisUser.Id;
+	        hp.FSE_SP_Main_Leader__c = thisUser.Id;
+	        insert hp;
+
+	        //鎴樼暐绉戝
+	        Account dc = [select Id, Name, RecordType_DeveloperName__c, Account2__c from Account where ParentId = :hp.Id and RecordType_DeveloperName__c = 'Department_Class_GI'];
+
+	        Account dpt = new Account(RecordTypeId = rectDpt[0].Id);
+	        dpt.Name         = '*';
+	        dpt.Department_Name__c  = 'TestDepart';
+	        dpt.ParentId            = dc.Id;
+	        dpt.Department_Class__c = dc.Id;
+	        dpt.Hospital__c         = hp.Id;
+	        insert dpt;
+
+	        Account dpt1 = new Account(RecordTypeId = rectDpt[0].Id);
+	        dpt1.Name         = '*';
+	        dpt1.Department_Name__c  = 'TestDepart1';
+	        dpt1.ParentId            = dc.Id;
+	        dpt1.Department_Class__c = dc.Id;
+	        dpt1.Hospital__c         = hp.Id;
+	        insert dpt1;
+	        Inquiry_form__c inquiryform = new Inquiry_form__c();
+	        inquiryform.Name = '2019102101';
+	        inquiryform.Hospital_Name__c = dpt1.Id;
+	        inquiryform.Status__c ='01.鏈窡杩�';
+	        inquiryform.Family_Name__c ='闈�';
+	        inquiryform.Phone__c = '13844756322';
+	        inquiryform.Product1__c = '瓒呭0';
+	        inquiryform.Request1__c = '闇�瑕佹姤浠�';
+            insert inquiryform;
+            System.Test.startTest();
+            List<Inquiry_form__c> inq = [select id,CreateDate__c,MinimumDate__c from Inquiry_form__c WHERE id = : inquiryform.Id];
+            System.assertEquals(null, inq[0].MinimumDate__c);
+            System.assertEquals(1, inq.size());
+            Id execBTId = Database.executeBatch(new UpdateInquiryFormConfirmationBatch(), 100);	
+            System.Test.stopTest();
+
+        }
+        
+        
+    }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/UpdateInquiryFormConfirmationBatchTest.cls-meta.xml b/force-app/main/default/classes/UpdateInquiryFormConfirmationBatchTest.cls-meta.xml
new file mode 100644
index 0000000..5f6ac42
--- /dev/null
+++ b/force-app/main/default/classes/UpdateInquiryFormConfirmationBatchTest.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>46.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
\ No newline at end of file
diff --git a/force-app/main/default/classes/calendarUtil.cls b/force-app/main/default/classes/calendarUtil.cls
new file mode 100644
index 0000000..d382bb2
--- /dev/null
+++ b/force-app/main/default/classes/calendarUtil.cls
@@ -0,0 +1,109 @@
+public with sharing class calendarUtil {
+	//鏃ユ湡涓棿鍙栨棩鍘哅ap
+	public static Map<string,OlympusCalendar__c> getCalendarMap(Date beginDate,Date endDate){
+		Map<string,OlympusCalendar__c> calendarMap = new Map<string,OlympusCalendar__c>();
+		List<OlympusCalendar__c> calendarList = [select id,Date__c,IsWorkDay__c from OlympusCalendar__c where Date__c >= :beginDate and Date__c <= :endDate];
+		for(OlympusCalendar__c cal : calendarList){
+			Date datetemp = cal.Date__c;
+			calendarMap.put(datetemp.format(),cal);
+		}
+		return calendarMap;
+	}
+	//鑾峰彇涓や釜鏃ユ湡闂寸殑宸ヨ祫鏃�
+	public static Integer getNumfromCalendarMap (Map<string,OlympusCalendar__c> calendarMap,Date beginDate,Date endDate){
+		Integer num = 0;
+		List<OlympusCalendar__c> calendarList = new List<OlympusCalendar__c>();
+		Set<String> keys = calendarMap.keySet();
+		for(String key : keys){
+			Date keyDate = Date.valueOf(key.replace('/', '-'));
+			if(beginDate<=keyDate && keyDate <= endDate){
+				calendarList.add(calendarMap.get(key));
+			}
+		}
+		for(OlympusCalendar__c oly : calendarList){
+			if(oly.IsWorkDay__c == 1){
+				system.debug(oly.Date__c+'   '+oly.IsWorkDay__c);
+				num++;
+			}
+		}
+
+		return num;
+	}
+	//鑾峰彇鏃ユ湡num涓伐浣滄棩涔嬪悗\涔嬪墠鐨勬棩鏈�
+	public static Date getCorrespondingDate(Map<String,OlympusCalendar__c> calendarMap,Date beginDate,Integer num){
+		Integer count = 0;
+		Date temp ;
+		if(num > 0){
+			for(Integer i = 1;;i++){
+				temp = beginDate.addDays(i);
+				String str = temp.format();
+				OlympusCalendar__c oly = calendarMap.get(str);
+				if(oly.IsWorkDay__c == 1){
+					count++;
+				}
+				if(num == count){
+					break;
+				}
+			}
+		}else{
+			for(Integer i = -1;;i--){
+				temp = beginDate.addDays(i);
+				String str = temp.format();
+				OlympusCalendar__c oly = calendarMap.get(str);
+				if(oly.IsWorkDay__c == 1){
+					count--;
+				}
+				if(num == count){
+					break;
+				}
+			}
+		}
+		return temp;
+	}
+
+
+	//鑾峰彇涓や釜鏃ユ湡闂寸殑宸ヨ祫鏃�
+	public static string getWorkDayNum (String beginStr,String endStr){
+
+		Date beginDate = Date.valueOf(beginStr);
+		Date endDate = Date.valueOf(endStr); 
+
+		Map<String,OlympusCalendar__c> olmap = calendarUtil.getCalendarMap(beginDate.addDays(-1),endDate.addDays(1));
+
+		Integer count = calendarUtil.getNumfromCalendarMap(olmap,beginDate,endDate);
+
+		return String.valueOf(count);
+
+	}
+	//public static string getWorkDayNum (String beginStr,String endStr){
+
+	//	Date beginDate = Date.valueOf(beginStr.replace('/', '-'));
+	//	Date endDate = Date.valueOf(endStr.replace('/', '-')); 
+
+	//	Map<String,OlympusCalendar__c> olmap = calendarUtil.getCalendarMap(beginDate.addDays(-1),endDate.addDays(1));
+
+	//	Integer count = calendarUtil.getNumfromCalendarMap(olmap,beginDate,endDate);
+
+	//	return String.valueOf(count);
+
+	//}
+
+	//鑾峰彇days涓伐浣滄棩涔嬪墠鎴栦箣鍚庣殑鏃ユ湡
+	public static String getWorkDay(String beginStr,String days){
+
+		Date beginDate = Date.valueOf(beginStr.replace('/', '-'));
+		Integer num = Integer.valueOf(days);
+		Map<String,OlympusCalendar__c> olmap = new Map<String,OlympusCalendar__c>();
+		if(num<0){
+			olmap = calendarUtil.getCalendarMap(beginDate.addDays(num-20),beginDate.addDays(1));
+		}else{
+			olmap = calendarUtil.getCalendarMap(beginDate.addDays(-1),beginDate.addDays(num+20));
+		}
+
+		Date newDate = calendarUtil.getCorrespondingDate(olmap,beginDate,num);
+
+		return String.valueOf(newDate);
+	}
+
+
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/calendarUtil.cls-meta.xml b/force-app/main/default/classes/calendarUtil.cls-meta.xml
new file mode 100644
index 0000000..91b23b8
--- /dev/null
+++ b/force-app/main/default/classes/calendarUtil.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>46.0</apiVersion>
+    <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/calendarUtilTest.cls b/force-app/main/default/classes/calendarUtilTest.cls
new file mode 100644
index 0000000..86232b7
--- /dev/null
+++ b/force-app/main/default/classes/calendarUtilTest.cls
@@ -0,0 +1,39 @@
+@isTest
+private class calendarUtilTest {
+	
+	@isTest static void test_method_one() {
+		OlympusCalendar__c oc1 = new OlympusCalendar__c(Date__c = Date.today().addDays(1), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc2 = new OlympusCalendar__c(Date__c = Date.today().addDays(2), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc3 = new OlympusCalendar__c(Date__c = Date.today().addDays(3), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc4 = new OlympusCalendar__c(Date__c = Date.today().addDays(4), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc5 = new OlympusCalendar__c(Date__c = Date.today().addDays(5), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc6 = new OlympusCalendar__c(Date__c = Date.today().addDays(6), ChangeToHoliday__c=true, ChangeToWorkday__c=false);
+        OlympusCalendar__c oc7 = new OlympusCalendar__c(Date__c = Date.today().addDays(7), ChangeToHoliday__c=true, ChangeToWorkday__c=false);
+        OlympusCalendar__c oc8 = new OlympusCalendar__c(Date__c = Date.today().addDays(8), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc9 = new OlympusCalendar__c(Date__c = Date.today().addDays(9), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc10 = new OlympusCalendar__c(Date__c = Date.today().addDays(10), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc11 = new OlympusCalendar__c(Date__c = Date.today().addDays(11), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+        OlympusCalendar__c oc12 = new OlympusCalendar__c(Date__c = Date.today().addDays(12), ChangeToHoliday__c=false, ChangeToWorkday__c=true);
+
+        insert new OlympusCalendar__c[] {oc1,oc2,oc3,oc4,oc5,oc6,oc7,oc8,oc9,oc10,oc11,oc12};
+
+        Map<String,OlympusCalendar__c> calMap = calendarUtil.getCalendarMap(Date.today().addDays(1),Date.today().addDays(12));
+
+        Integer count = calendarUtil.getNumfromCalendarMap(calMap,Date.today().addDays(3),Date.today().addDays(8));
+
+        system.debug(calMap);
+        system.debug(count);
+
+        Date beforeDate = calendarUtil.getCorrespondingDate(calMap,Date.today().addDays(6),2);
+        Date afterDate = calendarUtil.getCorrespondingDate(calMap,Date.today().addDays(6),-2);
+        system.debug(beforeDate+'======'+afterDate);
+
+        String workdayNum = calendarUtil.getWorkDayNum(String.valueOf(Date.today().addDays(3)),String.valueOf(Date.today().addDays(8)));
+        //String workdayNum = calendarUtil.getWorkDayNum(Date.today().addDays(3),Date.today().addDays(8));
+        String workday = calendarUtil.getWorkDay(String.valueOf(Date.today().addDays(3)),'5');
+        String workday1 = calendarUtil.getWorkDay(String.valueOf(Date.today().addDays(3)),'-1');
+        system.debug(workday+'===='+workdayNum+'====='+workday1);
+        
+	}
+	
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/calendarUtilTest.cls-meta.xml b/force-app/main/default/classes/calendarUtilTest.cls-meta.xml
new file mode 100644
index 0000000..91b23b8
--- /dev/null
+++ b/force-app/main/default/classes/calendarUtilTest.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+    <apiVersion>46.0</apiVersion>
+    <status>Active</status>
+</ApexClass>

--
Gitblit v1.9.1