Li Jun
2022-05-10 896e69e68ecc01b0b8a4c03dd010e0a31603be6e
Merge branch 'PIPLFunctionReportEnhance0509'
2个文件已添加
6个文件已修改
211 ■■■■■ 已修改文件
force-app/main/default/classes/NewAndEditCaseController.cls 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/NewAndEditReportController.cls 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/OnCallController.cls 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/pages/NewAndEditCase.page 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/pages/NewAndEditReport.page 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/pages/NewOnCall.page 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/pages/ReportExport.page 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/pages/ReportExport.page-meta.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
force-app/main/default/classes/NewAndEditCaseController.cls
@@ -32,6 +32,7 @@
    public final string ApiPrefix{get;private set;} //Add By Yin Mingjie 20220404
    public Map<string,string> AWSToSobjectEncryptedMap{get;private set;}
    public string AWSToSobjectEncryptedMapJson{get{return JSON.serialize(AWSToSobjectEncryptedMap);}}
    public String sfRecordIdForEdit{set;get;}//Add By LiJun for Edit Record from NFM609, 20220510
    public NewAndEditCaseController(ApexPages.StandardController controller) {
        isNewMode = true;
        isCloneMode = false;
@@ -56,6 +57,7 @@
            Case caseData = [select Id,RecordTypeId,AWS_Data_Id__c,ContactId,Contact.AWS_Data_Id__c from Case where id =: obj.Id];
            rtTypeId = caseData.RecordTypeId;
            AWSDataId = caseData.AWS_Data_Id__c;
            sfRecordIdForEdit = obj.Id;//Add By LiJun for Edit Record from NFM609, 20220510
            System.debug('AWSDataId=' + AWSDataId);
            Map<String,String> sfIdToAWSIdMap = new Map<String,String>();
            if(caseData.ContactId != null){
@@ -149,16 +151,19 @@
        Savepoint sp = Database.setSavepoint();
        String rid = '';
        String awsDataId = '';
        String sfRecordId = '';
        Boolean isClone = false;
        try{
            System.debug('abcde');
            awsDataId = (String)caseInfo.get('AWS_Data_Id__c');
            sfRecordId = (String)caseInfo.get('Id');
            System.debug('awsDataId = ' + awsDataId);
            Case[] cases = [select id from Case where AWS_Data_Id__c =:awsDataId];
            Case[] cases = [select id from Case where AWS_Data_Id__c =:awsDataId or id =:sfRecordId];
            if(!isNew){
                isClone = cases.size() == 0;
            }
            system.debug('isClone'+isClone + ' isNew'+isNew);
            if(isNew || isClone){
                System.debug('caseInfozhj = ' + caseInfo);
                if(!Test.isRunningTest()){
force-app/main/default/classes/NewAndEditReportController.cls
@@ -37,6 +37,7 @@
    public String contactName3{set;get;}
    public String contactName4{set;get;}
    public String contactName5{set;get;}
    public String sfRecordIdForEdit{set;get;}//Add By LiJun for Edit Record from NFM609, 20220510
    public NewAndEditReportController(ApexPages.StandardController controller) {
        ApiPrefix = 'PIBackApi';
        layoutEncryptedAPIList = new List<String>();
@@ -70,6 +71,7 @@
            rtTypeId = ReportData.RecordTypeId;
            AWSDataId = ReportData.AWS_Data_Id__c;
            sfRecordIdForEdit = obj.Id;
            Map<String,String> sfIdToAWSIdMap = new Map<String,String>();
            system.debug('ReportData.Practitioner1__r.Id:' + ReportData.Practitioner1__r.Id);
            system.debug('ReportData.Practitioner1__r.AWS_Data_Id__c:' + ReportData.Practitioner1__r.AWS_Data_Id__c);
@@ -256,12 +258,14 @@
            System.debug('自定义格式转换结束');
            String awsDataId = (String)reportInfo.get('AWS_Data_Id__c');
            String sfRecordId =  (String)reportInfo.get('Id');
            System.debug('awsDataId = ' + awsDataId);
            report__c[] reports = [select id from report__c where AWS_Data_Id__c =:awsDataId];
            report__c[] reports = [select id from report__c where AWS_Data_Id__c =:awsDataId or id =:sfRecordId];
            
            if(!isNew){
                isClone = reports.size() == 0;
            }
            system.debug('isClone'+isClone + ' isNew'+isNew);
            if(isNew){
                System.debug('reportInfo = ' + reportInfo);               
                if(!Test.isRunningTest()){
force-app/main/default/classes/OnCallController.cls
@@ -18,6 +18,7 @@
    public String PIPL_Input_Account_Error_Msg{set;get;}
    public String sobjectPrefix{set;get;}
    public String sobjecttypeForFrontEnd{set;get;}
    public String sfRecordIdForEdit{set;get;}//Add By LiJun for edit record from daily report, 20220510
    // public String sobjectId{set;get;}
    public OnCallController(ApexPages.StandardController controller) {
        // sobjectId = [SELECT CustomObjectId,CustomObjectName  FROM CustomObjectUserLicenseMetrics   where CustomObjectName ='OnCall' limit 1].CustomObjectId;
@@ -45,6 +46,7 @@
            isNewMode = false;
            On_Call__c onCallData = [select Id,AWS_Data_Id__c from On_Call__c where id =: obj.Id];
            AWSDataId = onCallData.AWS_Data_Id__c;
            sfRecordIdForEdit = obj.Id;//Add By LiJun for Edit Record from NFM609, 20220510
        }else{
            //新建
            rtTypeId = null;
@@ -113,17 +115,20 @@
        String rid = '';
        Boolean isClone = false;
        String awsDataId = '';
        String sfRecordId = '';
        try{
            System.debug('abcde'+isNew);
            awsDataId = (String)onCallInfo.get('AWS_Data_Id__c');
            sfRecordId = (String)onCallInfo.get('Id');
            if (string.isBlank(awsDataId)) {
                throw new DMLException('更新时AWS_Data_Id__c不能为空');
            }
            System.debug('awsDataId = ' + awsDataId);
            On_Call__c[] onCalls = Database.query('select id from On_Call__c where AWS_Data_Id__c =:awsDataId');
            On_Call__c[] onCalls = Database.query('select id from On_Call__c where AWS_Data_Id__c =:awsDataId or id =:sfRecordId');
            if(!isNew){
                isClone = onCalls.size() == 0;
            }
            system.debug('isClone'+isClone + ' isNew'+isNew);
            if(isNew || isClone){
                System.debug('onCallInfozhj = ' + onCallInfo);
                insert onCallInfo;
force-app/main/default/pages/NewAndEditCase.page
@@ -24,7 +24,7 @@
        //判断insert or update
        function ProcessPI(caseJson, payloadForNewPI) {
            blockme();
            if ({!isNewMode} || {!isCloneMode}) {
            if ({!isNewMode} || {!isCloneMode}||!'{!AWSDataId}') {//Add by Li Jun, if the awsdataid is blank. go to insert process
                NewPIToAWS(caseJson, payloadForNewPI)
            }else {
                UpdatePIToAWS(caseJson, payloadForNewPI)
@@ -192,10 +192,13 @@
            payloadJson.Customer_manual_Encrypted__c = r.object[0].customerManualEncrypt;
            //payloadJson.AWS_Data_Id__c = r.object[0].dataId;
            payloadJson.AWS_Data_Id__c = '{!AWSDataId}';
            if (isNewMode || {!isCloneMode}) {
            if (isNewMode || {!isCloneMode} || !'{!AWSDataId}') {
                payloadJson.AWS_Data_Id__c = r.object[0].dataId;
            } else {
                payloadJson.AWS_Data_Id__c = '{!AWSDataId}';
            }
            if('{!sfRecordIdForEdit}'){
                payloadJson.Id = '{!sfRecordIdForEdit}';
            }
            if('{!rtTypeId}'){
                payloadJson.RecordTypeId = '{!rtTypeId}';//Add by zhj for Record Type Issue 20220421
@@ -227,7 +230,7 @@
        //insert to AWS
        function NewPIToAWS(caseJson, payloadForNewPI) {
            let controllerSaveMethod = '{!$RemoteAction.NewAndEditCaseController.saveCase}';
            AWSService.insert(staticResources.newUrl, caseJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, true, insertOrUpdateBack, redirectCallBack);
            AWSService.insert(staticResources.newUrl, caseJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, {!isNewMode}, insertOrUpdateBack, redirectCallBack);
        }
        //必填字段
        function checkRequiredFieldMsg(formData) {
force-app/main/default/pages/NewAndEditReport.page
@@ -315,7 +315,7 @@
        //新建
        function NewPIToAWS(reportJson, payloadForNewPI) {
            let controllerSaveMethod = '{!$RemoteAction.NewAndEditReportController.saveReport}';
            AWSService.insert(staticResources.newUrl, reportJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, true, insertOrUpdateBack, redirectCallBack);
            AWSService.insert(staticResources.newUrl, reportJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, {!isNewMode}, insertOrUpdateBack, redirectCallBack);
        }
        //编辑
@@ -548,6 +548,9 @@
            } else {
                payloadJson.AWS_Data_Id__c = '{!AWSDataId}';
            }
            if('{!sfRecordIdForEdit}'){
                payloadJson.Id = '{!sfRecordIdForEdit}';
            }
            if('{!rtTypeId}'){
                payloadJson.RecordTypeId = '{!rtTypeId}';//Add by Li Jun for Record Type Issue 20220421
            }
force-app/main/default/pages/NewOnCall.page
@@ -60,6 +60,9 @@
            } else {
                payloadJson.AWS_Data_Id__c = '{!AWSDataId}';
            }
            if('{!sfRecordIdForEdit}'){
                payloadJson.Id = '{!sfRecordIdForEdit}';
            }
            if('{!rtTypeId}'){
                payloadJson.RecordTypeId = '{!rtTypeId}';//Add by zhj for Record Type Issue 20220421
            }
@@ -146,7 +149,7 @@
        //Insert Sensitive Information to AWS
        function NewPIToAWS(onCallJson, payloadForNewPI) {
            let controllerSaveMethod = '{!$RemoteAction.OnCallController.saveOnCall}';
            AWSService.insert(staticResources.newUrl, onCallJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, true, insertOrUpdateBack, redirectCallBack);
            AWSService.insert(staticResources.newUrl, onCallJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl,{!isNewMode}, insertOrUpdateBack, redirectCallBack);
        }
        //Check Required Fields
force-app/main/default/pages/ReportExport.page
New file
@@ -0,0 +1,160 @@
<apex:page id="page" controller="ReportExportClass">
    <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}" />
    <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}" />
    <apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}" />
    <apex:includeScript value="{!URLFOR($Resource.connection20)}"/>
    <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" />
    <head>
    </head>
    <style>
        .disabledbutton {
            pointer-events: none;
            opacity: 0.4;
        }
        .hideshow{
            visibility: hidden;
        }
    </style>
    <body>
        <script>
            // sforce.connection.sessionId = '{!GETSESSIONID()}';
            var awsList = [];
            var staticResources = JSON.parse('{!staticResource}');
            var fieldSize = '{!fieldSize}';
            function remove() {
            }
            function getPIPayload() {
                let awsList = [];
                let searchPayload = new Object();
                var fieldsInputList = '{!fieldInputList}';
                let dict = {};
                let namesField = document.getElementById("page:form:repeatBlock:repeat:0:chooseField");
                let optionsField = document.getElementById("page:form:repeatBlock:repeat:0:chooseOperation");
                let valuesField = document.getElementById("page:form:repeatBlock:repeat:0:inputText");
                if (namesField) {
                    dict['name'] = namesField.value;
                }
                if (optionsField) {
                    if (namesField.value == 'sfRecordId' && (optionsField.value == 'like' || optionsField.value == 'not like')) {
                        dict['operator'] = optionsField.value.replace('like', 'in');
                    } else {
                        dict['operator'] = optionsField.value;
                    }
                }
                if (valuesField && valuesField.value) {
                    if (namesField.value == 'sfRecordId') {
                        dict['value'] = valuesField.value.split('\n');
                    } else {
                        dict['value'] = valuesField.value;
                    }
                }
                console.log('size: ' + fieldSize);
                console.log(dict);
                awsList.push(dict);
                // for (let index = 0; index < fieldsInputList.length; index++) {
                //     let dict = {};
                //     let namesField = document.getElementById("page:form:repeatBlock:repeat:"+index+":chooseField");
                //     let optionsField = document.getElementById("page:form:repeatBlock:repeat:"+index+":chooseOperation");
                //     let valuesField = document.getElementById("page:form:repeatBlock:repeat:"+index+":inputText");
                //     if (namesField) {
                //         dict['name'] = namesField.value.toLowerCase();
                //     }
                //     if (optionsField) {
                //         dict['operator'] = optionsField.value;
                //     }
                //     if (valuesField) {
                //         dict['value'] = valuesField.value;
                //     }
                //     console.log(dict);
                // }
                return JSON.stringify(awsList);
            }
            function exportsAllData(){
                let requestAllSearchPayload = [];
                console.log('requestSearchPayload ' + requestAllSearchPayload);
                let queryBackContactName = function queryBackContactName(result){
                    console.log('result ' + result.length);
                    var blob = new Blob(["\ufeff", result]);
                    var link = document.createElement('a');
                    link.href = window.URL.createObjectURL(blob);
                    // let csvContent = "data:text/csv;charset=utf-8,\ufeff"
                    //     +result;
                    // let encodedUri = encodeURI(csvContent);
                    // let link = document.createElement("a");
                    // link.setAttribute("href", encodedUri);
                    link.setAttribute("download", "contactAll.csv");
                    document.body.appendChild(link); // Required for FF
                    unblockUI();
                    link.click(); // This will download the data file named "my_data.csv".
                };
                blockme();
                AWSService.search(staticResources.reportUrl,requestAllSearchPayload,queryBackContactName,staticResources.token);
            }
            function exportsData() {
                let requestSearchPayload = getPIPayload();
                if (JSON.parse(requestSearchPayload) && JSON.parse(requestSearchPayload)[0].value) {
                    console.log('requestSearchPayload ' + requestSearchPayload);
                    let queryBackContactName = function queryBackContactName(result){
                        console.log('result ' + result.length);
                        var blob = new Blob(["\ufeff", result]);
                        var link = document.createElement('a');
                        link.href = window.URL.createObjectURL(blob);
                        // let csvContent = "data:text/csv;charset=utf-8,\ufeff"
                        //     +result;
                        // let encodedUri = encodeURI(csvContent);
                        // let link = document.createElement("a");
                        // link.setAttribute("href", encodedUri);
                        link.setAttribute("download", "contact.csv");
                        document.body.appendChild(link); // Required for FF
                        unblockUI();
                        link.click(); // This will download the data file named "my_data.csv".
                    };
                    blockme();
                    AWSService.search(staticResources.reportUrl,requestSearchPayload,queryBackContactName,staticResources.token);
                } else {
                    alert("请先输入Salesforce ID值");
                }
            }
        </script>
        <apex:form id="form">
            报表对象:
            <br/>
            <apex:selectList id="chooseObject" value="{!selectedObject}" size="1">
                <apex:selectOptions value="{!objectOptions}"/>
            </apex:selectList>
            <apex:pageBlock id="repeatBlock">
                <apex:repeat id="repeat" value="{!fieldInputList}" var="fieldInput">
                    <!-- <apex:selectOption value = "{!filedOptions}"/> -->
                    <apex:selectList id="chooseField" value="{!fieldInput.fieldAPI}" size="1">
                        <apex:selectOptions value="{!filedOptions}"/>
                    </apex:selectList>
                    <!-- <apex:selectOption value = "{!operationSelectOptions}"/> -->
                    <apex:selectList id="chooseOperation" value="{!fieldInput.operation}" size="1">
                        <!-- <apex:selectOptions value="{!operationSelectOptions}"/> -->
                        <apex:selectOptions value="{!operationSelectOptions}"/>
                    </apex:selectList>
                    <apex:inputTextarea id="inputText" value="{!fieldInput.value}" rows="20" cols="35" />
                    <!-- - &nbsp;&nbsp;+ -->
                    <br />
                </apex:repeat>
                <!-- <apex:commandButton id="addFilter" value="添加筛选器" action="{!addFilter}" reRender="repeatBlock" />
                <apex:commandButton id="removeFilter" value="删除筛选器" action="{!removeFilter}" reRender="repeatBlock" /> -->
            </apex:pageBlock>
            <input class="btn" type="Button" id="exportData" value="导出" onclick="exportsData()" />
            <input class="btn" type="Button" id="exportData" value="导出全部数据" onclick="exportsAllData()" />
        </apex:form>
    </body>
</apex:page>
force-app/main/default/pages/ReportExport.page-meta.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<ApexPage xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>54.0</apiVersion>
    <availableInTouch>false</availableInTouch>
    <confirmationTokenRequired>false</confirmationTokenRequired>
    <label>ReportExport</label>
    <packageVersions>
        <majorNumber>1</majorNumber>
        <minorNumber>7</minorNumber>
        <namespace>sf_com_apps</namespace>
    </packageVersions>
</ApexPage>