Li Jun
2022-03-28 f5a94e721ae5a26f817f0df75065b64f1f192eb3
force-app/main/default/classes/StraightBackAddressController.cls
@@ -9,9 +9,14 @@
    /***************表格数据*********************/
    public List<AddressData> tableData { get; set; }
    public String tableDataStr{ get; set; }
    public String staticResource {get; set;}
    public String staticResourceContact {get; set;}
    public Contact newCon{get; set;}
    /***************底部 编辑和新增的 对象*******************/
    public Address__c insUpdData{get;set;}
    public String insUpdDataStr{get;set;}
    /***************被编辑数据的id********************/
    public String UpdId{get;set;}
@@ -55,6 +60,21 @@
    /***************是否发生数据接口的序号*************/
    public Integer AddressTypeIndex{get;set;}
    public String contactId{set;get;}//For Lookup field
    // Add by Li Jun for PIPL 20220308 Start
    public String contactNameValue{set;get;}
    public String contactIdValue{set;get;}
    public String addressDataIds{set;get;}
    public String sfRecordId{set;get;}
    // Add by Li Jun for PIPL 20220308 End
    public String accRecordTypeId {set;get;}//当前 记录类型id
    public String accOfficeTypeId {set;get;}//记录类型id  办事处
    public String accAgencyTypeId {set;get;}//记录类型id  販売店
    public String accAgencyContactTypeId {set;get;}//记录类型id  经销商联系人
    public StraightBackAddressController() {
        //获取url数据
        RepairId = System.currentPageReference().getParameters().get('id');
@@ -77,15 +97,23 @@
        addContact = new Contact();
        //查询到所有的科室类别
        hospitalTypp = '診療科 その他,診療科 呼吸科,診療科 婦人科,診療科 普外科,診療科 泌尿科,診療科 消化科,診療科 耳鼻喉科,診療科(共通)';
        staticResource = JSON.serialize(PIHelper.getPIIntegrationInfo('Address__c'));
        staticResourceContact = JSON.serialize(PIHelper.getPIIntegrationInfo('Contact'));
    }
    /**
     * 开始方法
     */
    public PageReference init(){
        accOfficeTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Office').getRecordTypeId();
        accAgencyTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Agency').getRecordTypeId();
        accAgencyContactTypeId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('AgencyContact').getRecordTypeId();
        String RepairSql = makeTextRepairSql(RepairId);
        try{
            pc = Database.query(RepairSql);
            system.debug('pc = ' + pc);
            //给一个全局变量赋值医院id
            if(!String.isBlank(pc.HP_ID__c)){
                hospitalId = pc.HP_ID__c;
@@ -126,9 +154,22 @@
            ApexPages.addMessages(e);
        }
        insUpdData = new Address__c();
        newCon = new Contact();
        return null;
    }
    //查询客户记录类型
    public PageReference queryRecordType(){
        if(insUpdData.Customer__c!=null){
            String accid = insUpdData.Customer__c;
            Account acc = [SELECT id,name,RecordTypeId FROM Account WHERE id =: accid];
            System.debug('acc---'+acc);
            System.debug('insUpdData---'+insUpdData);
            if(acc!=null&&acc.RecordTypeId!=null&&insUpdData.Customer__c!=null){
                accRecordTypeId = acc.RecordTypeId;
            }
        }
        return null;
    }
    //编辑获取数据
    public PageReference onEditor(){
        if(!String.isBlank(UpdId)){
@@ -141,6 +182,7 @@
                        insUpdData = tableData[i].address;
                    }
                }
                insUpdDataStr = JSON.serialize(insUpdData);
            }
        }
        return null;
@@ -163,6 +205,7 @@
                        }
                    }
                }
                insUpdDataStr = JSON.serialize(insUpdData);
            }
        }
        return null;
@@ -196,8 +239,12 @@
                        }
                        //联系人
                        String contactsName = '';
                        String contactsNameEncrypt ='';
                        String contactawsDataId = '';
                        if(!String.isBlank(tableData[i].address.Contacts__c)){
                            contactsName = tableData[i].address.Contacts__r.Name;
                            contactsNameEncrypt = tableData[i].address.Contacts__r.LastName_Encrypted__c;
                            contactawsDataId = tableData[i].address.Contacts__r.AWS_Data_Id__c;
                        }
                        //客户
                        String ContactPerson = '';
