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