From 3962c2bb0435484b60a3e408e4738d792e249a53 Mon Sep 17 00:00:00 2001
From: buli <137736985@qq.com>
Date: 星期一, 05 六月 2023 11:09:55 +0800
Subject: [PATCH] LEX CommunityNewCmp

---
 force-app/main/default/classes/LexDealerInquiryModifyStateController.cls |  866 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 866 insertions(+), 0 deletions(-)

diff --git a/force-app/main/default/classes/LexDealerInquiryModifyStateController.cls b/force-app/main/default/classes/LexDealerInquiryModifyStateController.cls
new file mode 100644
index 0000000..efb18df
--- /dev/null
+++ b/force-app/main/default/classes/LexDealerInquiryModifyStateController.cls
@@ -0,0 +1,866 @@
+public with sharing class LexDealerInquiryModifyStateController {
+    public static List<OpportunityInfo> oppRecords { get; set; }
+    // 銉氥兗銈搞儸銈ゃ偄銈︺儓銇儏鍫便倰鍙栧緱
+    private static Map<String, Map<String, String>> editLayoutItemRWMap = New Map<String, Map<String, String>>();
+    // private Map<String, Map<String, String>> editLayoutItemRWMapRt = null;
+    public static List<OpportunityInfo> OPPORTList { get; set; }
+    /*****************妞滅储鐢�******************/
+
+    /*******************妫�绱㈠睘鎬у��*******************/
+
+    public static String accSearch { get; set; }//缁忛攢鍟嗗尰闄�
+    public static String aooSearch { get; set; }//鎷呭綋浜�
+    public static String numtext1 { get; set; } //鏁版嵁瀛楁01
+    public static String numtext { get; set; }//鏁版嵁瀛楁03
+    public static String numtext2 { get; set; } //鏁版嵁瀛楁02
+    public static String timetext1 { get; set; } //鏃ユ湡01
+    public static String timetext2 { get; set; } //鏃ユ湡02
+    public static Agency_Opportunity__c tmpAO { get; set; } //妫�绱㈡棩鏈熺敤
+    public static Agency_Opportunity__c tmpBO { get; set; } //妫�绱㈡棩鏈熺敤
+    public static String limits { get; set; }//鏃ユ湡03
+
+    public static List<SelectOption> dateOpts { get; private set; }
+    public static List<CusOption> textCusOpts;
+    public static List<SelectOption> textOpts { get; private set; }
+
+    public static List<CusOption> timeCusOpts;
+    public static List<SelectOption> timeOpts { get; private set; }
+
+    public static List<CusOption>  equalCusOpts;
+    public static List<SelectOption> equalOpts { get; private set; }
+    public static List<SelectOption> timeequalOpts { get; private set; }
+    public static List<CusOption> limitCusOpts;
+    public static List<SelectOption> limitOpts { get; private set; }
+
+    /*****************鐢婚潰琛ㄧずBean******************/
+    public static Integer oppCount { get; set; }
+    public static String saveType { get; set; }
+
+    public static String sortKey { get; set; }
+    public static String preSortKey { get; set; }
+    public static Boolean sortOrderAsc { get; set; }
+    public static String[] sortOrder { get; set; }
+    public static String[] columus = new String[] {'Id'};
+    public static String[] selColumus = null;
+    public static Set<String> columusSet = new Set<String> {'Id'};
+
+    // 椤圭洰set 瀛楁鏍囩
+    public static List<String> titleLeft { get; private set; }
+    public static List<String> titleRight { get; private set; }
+    // 椤圭洰set 瀛楁鍚�
+    public static List<List<String>> columnsLeftApi { get; private set; }         // 鍙傜収闋呯洰鐢�
+    public static List<List<String>> columnsRightApi { get; private set; }        // 鍙傜収闋呯洰鐢�
+    public static List<String> columnLeftCss { get; private set; }               // css 鐢�
+    public static List<String> columnRightCss { get; private set; }              // css 鐢�
+    public static Map<String, String> columnLeftRW { get; private set; }              // r,w,wm鐢�
+    public static Map<String, String> columnRightRW { get; private set; }             // r,w,wm鐢�
+    private static String strColumus;
+    private static String strRtColumus;
+
+    @TestVisible private static String accTypeForSort = null;
+    private static Integer oppLimit = 500;
+
+     // page
+     public static Integer pagesize { get; set; }
+     public static Integer pageToken { get; set; }
+     public static String sortField { get; set; }
+    //  public static String sortOrder { get; set; }
+   
+     public static Integer totalcount { get; set; }
+
+    public LexDealerInquiryModifyStateController() {
+    }
+
+    @AuraEnabled
+    public static Results init(Integer pageSizeLWC,Integer pageTokenLWC) {
+        pageSize = pageSizeLWC;
+        pageToken = pageTokenLWC;
+        Results results = new Results();
+        oppRecords = new List<OpportunityInfo>();
+
+        //dateOpts = new List<SelectOption>();
+        //dateOpts.add(new SelectOption('', '--鏃�--'));
+        //dateOpts.add(new SelectOption('Registration_Day__c', '鐧诲綍鏃�'));
+        //dateOpts.add(new SelectOption('Ban_On_Use_Date__c', '绂佺敤鏃ユ湡'));
+
+        //鏁版嵁瀛楁涓嬫媺鍒楄〃
+        // textOpts = new List<SelectOption>();
+        // textOpts.add(new SelectOption('', '--鏃�--'));
+        // textOpts.add(new SelectOption('Agency_Opportunity_No__c', '缁忛攢鍟嗚浠风紪鐮�'));
+        // textOpts.add(new SelectOption('Agency__r.Name', '缁忛攢鍟�'));
+        // textOpts.add(new SelectOption('Agency_Hospital__r.Name', '缁忛攢鍟嗗尰闄�'));
+        // textOpts.add(new SelectOption('Department_Cateogy__c', '绉戝鍒嗙被'));
+        // textOpts.add(new SelectOption('Change_To_Opportunity_T__c', '璇环鍚嶇О'));
+        // // textOpts.add(new SelectOption('Name', '璇环鍚嶇О'));
+        // textOpts.add(new SelectOption('StageName__c', '璇环闃舵'));
+        // textOpts.add(new SelectOption('Oly_Inquiry_Status1__c', '鐘舵��1'));
+        // //绮剧悽绉戞妧   zxk    2021-08-25   start
+        // // textOpts.add(new SelectOption('Oly_Inquiry_Status2__c', '鐘舵��2'));
+        // textOpts.add(new SelectOption('Oly_Inquiry_Stage__c', 'Oly璇环闃舵'));
+        // //绮剧悽绉戞妧   zxk    2021-08-25   end
+        // textOpts.add(new SelectOption('Hospital_City_Master__c', '甯�'));
+
+        //custom option
+        textCusOpts = new List<CusOption>();
+        textCusOpts.add(new CusOption('', '--鏃�--'));
+        textCusOpts.add(new CusOption('Agency_Opportunity_No__c', '缁忛攢鍟嗚浠风紪鐮�'));
+        textCusOpts.add(new CusOption('Agency__r.Name', '缁忛攢鍟�'));
+        textCusOpts.add(new CusOption('Agency_Hospital__r.Name', '缁忛攢鍟嗗尰闄�'));
+        textCusOpts.add(new CusOption('Department_Cateogy__c', '绉戝鍒嗙被'));
+        textCusOpts.add(new CusOption('Change_To_Opportunity_T__c', '璇环鍚嶇О'));
+        textCusOpts.add(new CusOption('StageName__c', '璇环闃舵'));
+        textCusOpts.add(new CusOption('Oly_Inquiry_Status1__c', '鐘舵��1'));
+        textCusOpts.add(new CusOption('Oly_Inquiry_Stage__c', 'Oly璇环闃舵'));
+        textCusOpts.add(new CusOption('Hospital_City_Master__c', '甯�'));
+
+       
+        // textOpts.add(new SelectOption('Agency_Hospital__r.Hospital__r.Salesdepartment_HP__c', '閿�鍞湰閮�'));
+        // textOpts.add(new SelectOption('Agency_Hospital__r.Hospital__r.State_Master__r.Name', '鐪�'));
+        // textOpts.add(new SelectOption('Agency_Hospital__r.Hospital__r.City_Master__r.Name', '甯�'));
+        //鏃ユ湡瀛楁涓嬫媺鍒楄〃
+        // timeOpts = new List<SelectOption>();
+        // timeOpts.add(new SelectOption('', '--鏃�--'));
+        // timeOpts.add(new SelectOption('Created_Day__c', '鍒涘缓鏃�'));
+        // timeOpts.add(new SelectOption('Bid_Planned_Date__c', '棰勬祴鎷涙爣鏃�'));
+        // timeOpts.add(new SelectOption('Forecasted_Bid_Date__c', '棰勬祴涓爣鏃�'));
+        // timeOpts.add(new SelectOption('Close_Forecasted_Date__c', '棰勬祴涓嶰LY绛剧害鏃�'));
+        // timeOpts.add(new SelectOption('Lost_Opportunity_Date__c', '澶卞崟鏃ユ湡'));
+        // timeOpts.add(new SelectOption('Deleted_Reason_Date__c', '鍙栨秷鏃ユ湡'));
+
+        timeCusOpts = new List<CusOption>();
+        timeCusOpts.add(new CusOption('', '--鏃�--'));
+        timeCusOpts.add(new CusOption('Created_Day__c', '鍒涘缓鏃�'));
+        timeCusOpts.add(new CusOption('Bid_Planned_Date__c', '棰勬祴鎷涙爣鏃�'));
+        timeCusOpts.add(new CusOption('Forecasted_Bid_Date__c', '棰勬祴涓爣鏃�'));
+        timeCusOpts.add(new CusOption('Close_Forecasted_Date__c', '棰勬祴涓嶰LY绛剧害鏃�'));
+        timeCusOpts.add(new CusOption('Lost_Opportunity_Date__c', '澶卞崟鏃ユ湡'));
+        timeCusOpts.add(new CusOption('Deleted_Reason_Date__c', '鍙栨秷鏃ユ湡'));
+
+
+
+        //鏁版嵁瀛楁涓棿杩炴帴绗﹀彿
+        // equalOpts = new List<SelectOption>();
+        // equalOpts.add(new SelectOption('=', '绛変簬'));
+        // equalOpts.add(new SelectOption('<>', '涓嶇瓑浜�'));
+        // equalOpts.add(new SelectOption('<', '<'));
+        // equalOpts.add(new SelectOption('>', '>'));
+        // equalOpts.add(new SelectOption('<=', '<='));
+        // equalOpts.add(new SelectOption('>=', '>='));
+        // equalOpts.add(new SelectOption('contains', '鍖呭惈'));
+        // equalOpts.add(new SelectOption('notcontains', '涓嶅寘鍚�'));
+        // equalOpts.add(new SelectOption('starts with', '璧峰瀛楃'));
+
+        equalCusOpts = new List<CusOption>();
+        equalCusOpts.add(new CusOption('=', '绛変簬'));
+        equalCusOpts.add(new CusOption('<>', '涓嶇瓑浜�'));
+        equalCusOpts.add(new CusOption('<', '<'));
+        equalCusOpts.add(new CusOption('>', '>'));
+        equalCusOpts.add(new CusOption('<=', '<='));
+        equalCusOpts.add(new CusOption('>=', '>='));
+        equalCusOpts.add(new CusOption('contains', '鍖呭惈'));
+        equalCusOpts.add(new CusOption('notcontains', '涓嶅寘鍚�'));
+        equalCusOpts.add(new CusOption('starts with', '璧峰瀛楃'));
+
+        //鏃ユ湡瀛楁杩炴帴绗﹀彿
+        //timeequalOpts = new List<SelectOption>();
+        //timeequalOpts.add(new SelectOption('=', '绛変簬'));
+        //timeequalOpts.add(new SelectOption('<>', '涓嶇瓑浜�'));
+        //timeequalOpts.add(new SelectOption('<', '<'));
+        //timeequalOpts.add(new SelectOption('>', '>'));
+        //timeequalOpts.add(new SelectOption('<=', '<='));
+        //timeequalOpts.add(new SelectOption('>=', '>='));
+        //鏁版嵁鏄剧ず鏉℃暟
+        // limitOpts = new List<SelectOption>();
+        // limitOpts.add(new SelectOption('10', '10'));
+        // limitOpts.add(new SelectOption('20', '20'));
+        // limitOpts.add(new SelectOption('50', '50'));
+        // limitOpts.add(new SelectOption('100', '100'));
+        // limitOpts.add(new SelectOption('200', '200'));
+        // limitOpts.add(new SelectOption('1000', '鍏ㄩ儴'));
+        //鏁版嵁鏄剧ず榛樿鏉℃暟
+        limits = '20';
+
+        limitCusOpts = new List<CusOption>();
+        limitCusOpts.add(new CusOption('10', '10'));
+        limitCusOpts.add(new CusOption('20', '20'));
+        limitCusOpts.add(new CusOption('50', '50'));
+        limitCusOpts.add(new CusOption('100', '100'));
+        limitCusOpts.add(new CusOption('200', '200'));
+        limitCusOpts.add(new CusOption('1000', '鍏ㄩ儴'));
+        try{
+            PartnerSoapSforceCom.Soap soap = new PartnerSoapSforceCom.Soap();
+            soap.SessionHeader = new PartnerSoapSforceCom.SessionHeader_element();
+            soap.SessionHeader.sessionId = UserInfo.getSessionId();
+            soap.endpoint_x = URL.getSalesforceBaseUrl().toExternalForm() + '/partner/services/Soap/u/33.0';
+            // soap.endpoint_x = URL.getSalesforceBaseUrl().toExternalForm() + '/services/Soap/u/33.0';
+    
+            PartnerSoapSforceCom.DescribeLayoutResult dlr = new PartnerSoapSforceCom.DescribeLayoutResult();
+            if (System.Test.isRunningTest()) {
+                // UnitTest 鐢�
+                // PartnerSoapSforceCom.DescribeLayoutResult dlr = new PartnerSoapSforceCom.DescribeLayoutResult();
+                PartnerSoapSforceCom.RecordTypeMapping rtMap = new PartnerSoapSforceCom.RecordTypeMapping();
+                PartnerSoapSforceCom.DescribeLayout editLayout = new PartnerSoapSforceCom.DescribeLayout();
+                PartnerSoapSforceCom.DescribeLayoutSection editLayoutSection = new PartnerSoapSforceCom.DescribeLayoutSection();
+                PartnerSoapSforceCom.DescribeLayoutRow layoutRow = new PartnerSoapSforceCom.DescribeLayoutRow();
+                PartnerSoapSforceCom.DescribeLayoutItem layoutItem = new PartnerSoapSforceCom.DescribeLayoutItem();
+                PartnerSoapSforceCom.DescribeLayoutComponent layoutComponent = new PartnerSoapSforceCom.DescribeLayoutComponent();
+                dlr.recordTypeMappings = new List<PartnerSoapSforceCom.RecordTypeMapping>();
+                dlr.recordTypeMappings.add(rtMap);
+                rtMap.recordTypeId = 'recordTypeId';
+                dlr.layouts = new List<PartnerSoapSforceCom.DescribeLayout>();
+                dlr.layouts.add(editLayout);
+                editLayout.editLayoutSections = new List<PartnerSoapSforceCom.DescribeLayoutSection>();
+                editLayout.editLayoutSections.add(editLayoutSection);
+                editLayoutSection.layoutRows = new List<PartnerSoapSforceCom.DescribeLayoutRow>();
+                editLayoutSection.layoutRows.add(layoutRow);
+                layoutRow.layoutItems = new List<PartnerSoapSforceCom.DescribeLayoutItem>();
+                layoutRow.layoutItems.add(layoutItem);
+                layoutItem.layoutComponents = new List<PartnerSoapSforceCom.DescribeLayoutComponent>();
+                layoutItem.layoutComponents.add(layoutComponent);
+                // return dlr;
+            } else {
+                dlr  = soap.describeLayout('Agency_Opportunity__c', null, null);
+                // dlr  = soap.describeLayout('asdas', null, null);
+            }
+    
+            // PartnerSoapSforceCom.DescribeLayoutResult dlr  = soap.describeLayout('Agency_Opportunity__c', null, null);
+            Map<String, PartnerSoapSforceCom.DescribeLayout> layputMap = new Map<String, PartnerSoapSforceCom.DescribeLayout>();
+            for (PartnerSoapSforceCom.DescribeLayout layout : dlr.layouts) {
+                layputMap.put(layout.id, layout);
+            }
+            for (Integer lidx = 0; lidx < dlr.recordTypeMappings.size(); lidx++) {
+                String recordTypeId = dlr.recordTypeMappings[lidx].recordTypeId;
+                Map<String, String> rtnInner = new Map<String, String>();
+                editLayoutItemRWMap.put(recordTypeId, rtnInner);
+                System.debug('recordTypeId=' + recordTypeId);
+                PartnerSoapSforceCom.DescribeLayout layout = layputMap.get(dlr.recordTypeMappings[lidx].layoutId);
+                for (PartnerSoapSforceCom.DescribeLayoutSection section : layout.editLayoutSections) {
+                    for (PartnerSoapSforceCom.DescribeLayoutRow row : section.layoutRows) {
+                        for (PartnerSoapSforceCom.DescribeLayoutItem item : row.layoutItems) {
+                            if (item.layoutComponents != null && item.layoutComponents.size() > 0
+                                    && String.isBlank(item.layoutComponents[0].value) == false) {
+                                rtnInner.put(item.layoutComponents[0].value, 'r');
+                                if (item.editableForUpdate) {
+                                    rtnInner.put(item.layoutComponents[0].value, 'w');
+                                }
+                                if (item.required) {
+                                    rtnInner.put(item.layoutComponents[0].value, 'wm');
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            // editLayoutItemRWMap = SoapApi.getEditRWByRecordType('Agency_Opportunity__c', null);
+            tmpAO = new Agency_Opportunity__c();
+            tmpBO = new Agency_Opportunity__c();
+            setLayoutRWInfo();
+            searchOppInner(strColumus,strRtColumus,accSearch,aooSearch,numtext,numtext1,numtext2,sortKey);
+            System.debug('limitCusOpts==>'+limitCusOpts);
+            System.debug('searchOppInner==>'+ searchOppInner(strColumus,strRtColumus,accSearch,aooSearch,numtext,numtext1,numtext2,sortKey));
+            LexDealerInquiryModifyStateController.Results returnList = searchOppInner(strColumus,strRtColumus,accSearch,aooSearch,numtext,numtext1,numtext2,sortKey);
+            System.debug('returnList==>'+ returnList);
+                 //鍒嗛〉
+                 PaginatedAccounts paginatedAccounts = new PaginatedAccounts();
+                 totalCount = oppRecords.size();
+                 paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null;
+                 paginatedAccounts.recordStart = pageToken + 1;
+                 paginatedAccounts.pageNumber = pageToken / pageSize + 1;
+                 Integer recordEnd = pageSize * paginatedAccounts.pageNumber;
+                 paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount;
+                 paginatedAccounts.totalRecords = totalCount;
+     
+                 Integer startIdx;
+                 Integer endIdx;
+                 List<OpportunityInfo> pageoppRecords = new List<OpportunityInfo>();
+                 startIdx = pageToken;
+                 endIdx = startIdx + pageSize;
+                 if (endIdx > oppRecords.size()) {
+                     endIdx = oppRecords.size();
+                 }
+                 for (Integer i = startIdx; i < endIdx; i++) {
+                    pageoppRecords.add(oppRecords.get(i));
+                 }
+                 //end
+                  
+            //鍥炰紶鍙傛暟
+            results.result = 'Success';
+            results.oppRecords = oppRecords;
+            results.timeCusOpts = timeCusOpts;
+            results.equalCusOpts = equalCusOpts;
+            results.limitCusOpts = limitCusOpts;
+            results.textCusOpts = textCusOpts;
+            results.limits = limits;
+            results.strColumus = strColumus;
+            results.strRtColumus = strRtColumus;
+            results.paginatedAccounts = paginatedAccounts;
+            results.pageoppRecords = pageoppRecords;
+            results.Msg = returnList.Msg;
+
+
+            System.debug('results==>'+results);
+
+        }catch (Exception e) {
+            results.result = 'Fail';
+            results.Msg = e.getLineNumber()+'---'+e.getMessage();
+        }
+      
+        // return null;
+        return results;
+    }
+    //鐢ㄤ簬鑾峰彇缁忛攢鍟嗚浠峰瓧娈甸泦鍜岃浠峰瓧娈甸泦浠ュ強鐩稿簲鐨勮鍐欐潈闄�
+    @TestVisible private static void setLayoutRWInfo() {
+        // if (this.sortOrder == null) {
+            if (sortOrder == null) {
+            selColumus = new String[] {};
+            strColumus = '';
+            ID accRecordTypeId = accTypeForSort;
+
+            Map<String, String> DESC_RW = editLayoutItemRWMap.get('012100000006KW7AAM');
+            Map<String, Schema.FieldSet> fsMap = Schema.getGlobalDescribe().get('Agency_Opportunity__c').getDescribe().fieldSets.getMap();
+            Schema.FieldSet fs = fsMap.get('DealerInquiryModifyState');
+            List<FieldSetMember> fsmList = fs.getFields();
+            titleLeft = new List<String>();
+            List<String> columnLeft = new List<String>();
+            columnLeftCss = new List<String>();
+            columnsLeftApi = new List<List<String>>();
+            columnLeftRW = new Map<String, String>();
+            for (FieldSetMember fsm : fsmList) {
+                titleLeft.add(fsm.getLabel());
+                columnLeft.add(fsm.getFieldPath());
+                List<String> splitFieldPath = fsm.getFieldPath().split('\\.');
+                columnsLeftApi.add(splitFieldPath);
+                if (DESC_RW == null) {
+                    columnLeftRW.put(fsm.getFieldPath(), 'r');
+                } else if (splitFieldPath.size() == 1) {
+                    String rw = DESC_RW.get(fsm.getFieldPath());
+                    if (rw != null) {
+                        columnLeftRW.put(fsm.getFieldPath(), rw);
+                    } else {
+                        columnLeftRW.put(fsm.getFieldPath(), 'r');
+                    }
+                } else {
+                    columnLeftRW.put(fsm.getFieldPath(), 'r');
+                }
+            }
+            for (String str : columnLeftRW.keySet()) {
+                System.debug(str + '=+=+=+=+=' + columnLeftRW.get(str));
+            }
+            for (String s : columnLeft) {
+                if (columusSet.contains(s) == false) {
+                    columus.add(s);
+                    columusSet.add(s);
+                }
+                if (selColumus.contains(s) == false) {
+                    selColumus.add(s);
+                }
+                columnLeftCss.add(s.replace('.', '_'));
+            }
+            strRtColumus = '';
+            Schema.FieldSet fsRt = fsMap.get('DealerOpportunity');
+            List<FieldSetMember> fsmListRt = fsRt.getFields();
+            titleRight = new List<String>();
+            List<String> columnRight = new List<String>();
+            columnRightCss = new List<String>();
+            columnsRightApi = new List<List<String>>();
+            columnRightRW = new Map<String, String>();
+
+            for (FieldSetMember fsm : fsmListRt) {
+                titleRight.add(fsm.getLabel());
+                columnRight.add(fsm.getFieldPath());
+                List<String> splitFieldPath = fsm.getFieldPath().split('\\.');
+                columnsRightApi.add(splitFieldPath);
+                if (DESC_RW == null) {
+                    columnRightRW.put(fsm.getFieldPath(), 'r');
+                } else if (splitFieldPath.size() == 1) {
+                    String rw = DESC_RW.get(fsm.getFieldPath());
+                    if (rw != null) {
+                        columnRightRW.put(fsm.getFieldPath(), rw);
+                    } else {
+                        columnRightRW.put(fsm.getFieldPath(), 'r');
+                    }
+                } else {
+                    columnRightRW.put(fsm.getFieldPath(), 'r');
+                }
+            }
+            for (String s : columnRight) {
+                selColumus.add(s);
+                if (strRtColumus == '') {
+                    strRtColumus = s;
+                } else {
+                    strRtColumus = strRtColumus + ',' + s;
+                }
+                columnRightCss.add(s.replace('.', '_'));
+
+            }
+            strColumus = String.join(columus, ',');
+            System.debug('======-======-======strColumus' + strColumus);
+            System.debug('======-======-======strRtColumus' + strRtColumus);
+            sortOrderAsc = true;
+            sortOrder = new String[selColumus.size()];
+            for (Integer i = 0; i < selColumus.size(); i++) sortOrder[i] = '銆�';
+        }
+    }
+    //鐢ㄤ簬鎷兼帴SOQL璇彞 鏍规嵁涓嶅悓妫�绱㈡潯浠舵嫾鎺ヤ笉鍚孲OQL璇彞銆�
+    @AuraEnabled
+    public static Results searchOppInner(String strColumus,String strRtColumus,String accSearch,String aooSearch,String numtext,String numtext1,String numtext2,String sortKeyLWC) {
+        Results results = new Results();
+        sortKey = sortKeyLWC;
+
+        //SOQL:鎷兼帴妫�绱㈡潯浠朵互鍙婄粡閿�鍟嗚浠风殑SOQL璇彞
+        // List<User> userlist2 = [select id,name from user where Contactid in (select id from Contact)];
+        // String querySoql = '';
+        // Integer queryint = 0;
+        // for(User user : userlist2){
+        //     if(queryint == 0){
+        //         querySoql += '\''+user.Id+'\'';
+        //         queryint++;
+        //     }else{
+        //         querySoql += ',\''+user.Id+'\'';
+        //     }
+
+        // }
+        // System.debug('pppqqq222'+userlist2);
+        // System.debug('pppqqq333'+querySoql);
+        // AND Ownerid in ( '+querySoql+')'
+
+        String soql = 'SELECT Change_To_Opportunity__r.Id , Agency_Hospital__r.Name , Product_Category1__r.Name , Product_Category2__r.Name , Product_Category3__r.Name , Agency_Person__r.Name , Agency__r.Name , Change_To_Opportunity__r.Name ,' +
+                      strColumus + ',' + strRtColumus +
+                      ' FROM Agency_Opportunity__c WHERE recordType.DeveloperName = \'Opportunity\' ';
+        //鏁版嵁瀛楁锛氱粡閿�鍟嗗尰闄�  +SOQL
+        if (!String.isBlank(accSearch)) {
+            accSearch = accSearch.trim();
+            // soql += 'AND Agency__r.Name  '   + '  LIKE  \'%' + accSearch + '%\' ';
+            soql += 'AND Agency_Hospital__r.Name  '   + '  LIKE  \'%' + accSearch + '%\' ';
+        }
+        //鏁版嵁瀛楁锛氭媴褰撲汉  +SOQL
+        if (!String.isBlank(aooSearch)) {
+            String newAooSearch = aooSearch.trim();
+            // soql += 'AND Change_To_Opportunity__r.Owner.Alias = ' + '\'' + newAooSearch + '\'';//Name
+            soql += 'AND Agency_PersonName__c ' + '  LIKE  \'%' + newAooSearch + '%\' ';
+        }
+        //鏁版嵁瀛楁锛�03 鎵嬪姩濉啓椤� 鍑嗗璋冪敤makeTextSql锛�
+        if (!String.isBlank(numtext)) {
+            String newNumtext = numtext.trim();
+            String str = makeTextSql(numtext1,  numtext2,  newNumtext);
+            soql += str;
+            System.debug('+++++++++++++=============++++++++++++++++++' + soql);
+        }
+        //鐐瑰嚮鎺掑簭
+        // System.debug('==-=-=-=-=-=this.sortKey'+Integer.valueOf(this.sortKey)+'===titleLeft.size'+titleLeft.size()+7);
+        //start娉ㄩ噴 by WangXueqin
+        // if (String.isBlank(this.sortKey)) {
+        //     soql += ' order by LastModifiedDate desc limit ' + Integer.valueOf(limits);
+        // } else {
+        //     if (Integer.valueOf(this.sortKey) <= titleLeft.size() + 7) {
+        //         soql += ' order by ' + this.selColumus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last') + ' limit ' + Integer.valueOf(limits);
+        //     } else {
+        //         soql += ' order by Change_To_Opportunity__r.' + this.selColumus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last') + ' limit ' + Integer.valueOf(limits);
+        //     }
+        // }
+        // system.debug(soql);
+        //end
+
+
+
+        // List<User> userlist1 = [select id,name from user ];
+        // System.debug('pppqqq111'+userlist1);
+
+        List<Agency_Opportunity__c> InfoList = Database.query(soql);
+        System.debug('+++++++-------------------'+InfoList);
+
+        // List<Agency_Opportunity__c> InfoList = ControllerUtil.DatabaseQuery(soql);
+        // System.debug('InfoList[0].Change_To_Opportunity_T__c'+InfoList[0].Change_To_Opportunity_T__c);
+        for (Agency_Opportunity__c apt : InfoList) {
+            System.debug('pppqqq' + apt.Agency_PersonName__c + '====' + apt.Name);
+        }
+
+        List<OpportunityInfo> oppinfoList = new List<OpportunityInfo>();
+        if (InfoList != null && InfoList.size() > 0) {
+            String str = '';
+            for (Agency_Opportunity__c agc : InfoList) {
+                if (str == '' && agc.Change_To_Opportunity__r.Id != null) {
+                    str = '\'' + agc.Change_To_Opportunity__r.Id + '\'';
+                } else if (agc.Change_To_Opportunity__r.Id != null) {
+                    str += ',\'' + agc.Change_To_Opportunity__r.Id + '\'';
+
+                }
+            }
+            for (Agency_Opportunity__c info : InfoList) {
+                oppinfoList.add(new OpportunityInfo(info, info));
+                oppinfoList[oppinfoList.size() - 1].lineNo = oppinfoList.size() - 1;
+            }
+        }
+        oppRecords = oppinfoList.clone();
+        oppCount = oppRecords.size();
+        //鏄剧ず鎻愮ず鎿嶄綔淇℃伅
+        if (String.isBlank(saveType) && String.isBlank(sortKey)) {
+            // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '鍙栧緱鏈�杩戠殑 ' + oppCount + ' 鏉℃暟鎹�'));
+            results.result = 'Success';
+            results.Msg = '鍙栧緱鏈�杩戠殑 ' + oppCount + ' 鏉℃暟鎹�';
+            return results;
+        } else if (!String.isBlank(sortKey)) {
+            if (oppCount > oppLimit) {
+                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '鏁版嵁瓒呰繃' + oppLimit + '浠讹紝鍙樉绀哄墠' + oppLimit + '浠�'));
+                results.result = 'Success';
+                results.Msg = '鏁版嵁瓒呰繃' + oppLimit + '浠讹紝鍙樉绀哄墠' + oppLimit + '浠�';
+               
+            } else {
+                results.result = 'Success';
+                results.Msg = '鍏辨湁 ' + oppCount + ' 鏉℃暟鎹�';
+               
+                // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '鍏辨湁 ' + oppCount + ' 鏉℃暟鎹�'));
+            }
+        } else {
+            // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '鍏辨湁 ' + oppCount + ' 鏉℃暟鎹�'));
+            results.result = 'Success';
+            results.Msg = '鍏辨湁 ' + oppCount + ' 鏉℃暟鎹�';
+        }
+        //   //鍒嗛〉
+        //   PaginatedAccounts paginatedAccounts = new PaginatedAccounts();
+        //   totalCount = oppRecords.size();
+        //   paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null;
+        //   paginatedAccounts.recordStart = pageToken + 1;
+        //   paginatedAccounts.pageNumber = pageToken / pageSize + 1;
+        //   Integer recordEnd = pageSize * paginatedAccounts.pageNumber;
+        //   paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount;
+        //   paginatedAccounts.totalRecords = totalCount;
+
+        //   Integer startIdx;
+        //   Integer endIdx;
+        //   List<OpportunityInfo> pageoppRecords = new List<OpportunityInfo>();
+        //   startIdx = pageToken;
+        //   endIdx = startIdx + pageSize;
+        //   if (endIdx > oppRecords.size()) {
+        //       endIdx = oppRecords.size();
+        //   }
+        //   for (Integer i = startIdx; i < endIdx; i++) {
+        //      pageoppRecords.add(oppRecords.get(i));
+        //   }
+        //   //end
+
+
+        //鍥炰紶鍙傛暟
+        results.result = 'Success';
+        results.oppRecords = oppRecords;
+        return results;
+
+    }
+    //妫�绱㈡潯浠讹細鏁版嵁瀛楁1锛屾暟鎹瓧娈�2锛屾暟鎹瓧娈�3鍧囨弧瓒宠繘鍏ユ鏂规硶 鍒ゆ柇澶氱鎯呭喌
+    private static String makeTextSql(String textOpts, String equalOpts, String numtext) {
+        String soql = '';
+        if (!String.isBlank(textOpts)) {
+            //瀵绘壘妫�绱㈡潯浠跺寘鍚�� 鈥� 绌烘牸鐨勫閲嶆绱㈡潯浠�
+            //system.debug('314-textOpts:'+textOpts);
+            if ((equalOpts == 'contains' || equalOpts == 'notcontains') && numtext.contains(',')) {
+                //system.debug('316-equalOpts:'+equalOpts);
+                //system.debug('316-numtext:'+numtext);
+                String[] vals = numtext.split(',');
+                String cSql = '';
+                soql += ' AND (';
+                for (Integer icount = 0; icount < vals.size(); icount++) {
+
+                    //绮剧悽绉戞妧   zxk    2021-08-25   start
+                    String val = vals[icount];
+                    if (equalOpts == 'contains') {
+                        cSql = makeTextSqlStr(textOpts, equalOpts, val);
+                        soql += cSql;
+
+                        if (icount < vals.size() - 1) {
+                            soql += ' OR ';
+                        }
+                    } else if (equalOpts == 'notcontains') {
+                        cSql = makeTextSqlStr(textOpts, equalOpts, val);
+                        soql += cSql;
+                        if (icount < vals.size() - 1) {
+                            soql += ' AND ';
+                        }
+                    }
+
+                }
+                //绮剧悽绉戞妧   zxk    2021-08-25   end
+
+
+                //     String val = vals[icount];
+                //     cSql = this.makeTextSqlStr(textOpts, equalOpts, val);
+                //     system.debug(cSql);
+                //     soql += cSql;
+                //     if (icount < vals.size() - 1) {
+                //         soql += ' OR ';
+                //     }
+                // }
+                soql += ')';
+            }
+            //瀵绘壘妫�绱㈡潯浠跺寘鍚�橈紝鈥� 閫楀彿鐨勫閲嶆绱㈡潯浠�
+            else if ((equalOpts == '=' || equalOpts == '<>') && numtext.contains(',')) {
+                String[] vals = numtext.split(',');
+                soql += ' AND ( ';
+                for (Integer icount = 0; icount < vals.size(); icount++) {
+                    String val = vals[icount];
+                    if (equalOpts == '=') {
+                        soql += textOpts + ' = \'' + val + '\'';
+                        if (icount < vals.size() - 1) {
+                            soql += ' OR ';
+                        }
+                    } else if (equalOpts == '<>') {
+                        soql += textOpts + ' <> \'' + val + '\'';
+                        if (icount < vals.size() - 1) {
+                            soql += ' AND ';
+                        }
+                    }
+                }
+                soql += ')';
+            }
+            //妫�绱㈣繛鎺ョ涓哄寘鍚互鍙婁笉鍖呭惈
+            else if (equalOpts.equals('contains') || equalOpts.equals('notcontains')) {
+                if (equalOpts.equals('contains')) {
+                    soql += ' AND ' + textOpts + ' LIKE \'%' + numtext + '%\'';
+                } else if (equalOpts.equals('notcontains')) {
+                    soql += ' AND ( NOT ' + textOpts + ' LIKE \'%' + numtext + '%\' ) ';
+                }
+            }
+            //妫�绱㈣繛鎺ョ涓虹瓑浜庝互鍙婁笉绛変簬
+            else if (equalOpts == '=' || equalOpts == '<>') {
+                soql += 'AND ' + textOpts + equalOpts + '\'' + numtext + '\'';
+            }
+
+            //绮剧悽绉戞妧   zxk    2021-08-25   start
+            //璧峰瀛楃
+            else if (equalOpts == 'starts with' && numtext.contains(' ')) {
+                String[] vals = numtext.split(' ');
+                soql += ' AND ( ';
+                for (Integer icount = 0; icount < vals.size(); icount++) {
+                    String val = vals[icount];
+                    if (equalOpts == 'starts with') {
+                        soql += ' ' + textOpts + '  LIKE  \'%' + val + '%\'' ;
+                        if (icount < vals.size() - 1) {
+                            soql += ' OR ';
+
+                        }
+                    }
+                }
+                soql += ')';
+
+            }
+            //绮剧悽绉戞妧   zxk    2021-08-25   end
+
+            // //璧峰瀛楃
+            // else if (equalOpts == 'starts with'){
+            //     soql += 'AND ' + textOpts + ' LIKE \'' + numtext + '%\'';
+            // }
+            //妫�绱㈣繛鎺ョ鐨勫叾浠栨儏鍐�
+            else {
+                String cSql = makeTextSqlStr(textOpts, equalOpts, numtext);
+                if (equalOpts != '<>') {
+                    soql += cSql;
+                } else {
+                    soql += ' and (NOT ' + cSql + ') ';
+                }
+            }
+        }
+        return soql;
+    }
+    //妫�绱㈡潯浠讹細鏁版嵁瀛楁1锛屾暟鎹瓧娈�2锛屾暟鎹瓧娈�3鍧囨弧瓒筹紝骞朵笖杩涘叆makeTextSql锛堬級涔嬪悗锛屽唴鍚暟鎹瓧娈靛寘鍚绉嶆椂杩涘叆姝ゆ柟娉曘��
+    @TestVisible private static String makeTextSqlStr(String textOpts, String equalOpts, String val) {
+        String soql = '';
+        if (!String.isBlank(textOpts)) {
+            String tmpVal = val;
+            if (!String.isBlank(tmpVal)) {
+                if (equalOpts == 'contains' || equalOpts == 'notcontains') {
+                    if (equalOpts == 'contains') {
+                        soql += ' ' + textOpts + '  LIKE  \'%' + val + '%\'' ;
+                    } else if (equalOpts == 'notcontains') {
+                        soql += ' ( NOT ' + textOpts + '  LIKE  \'%' + val + '%\' ) ' ;
+                    }
+                } else if (equalOpts == '=' || equalOpts == '<>') {
+                    if (equalOpts == '=') {
+                        soql += ' AND ' + textOpts + ' = ' + val ;
+                    } else if (equalOpts == '<>') {
+                        soql += ' AND ' + textOpts + ' <> ' + val ;
+                    }
+                }
+            } else {
+                soql = ' AND ' + textOpts;
+                if (equalOpts == '=') {
+                    soql += ' = ' + tmpVal;
+                } else if (equalOpts == '<>') {
+                    soql += ' <> ' + tmpVal;
+                } else if (equalOpts == 'contains') {
+                    soql += ' like \'%' + String.escapeSingleQuotes(tmpVal.replaceAll('%', '\\%')) + '%\'';
+                } else if (equalOpts == 'notcontains') {
+                    soql += ' like \'%' + String.escapeSingleQuotes(tmpVal.replaceAll('%', '\\%')) + '%\'';
+                } else if (equalOpts == 'starts with') {
+                    soql += ' like \'%' + String.escapeSingleQuotes(tmpVal.replaceAll('%', '\\%')) + '%\'';
+                } else {
+                    soql += ' ' + equalOpts + ' ' + tmpVal;
+                }
+            }
+        }
+        return soql;
+    }
+
+    //妫�绱㈡寜閽細鐐瑰嚮妫�绱㈡寜閽Е鍙戞鏂规硶锛�
+    // public static PageReference chick() {
+    //     setLayoutRWInfo();
+    //     searchOppInner(strColumus,strRtColumus,accSearch,aooSearch,numtext,numtext1,numtext2,sortKey,pageSizeLWC,pageTokenLWC);
+    //     return null;
+    // }
+    //椤甸潰鍐呭鏈変慨鏀规椂锛岄〉闈㈠垽鏂悗浼犲�肩粰changeFlg浠ュ強changeFlgRt灞炴�э紝鐐瑰嚮淇濆瓨鏃惰皟鐢ㄦ鏂规硶锛岃繘琛屼繚瀛樸��
+    @AuraEnabled
+    public static Results save(List<OpportunityInfo> oppRecordsLWC) {
+        //system.debug('oppRecords[1].opp:' + oppRecords[1].opp +' oppRecords[1].AgcOpp:' + oppRecords[1].AgcOpp );
+        Results results = new Results();
+        oppRecords = oppRecordsLWC;
+        try {
+            List<Agency_Opportunity__c> updTarget = new List<Agency_Opportunity__c>();
+            // List<Opportunity> updOpps = new List<Opportunity>();
+            for (OpportunityInfo oi : oppRecords) {
+                if (oi.changeFlg == '1') {
+                    oi.changeFlg = '0';
+                    updTarget.add(oi.AgcOpp);
+
+                }
+                // if (oi.changeFlgRt == '1' && oi.opp.id != null) {
+                //     oi.changeFlgRt = '0';
+                //     updOpps.add(oi.opp);
+                // }
+            }
+            if (updTarget.size() > 0) {
+                system.debug('updTarget.size:' + updTarget.size() );
+                update updTarget;
+            }
+            // if (updOpps.size() > 0) {
+            //     update updOpps;
+            // }
+            // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '淇濆瓨瀹屼簡'));
+            results.result = 'Success';
+            results.Msg = '淇濆瓨瀹屼簡';
+            return results;
+        } catch (Exception e) {
+            //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '璇风‘瀹氱瀹ゅ垎绫诲拰浜у搧鍖哄垎鐨勫叧绯�'));
+        }
+        if(saveType == '1') {
+            searchOppInner(strColumus,strRtColumus,accSearch,aooSearch,numtext,numtext1,numtext2,sortKey);
+            saveType = '';
+        } else if (saveType == '2') {
+            sortTable();
+            saveType = '';
+        } else {
+        }
+        return null;
+    }
+    //鍏ㄩ儴灞曞紑璋冪敤姝ゆ柟娉�
+    public static PageReference sortTable() {
+        oppRecords = new List<OpportunityInfo>();
+        if (sortKey == preSortKey) {
+            if (String.isBlank(sortKey) == false) {
+                // 鏂瑰悜銇屽銈忋倠銇伩
+                sortOrderAsc = !sortOrderAsc;
+                sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '鈫�' : '鈫�');
+            }
+        } else {
+            sortOrderAsc = true;
+            if (String.isBlank(preSortKey) == false) {
+                sortOrder[Integer.valueOf(preSortKey)] = '銆�';
+            }
+            sortOrder[Integer.valueOf(sortKey)] = (sortOrderAsc == true ? '鈫�' : '鈫�');
+        }
+        preSortKey = sortKey;
+
+        setLayoutRWInfo();
+        searchOppInner(strColumus,strRtColumus,accSearch,aooSearch,numtext,numtext1,numtext2,sortKey);
+        return null;
+    }
+      //鍒嗛〉Bean
+      public class PaginatedAccounts {
+        @AuraEnabled
+        public Integer nextPageToken;
+        @AuraEnabled
+        public Integer pageNumber { get; set; }
+        @AuraEnabled
+        public Integer totalRecords { get; set; }
+        @AuraEnabled
+        public Integer recordStart { get; set; }
+        @AuraEnabled
+        public Integer recordEnd { get; set; }
+    }
+
+    //鑷畾涔夌被OpportunityInfo锛岀敤浜庡垱寤鸿櫄鎷熷瓧娈碉紝鍚堝苟杈撳嚭銆�
+    class OpportunityInfo {
+        // public Opportunity opp { get; set; }
+        @AuraEnabled
+        public Agency_Opportunity__c opp { get; set; }
+        @AuraEnabled
+        public Boolean canEdit { get; private set; }
+        @AuraEnabled
+        public Boolean hasError { get; private set; }
+        @AuraEnabled
+        public Boolean hasFieldError { get; private set; }
+        @AuraEnabled
+        public Integer lineNo { get; private set; }
+        @AuraEnabled
+        public String changeFlg { get; set; }
+        @AuraEnabled
+        public String changeFlgRt { get; set; }
+        @AuraEnabled
+        public Boolean ifLock { get; set; }
+        //public String accType { get; private set; }
+        @AuraEnabled
+        public Agency_Opportunity__c AgcOpp { get; set; }
+        public OpportunityInfo(Agency_Opportunity__c record, Agency_Opportunity__c oppo) {
+            opp = oppo;
+            canEdit = true;
+            hasError = false;
+            hasFieldError = false;
+            lineNo = 0;
+            changeFlg = '0';
+            changeFlgRt = '0';
+            ifLock = Approval.isLocked(record);
+            AgcOpp = record;
+        }
+    }
+    public class Results {
+        @AuraEnabled
+        public String result;
+        @AuraEnabled
+        public String Msg;
+        @AuraEnabled
+        public List<OpportunityInfo> oppRecords;
+        @AuraEnabled
+        public Integer oppCount ;
+        @AuraEnabled
+        public List<CusOption> timeCusOpts;
+        @AuraEnabled
+        public List<CusOption> textCusOpts;
+        @AuraEnabled
+        public List<CusOption> equalCusOpts;
+        @AuraEnabled
+        public List<CusOption> limitCusOpts;
+        @AuraEnabled
+        public String limits;
+        @AuraEnabled
+        public String strColumus;
+        @AuraEnabled
+        public String strRtColumus;
+        @AuraEnabled
+        public List<OpportunityInfo> pageoppRecords;
+        @AuraEnabled
+        public PaginatedAccounts paginatedAccounts;
+        @AuraEnabled
+        public Boolean canEdit;
+        @AuraEnabled
+        public String changeFlg;
+    }
+    public class CusOption {
+        CusOption(String value,String label) {
+            this.label = label;
+            this.value = value;
+        }
+
+        @AuraEnabled
+        public String label;
+        @AuraEnabled
+        public String value;
+    }
+  
+}
\ No newline at end of file

--
Gitblit v1.9.1