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