@@ -207,11 +254,19 @@
                        try{
                            //保存数据到修理表中
                            Repair__c rc = new Repair__c();
                            rc.id=RepairId;
                            rc.address_Contacts__c=contactsName;
                            rc.id = RepairId;
                            rc.Address_AWS_Data_Id__c = tableData[i].address.AWS_Data_Id__c;
                            rc.Contact_AWS_Data_Id__c = contactawsDataId;
                            rc.address_Contacts__c = contactsName;
                            rc.Address_Contacts_Encrypt__c = contactsNameEncrypt;
                            rc.address_ZipCode__c = tableData[i].address.ZipCode__c;
                            rc.Address_ZipCode_Encrypt__c = tableData[i].address.ZipCode_Encrypted__c;
                            rc.address_City__c = cityName;
                            rc.address_Contacts_Name__c = ContactPerson;
                            rc.Detailed_Address__c = tableData[i].address.Detailed_Address__c;
                            rc.Detailed_Address_Encrypt__c = tableData[i].address.Detailed_Address_Encrypted__c;
                            rc.address_Telephone__c = tableData[i].address.Telephone__c;
                            rc.Address_Telephone_Encrypt__c = tableData[i].address.Telephone_Encrypted__c;
                            //isUpload:是否上传SAP  FSEApplyForRepairTime:SAP修理申请时间
                            if(isUpload && (FSEApplyForRepairTime != null)){
                                rc.Address_type__c = 'X';
@@ -317,12 +372,14 @@
            List<Address__c> dataList = Database.query(AddressSql);
            if(dataList != null && dataList.size()> 0){
                indexCou += dataList.size();
                System.debug('dataList-----'+dataList);
                for(Integer i = 0;i<dataList.size();i++){
                    String createID = dataList[i].CreatedByid;
                    createId = createId.substring(0,15);
                    //办事处的地址不可修改
                    if(dataList[i].Address_Classification__c == '办事处'){
                            tableData.add(new AddressData(dataList[i],'none','none','inline'));
                        tableData.add(new AddressData(dataList[i],'none','none','inline'));
                    }else{
                        //只能改自己创建的地址数据,系统管理员、GPI_系统管理员New 没限制
                        if(loginPerson == createId ||loginPerson == '00e10000000dzzG' ||loginPerson == '00e10000000Y3o5'){
@@ -343,6 +400,8 @@
                }
            }
            ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '共有 '+indexCou+' 条数据'));
            tableDataStr = JSON.serialize(tableData);
            system.debug('tableDataStr = ' + tableDataStr);
        }catch(Exception e){
            //失败提示
            ApexPages.addMessages(e);
@@ -354,6 +413,12 @@
     * 保存和修改的方法
     */
    public PageReference save(){
        system.debug('Address value:'+JSON.serialize(insUpdData));
        if(String.isNotBlank(contactIdValue)&&String.isNotEmpty(contactIdValue)){
            system.debug('Contact Value:'+contactIdValue);
            insUpdData.Contacts__c = contactIdValue;
        }
        system.debug('Address value:'+JSON.serialize(insUpdData));
        savepoint sp = Database.setsavepoint();
        if(insUpdData != null){
            boolean flag = true;
@@ -450,10 +515,17 @@
                            monicker = surname.substring(1,surname.length());
                            surname = surname.substring(0,1);
                        }
                        addContact = new Contact(LastName=surname,FirstName=monicker,AccountId=insUpdData.Customer__c,RecordTypeId=typeL);
                        System.debug('newCon = '+newCon);
                        addContact = new Contact(LastName = surname,
                                                FirstName = monicker,
                                                AccountId = insUpdData.Customer__c,
                                                RecordTypeId = typeL,
                                                AWS_Data_Id__c = newCon.AWS_Data_Id__c,
                                                LastName_Encrypted__c = newCon.LastName_Encrypted__c);
                        try{
                            //新增一条联系人数据
                            insert addContact;
                            sfRecordId = addContact.id;
                            insUpdData.Create_Contacts__c = '';
                        }catch(Exception e){
                            //ApexPages.addMessages(e);
@@ -484,6 +556,7 @@
                try{
                    //新增或修改数据
                    upsert insUpdData;
                    ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '保存成功!'));
                    isSearchBtn = true;
                    //保存成功,需要初始化一下此对象,防止再次点击此按钮保存一个条同样的数据
@@ -514,8 +587,8 @@
    }
    //查询地址表数据
    private String makeTextAddressSql(String typeSearchId) {
        String AddressSql = 'SELECT ID,Address_Classification__c,Customer__c,Customer__r.Name,Contacts__c,Contacts__r.Name,Telephone__c'
                        +',Province__c,Province__r.Name,City__c,City__r.name,Detailed_Address__c,Create_Contacts__c,ZipCode__c,CreatedByid '
        String AddressSql = 'SELECT AWS_Data_Id__c,ID,Address_Classification__c,Customer__c,Customer__r.Name,Customer__r.Type,Customer__r.RecordTypeId,Contacts__c,Contacts__r.Name,Contacts__r.AWS_Data_Id__c,Telephone__c'
                        +',Province__c,Province__r.Name,City__c,City__r.name,Detailed_Address__c,Create_Contacts__c,ZipCode__c,CreatedByid,Detailed_Address_Encrypted__c,Telephone_Encrypted__c,ZipCode_Encrypted__c,Contacts__r.LastName_Encrypted__c'
                        + ' FROM Address__c where id != null';
        //类型筛选
        if(!String.isBlank(typeText)){
@@ -541,8 +614,11 @@
            AddressSql += ' and Customer__r.Name LIKE \'%' + txtName.trim() + '%\'' ;
        }
        //详细地址筛选
        if(!String.isBlank(txtAddress)){
            AddressSql += ' and Detailed_Address__c LIKE \'%' + txtAddress.trim() + '%\'' ;
        // if(!String.isBlank(txtAddress)){
        //     AddressSql += ' and Detailed_Address__c LIKE \'%' + txtAddress.trim() + '%\'' ;
        // }
        if(!String.isBlank(addressDataIds)){
            AddressSql += ' and AWS_Data_Id__c in('+addressDataIds.trim()+')';
        }
        //排序,根据上次修改时间和采用时间进行降序排序,值为空放到后面
        AddressSql += ' order by LastModifiedDate desc,Using_Datetime__c desc NULLS LAST';
@@ -550,6 +626,7 @@
        if(String.isBlank(typeSearchId)){
            AddressSql += ' limit 1000 ';
        }
        System.debug('AddressSql = '+AddressSql);
        return AddressSql;
    }
    //查询医院客户人员信息