From 9518d7d3173b233f45dcbe58ab5ae2fca143dfd8 Mon Sep 17 00:00:00 2001
From: 涂煌豪 <tuhuanghao@prec-tech.com>
Date: 星期一, 16 五月 2022 10:41:51 +0800
Subject: [PATCH] 【委托】电子签收单RPA系统迁移
---
force-app/main/default/classes/NFM116BatchTest.cls-meta.xml | 5
force-app/main/default/classes/NFM116BatchSchedule.cls | 6
force-app/main/default/classes/NFMUtil.cls | 12 +
force-app/main/default/classes/NFM116Controller.cls-meta.xml | 5
force-app/main/default/classes/NFM116BatchScheduleTest.cls-meta.xml | 5
force-app/main/default/classes/NFM116ControllerTest.cls-meta.xml | 5
force-app/main/default/classes/NFM116Batch.cls | 69 +++++++++
force-app/main/default/classes/NFM116ControllerTest.cls | 58 ++++++++
force-app/main/default/classes/NFM116Controller.cls | 150 +++++++++++++++++++++
force-app/main/default/classes/NFM116Batch.cls-meta.xml | 5
force-app/main/default/classes/NFM116BatchSchedule.cls-meta.xml | 5
force-app/main/default/classes/NFM116BatchTest.cls | 72 ++++++++++
force-app/main/default/classes/NFM116BatchScheduleTest.cls | 20 ++
13 files changed, 417 insertions(+), 0 deletions(-)
diff --git a/force-app/main/default/classes/NFM116Batch.cls b/force-app/main/default/classes/NFM116Batch.cls
new file mode 100644
index 0000000..b19d9d4
--- /dev/null
+++ b/force-app/main/default/classes/NFM116Batch.cls
@@ -0,0 +1,69 @@
+global class NFM116Batch implements Database.Batchable<sObject>, Database.AllowsCallouts {
+ // 璁惧畾鍙戦�佹寚瀹氱鏀跺崟鐨処D
+ public String setId;
+ // 璁惧畾鎵ц鏃ユ湡
+ public Date setDate;
+ // 鏄惁鍙戦�佹寚瀹氭棩鏈�30澶╀箣鍚庣殑绛炬敹鍗�
+ public Boolean isAfterDate = false;
+ // 鏄惁鍙戦�佹寚瀹氱殑绛炬敹鍗�
+ public Boolean isAppoint = false;
+ // 璁惧畾鍙戦�佺殑绛炬敹鍗曠殑IdList
+ public List<String> setIdList;
+
+ // Default 鍙戦�佸綋鏃ョ鍚堟潯浠剁殑绛炬敹鍗�
+ global NFM116Batch() {
+ this.setDate = Date.today();
+ }
+ // 鍙戦�佹寚瀹氭棩鏈熺鍚堟潯浠剁殑绛炬敹鍗�, eg: testDate = Date.newInstance(2022, 05, 02),鍙戦��20220501瀹屾垚绛炬敹鐨勭鏀跺崟
+ global NFM116Batch(Date testDate) {
+ this.setDate = testDate;
+ }
+ // 鍙戦�佸湪鎸囧畾鏃ユ湡30澶╀箣鍚庣殑鎵�鏈夌鍚堟潯浠剁殑绛炬敹鍗�(isAfterDate涓簍rue鐨勬椂鍊�)
+ global NFM116Batch(Date testDate, Boolean isAfterDate) {
+ this.setDate = testDate;
+ this.isAppoint = true;
+ this.isAfterDate = isAfterDate;
+ }
+ // 鍙戦�佹寚瀹欼d鐨勭鏀跺崟
+ global NFM116Batch(String setId) {
+ this.setId = setId;
+ this.isAppoint = true;
+ }
+ // 鍙戦�佹寚瀹欼dList鐨勭鏀跺崟
+ global NFM116Batch(List<String> setIdList) {
+ this.setIdList = setIdList;
+ this.isAppoint = true;
+ }
+
+ global Database.QueryLocator start(Database.BatchableContext bc) {
+ String query = 'select Id from eSignForm__c where agencyAcceptSAPResult__c != null and HPAcceptSAPResult__c != null ';
+ if(String.isNotBlank(setId)){
+ query += ' and Id =: setId ';
+ } else if (setIdList != null && setIdList.size() > 0) {
+ query += ' and Id IN: setIdList ';
+ } else if(!isAppoint){
+ query += ' and SAPReportDate__c = ' + setDate.addDays(-1).format().replace('/', '-') ;
+ } else if(isAfterDate){
+ query += ' and SAPReportDate__c > ' + setDate.addDays(-30).format().replace('/', '-') ;
+ }
+ System.debug('thhquery:' + query);
+ return Database.getQueryLocator(query);
+ }
+
+ global void execute(Database.BatchableContext BC, List<eSignForm__c> eSignFormList) {
+ List<String> eSignFormIdList = new List<String>();
+ if(eSignFormList.size() > 0){
+ for(eSignForm__c es : eSignFormList){
+ eSignFormIdList.add(es.Id);
+ }
+ }
+ System.debug('eSignFormIdList1:' + eSignFormIdList);
+ if(eSignFormIdList.size() > 0){
+ NFM116Controller.executeNotFuture(null, eSignFormIdList);
+ }
+ }
+
+ global void finish(Database.BatchableContext BC) {
+
+ }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/NFM116Batch.cls-meta.xml b/force-app/main/default/classes/NFM116Batch.cls-meta.xml
new file mode 100644
index 0000000..40d6793
--- /dev/null
+++ b/force-app/main/default/classes/NFM116Batch.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+ <apiVersion>54.0</apiVersion>
+ <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/NFM116BatchSchedule.cls b/force-app/main/default/classes/NFM116BatchSchedule.cls
new file mode 100644
index 0000000..8245183
--- /dev/null
+++ b/force-app/main/default/classes/NFM116BatchSchedule.cls
@@ -0,0 +1,6 @@
+global class NFM116BatchSchedule implements Schedulable {
+
+ global void execute(SchedulableContext SC) {
+ Id execBTId = Database.executeBatch(new NFM116Batch(), 200);
+ }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/NFM116BatchSchedule.cls-meta.xml b/force-app/main/default/classes/NFM116BatchSchedule.cls-meta.xml
new file mode 100644
index 0000000..40d6793
--- /dev/null
+++ b/force-app/main/default/classes/NFM116BatchSchedule.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+ <apiVersion>54.0</apiVersion>
+ <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/NFM116BatchScheduleTest.cls b/force-app/main/default/classes/NFM116BatchScheduleTest.cls
new file mode 100644
index 0000000..0dd8a5e
--- /dev/null
+++ b/force-app/main/default/classes/NFM116BatchScheduleTest.cls
@@ -0,0 +1,20 @@
+@isTest
+private class NFM116BatchScheduleTest {
+ static testMethod void testExecute() {
+ // This test runs a scheduled job at midnight Sept. 3rd. 2022
+ String CRON_EXP = '0 0 0 3 9 ? 2022';
+
+ System.Test.startTest();
+ // Schedule the test job
+ String jobId = System.schedule('NFM116BatchScheduleTest', CRON_EXP, new NFM116BatchSchedule());
+ // Get the information from the CronTrigger API object
+ CronTrigger ct = [SELECT Id, CronExpression, TimesTriggered, NextFireTime FROM CronTrigger WHERE id = :jobId];
+ // Verify the expressions are the same
+ System.assertEquals(CRON_EXP, ct.CronExpression);
+ // Verify the job has not run
+ System.assertEquals(0, ct.TimesTriggered);
+ // Verify the next time the job will run
+ System.assertEquals('2022-09-03 00:00:00', String.valueOf(ct.NextFireTime));
+ System.Test.StopTest();
+ }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/NFM116BatchScheduleTest.cls-meta.xml b/force-app/main/default/classes/NFM116BatchScheduleTest.cls-meta.xml
new file mode 100644
index 0000000..40d6793
--- /dev/null
+++ b/force-app/main/default/classes/NFM116BatchScheduleTest.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+ <apiVersion>54.0</apiVersion>
+ <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/NFM116BatchTest.cls b/force-app/main/default/classes/NFM116BatchTest.cls
new file mode 100644
index 0000000..fa0efc4
--- /dev/null
+++ b/force-app/main/default/classes/NFM116BatchTest.cls
@@ -0,0 +1,72 @@
+@isTest
+private class NFM116BatchTest {
+ @TestSetup
+ static void makeData(){
+ Opportunity opp = new Opportunity();
+ opp.Opportunity_No__c = 'XB-153P-06-S151289';
+ opp.Opportunity_Category__c = 'ET';
+ opp.StageName = '鐩';
+ opp.Authorized_DB_No__c = 'XB-153P-06-S151289';
+ opp.Name = '::XB-153P-06-S151289';
+ opp.Close_Forecasted_Date__c = Date.today();
+ opp.CloseDate = Date.today();
+ opp.Opp_Confirmation_Day__c = Date.today();
+ insert opp;
+
+ Statu_Achievements__c Statu1 = new Statu_Achievements__c();
+ Statu1.ContractNO__c = 'SH-ET-191025';
+ Statu1.Opportunity__c = opp.Id;
+ Statu1.ContractAmount__c = 100;
+ insert Statu1;
+
+ eSignForm__c es = new eSignForm__c();
+ es.Statu_Achievements__c = Statu1.Id;
+ es.DNName__c = '11223344';
+ es.agencyAutoSignUpStatus__c = '宸叉壒鍑�';
+ es.agencySignUpDate__c = Date.today().addDays(-1);
+ es.salesManageConfirmDate__c = Date.today().addDays(-1);
+ es.HPSignUpStatus__c = '宸叉壒鍑�';
+ es.HPSignUpDate__c = Date.today().addDays(-1);
+ es.HPConfirmDate__c = Date.today().addDays(-1);
+ es.end_User__c = '濂戠磩';
+ insert es;
+
+ eSignFormLineItem__c esi = new eSignFormLineItem__c();
+ esi.Count__c = 2;
+ esi.agencyGoodStatus__c = '瀹屽ソ';
+ esi.eSignForm__c = es.Id;
+ insert esi;
+ eSignFormLineItem__c esi2 = new eSignFormLineItem__c();
+ esi2.Count__c = 2;
+ esi2.agencyGoodStatus__c = '瀹屽ソ';
+ esi2.eSignForm__c = es.Id;
+ insert esi2;
+ }
+ static testMethod void testMethod1(){
+ Test.startTest();
+ Database.executeBatch(new NFM116Batch(), 200);
+ Test.stopTest();
+ }
+ static testMethod void testMethod2(){
+ Test.startTest();
+ Database.executeBatch(new NFM116Batch(Date.today()), 200);
+ Test.stopTest();
+ }
+ static testMethod void testMethod3(){
+ Test.startTest();
+ Database.executeBatch(new NFM116Batch(Date.today().addDays(-30), true), 200);
+ Test.stopTest();
+ }
+ static testMethod void testMethod4(){
+ Test.startTest();
+ eSignForm__c es = [select Id from eSignForm__c];
+ Database.executeBatch(new NFM116Batch(es.Id), 200);
+ Test.stopTest();
+ }
+ static testMethod void testMethod5(){
+ Test.startTest();
+ eSignForm__c es = [select Id from eSignForm__c];
+ Database.executeBatch(new NFM116Batch(new List<String>{es.id}), 200);
+ Test.stopTest();
+ }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/NFM116BatchTest.cls-meta.xml b/force-app/main/default/classes/NFM116BatchTest.cls-meta.xml
new file mode 100644
index 0000000..40d6793
--- /dev/null
+++ b/force-app/main/default/classes/NFM116BatchTest.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+ <apiVersion>54.0</apiVersion>
+ <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/NFM116Controller.cls b/force-app/main/default/classes/NFM116Controller.cls
new file mode 100644
index 0000000..5f18438
--- /dev/null
+++ b/force-app/main/default/classes/NFM116Controller.cls
@@ -0,0 +1,150 @@
+public with sharing class NFM116Controller {
+ public static String status;
+ public class OnlineSigns {
+ public NFMUtil.Monitoring Monitoring;
+ public OnlineSign[] OnlineSign;
+ }
+ public class OnlineSign {
+ public String SoNo;
+ public String DeliveryNote;
+ public String DealerResult;
+ public String DealerDate;
+ public String HospitalResult;
+ public String HospitalDate;
+ }
+
+ /**
+ * NFM116銇�佷俊鍑︾悊
+ *
+ * @param iflog_Id //鏃ュ織琛ㄧ殑ID
+ * @param OnlineSignIdList //瑕佸彂閫佺殑绛炬敹鍗曠殑ID
+ */
+ @future (callout=true)
+ public static void callout(String iflog_Id, List<String> OnlineSignIdList) {
+ executeNotFuture(iflog_Id, OnlineSignIdList);
+ }
+
+ public static void executeNotFuture(String iflog_Id, List<String> OnlineSignIdList) {
+ if (OnlineSignIdList == null || OnlineSignIdList.size() == 0) {
+ return;
+ }
+ //MessageGroupNumber鐨勮幏鍙�
+ Datetime nowDT = Datetime.now();
+ String nowStr = nowDT.format('yyyyMMddHHmm');
+ BatchIF_Log__c iflog = new BatchIF_Log__c();
+ if(String.isNotBlank(iflog_Id)){
+ iflog = [Select Id, Name, Log__c, ErrorLog__c, MessageGroupNumber__c from BatchIF_Log__c where Id = :iflog_Id];
+ } else{
+ iflog.MessageGroupNumber__c = nowStr;
+ }
+ iflog.Log__c = 'callout start\n';
+ iflog.Type__c = 'NFM116';
+ iflog.ErrorLog__c = '';
+ String logstr = iflog.Log__c + '\nNumberOfRecord=' + OnlineSignIdList.size();
+
+ //Monitoring鐨勮瀹�
+ OnlineSigns onlineSigns = new OnlineSigns();
+ onlineSigns.Monitoring = new NFMUtil.Monitoring();
+ onlineSigns.Monitoring.TransmissionDateTime = nowStr;
+ onlineSigns.Monitoring.Text = '';
+ onlineSigns.Monitoring.Tag = 'MSGH';
+ onlineSigns.Monitoring.Sender = 'SFDC';
+ onlineSigns.Monitoring.Receiver = 'SAP';
+ onlineSigns.Monitoring.NumberOfRecord = '' + OnlineSignIdList.size();
+ onlineSigns.Monitoring.MessageType = 'NFM116';
+ onlineSigns.Monitoring.MessageGroupNumber = iflog.Name;
+
+ BatchIF_Log__c rowData = new BatchIF_Log__c();
+ try {
+ List<eSignForm__c> eSignFormList = [select Id, SANumber__c, DNName__c, agencyAcceptSAPResult__c, HPAcceptSAPResult__c, agencyAccOrSAPConfirmDate__c,
+ hpAccOrSAPConfirmDate__c from eSignForm__c where Id IN :OnlineSignIdList];
+ System.debug('eSignFormList1:' + eSignFormList);
+ onlineSigns.OnlineSign = new List<OnlineSign>();
+ for(eSignForm__c eSignForm : eSignFormList){
+ OnlineSign onlineSign = new OnlineSign();
+ onlineSign.SoNo = eSignForm.SANumber__c;
+ onlineSign.DeliveryNote = eSignForm.DNName__c;
+ onlineSign.DealerResult = eSignForm.agencyAcceptSAPResult__c;
+ onlineSign.DealerDate = NFMUtil.formatDate2Str(eSignForm.agencyAccOrSAPConfirmDate__c);
+ onlineSign.HospitalResult = eSignForm.HPAcceptSAPResult__c;
+ onlineSign.HospitalDate = NFMUtil.formatDate2Str(eSignForm.hpAccOrSAPConfirmDate__c);
+ onlineSigns.OnlineSign.add(onlineSign);
+ }
+ if(onlineSigns.OnlineSign.size() > 0){
+ NFMUtil.Monitoring Monitoring = new NFMUtil.Monitoring();
+ Monitoring.Tag = onlineSigns.Monitoring.Tag;
+ Monitoring.Sender = onlineSigns.Monitoring.Sender;
+ Monitoring.Receiver = onlineSigns.Monitoring.Receiver;
+ Monitoring.MessageType = onlineSigns.Monitoring.MessageType;
+ Monitoring.MessageGroupNumber = onlineSigns.Monitoring.MessageGroupNumber;
+ Monitoring.NumberOfRecord = onlineSigns.Monitoring.NumberOfRecord;
+ Monitoring.TransmissionDateTime = onlineSigns.Monitoring.TransmissionDateTime;
+ Monitoring.Text = '';
+ rowData = NFMUtil.makeRowData(Monitoring, 'NFM116', onlineSigns);
+ execute(rowData, iflog);
+ }
+ logstr += '\nend';
+ } catch(Exception ex) {
+ System.debug(Logginglevel.ERROR, 'NFM116_' + iflog.Name + ':' + ex.getMessage());
+ System.debug(Logginglevel.ERROR, 'NFM116_' + iflog.Name + ':' + ex.getStackTraceString());
+ logstr += ex.getMessage();
+ iflog.ErrorLog__c += ex.getMessage() + '\n';
+ iflog.ErrorLog__c += ex.getStackTraceString() + '\n';
+ }
+ System.debug('thhrowData--->'+rowData);
+ if (rowData != null) {
+ upsert rowData;
+ }
+ iflog.Log__c = logstr;
+ upsert iflog;
+ }
+
+ public static void execute(BatchIF_Log__c rowData, BatchIF_Log__c iflog) {
+ Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt);
+ String rowDataStr = NFMUtil.getRowDataStr(rowData);
+ OnlineSigns onlineSigns = (OnlineSigns) JSON.deserialize(rowDataStr, OnlineSigns.class);
+ String logstr = onlineSigns.Monitoring.MessageGroupNumber + ' start\n';
+ Boolean needUpdateIflog = false;
+ if (iflog == null) {
+ needUpdateIflog = true;
+ iflog = new BatchIF_Log__c();
+ iflog.Log__c = logstr;
+ iflog.ErrorLog__c = '';
+ } else {
+ logstr = iflog.Log__c;
+ }
+ iflog.Type__c = 'NFM116';
+ iflog.MessageGroupNumber__c = onlineSigns.Monitoring.MessageGroupNumber;
+
+ try{
+ //鍙戦�佹帴鍙�
+ status = NFMUtil.sendToSapRet(rowDataStr, NFMUtil.NFM116_ENDPOINT);
+ System.debug('NFM116Log--status->' + status);
+ if ('Accepted'.equals(status)) {
+ logstr += 'status:' + status + '\n';
+ rowData.retry_cnt__c = 0;
+ }
+ } catch (Exception ex) {
+ System.debug(Logginglevel.ERROR, 'NFM116_' + iflog.Name + ':' + ex.getMessage());
+ System.debug(Logginglevel.ERROR, 'NFM116_' + iflog.Name + ':' + ex.getStackTraceString());
+ logstr += ex.getMessage();
+ iflog.ErrorLog__c += ex.getMessage() + '\n';
+ iflog.ErrorLog__c += ex.getStackTraceString() + '\n';
+
+ if (rowData.retry_cnt__c == null) rowData.retry_cnt__c = 0;
+ if (rowData.retry_cnt__c < batch_retry_max_cnt) {
+ rowData.retry_cnt__c++;
+ LogAutoSendSchedule.assignOneMinute();
+ }
+ if (rowData.retry_cnt__c >= batch_retry_max_cnt) {
+ rowData.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + rowData.ErrorLog__c+'閿欒娆℃暟宸茬粡瓒呰繃鑷姩閫佷俊璁惧畾鐨勬渶澶ф鏁帮紝璇锋墜鍔ㄩ�佷俊';
+ }
+ }
+ iflog.Log__c = logstr;
+
+ if (needUpdateIflog) {
+ upsert iflog;
+ upsert rowData;
+ }
+ }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/NFM116Controller.cls-meta.xml b/force-app/main/default/classes/NFM116Controller.cls-meta.xml
new file mode 100644
index 0000000..40d6793
--- /dev/null
+++ b/force-app/main/default/classes/NFM116Controller.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+ <apiVersion>54.0</apiVersion>
+ <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/NFM116ControllerTest.cls b/force-app/main/default/classes/NFM116ControllerTest.cls
new file mode 100644
index 0000000..5c8883d
--- /dev/null
+++ b/force-app/main/default/classes/NFM116ControllerTest.cls
@@ -0,0 +1,58 @@
+@isTest
+private class NFM116ControllerTest {
+ @TestSetup
+ static void makeData(){
+ Opportunity opp = new Opportunity();
+ opp.Opportunity_No__c = 'XB-153P-06-S151289';
+ opp.Opportunity_Category__c = 'ET';
+ opp.StageName = '鐩';
+ opp.Authorized_DB_No__c = 'XB-153P-06-S151289';
+ opp.Name = '::XB-153P-06-S151289';
+ opp.Close_Forecasted_Date__c = Date.today();
+ opp.CloseDate = Date.today();
+ opp.Opp_Confirmation_Day__c = Date.today();
+ insert opp;
+
+ Statu_Achievements__c Statu1 = new Statu_Achievements__c();
+ Statu1.ContractNO__c = 'SH-ET-191025';
+ Statu1.Opportunity__c = opp.Id;
+ Statu1.ContractAmount__c = 100;
+ insert Statu1;
+
+ eSignForm__c es = new eSignForm__c();
+ es.Statu_Achievements__c = Statu1.Id;
+ es.DNName__c = '11223344';
+ es.agencyAutoSignUpStatus__c = '宸叉壒鍑�';
+ es.agencySignUpDate__c = Date.today().addDays(-1);
+ es.agencyConfirmDate__c = Date.today().addDays(-1);
+ es.HPSignUpStatus__c = '宸叉壒鍑�';
+ es.HPSignUpDate__c = Date.today().addDays(-1);
+ es.HPConfirmDate__c = Date.today().addDays(-1);
+ insert es;
+
+ eSignFormLineItem__c esi = new eSignFormLineItem__c();
+ esi.Count__c = 2;
+ esi.agencyGoodStatus__c = '瀹屽ソ';
+ esi.eSignForm__c = es.Id;
+ insert esi;
+ eSignFormLineItem__c esi2 = new eSignFormLineItem__c();
+ esi2.Count__c = 2;
+ esi2.agencyGoodStatus__c = '瀹屽ソ';
+ esi2.eSignForm__c = es.Id;
+ insert esi2;
+ }
+
+ static testMethod void testMethod1() {
+ List<eSignForm__c> eSignFormList = [select id from eSignForm__c];
+ List<String> eSignFormIdList = new List<String>();
+ for(eSignForm__c es : eSignFormList){
+ eSignFormIdList.add(es.Id);
+ }
+ BatchIF_Log__c iflog = new BatchIF_Log__c();
+ iflog.Log__c = 'test start \n';
+ insert iflog;
+ Test.startTest();
+ NFM116Controller.callout(iflog.Id, eSignFormIdList);
+ Test.stopTest();
+ }
+}
\ No newline at end of file
diff --git a/force-app/main/default/classes/NFM116ControllerTest.cls-meta.xml b/force-app/main/default/classes/NFM116ControllerTest.cls-meta.xml
new file mode 100644
index 0000000..40d6793
--- /dev/null
+++ b/force-app/main/default/classes/NFM116ControllerTest.cls-meta.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
+ <apiVersion>54.0</apiVersion>
+ <status>Active</status>
+</ApexClass>
diff --git a/force-app/main/default/classes/NFMUtil.cls b/force-app/main/default/classes/NFMUtil.cls
index 22e8c7e..eca54fb 100644
--- a/force-app/main/default/classes/NFMUtil.cls
+++ b/force-app/main/default/classes/NFMUtil.cls
@@ -63,6 +63,9 @@
public static String NFM703_ENDPOINT = null;
public static String NFM115_ENDPOINT = null;
+ // 鐢靛瓙绛炬敹鍗昐FDC2SAP thh 20220427 start
+ public static String NFM116_ENDPOINT = null;
+ // 鐢靛瓙绛炬敹鍗昐FDC2SAP thh 20220427 end
public static String NFM112_ENDPOINT = null;
@@ -126,6 +129,11 @@
NFM112_ENDPOINT = 'http://wdp.olympus.com.cn:8089/RESTAdapter/NFM112';
NFM115_ENDPOINT = 'https://wdp.olympus.com.cn:44301/RESTAdapter/NFM115';
+
+ // sanbox鐢靛瓙绛炬敹鍗昐FDC2SAP thh 20220427 start
+ NFM116_ENDPOINT = 'https://wdp.olympus.com.cn:44301/RESTAdapter/NFM116';
+ // sanbox鐢靛瓙绛炬敹鍗昐FDC2SAP thh 20220427 end
+
// 鏂版湇鍔$郴缁� 娴嬭瘯鐜
AWS_DOMAIN = 'https://olympus.bqbot.com';
// 鏂版湇鍔$郴缁� 鏈湴鐜锛堜复鏃讹級
@@ -185,6 +193,10 @@
//鏍锋湰绠$悊
NFM115_ENDPOINT = 'https://wdp.olympus.com.cn:44302/RESTAdapter/NFM115';
+ // 鐢靛瓙绛炬敹鍗昐FDC2SAP thh 20220427 start
+ NFM116_ENDPOINT = 'https://wdp.olympus.com.cn:44302/RESTAdapter/NFM116';
+ // 鐢靛瓙绛炬敹鍗昐FDC2SAP thh 20220427 end
+
// 鏂版湇鍔$郴缁�
AWS_DOMAIN = 'https://svc-elb.olympuschina.com';
--
Gitblit v1.9.1