首页 > 解决方案 > Salesforce Apex(或 Java) - 将属性值从一个对象分配给同一类中的另一个对象

问题描述

我在使用类属性中的值作为另一个类中对象的属性值时遇到问题。

我想要完成的是,当一个人在公司注册了一项附加服务,并且该人使用自动付款 (EFT/ACH),并且经常性付款金额与每月金额不同时,经常性付款将显示金额。但是,如果客户未使用 EFT/ACH,则显示的付款将是他们选择的任何模式(每月、每季度、每年),或者默认为每月。

我的服务返回以下 JSON:

{
    "response": [
        {
            "accountNumber": "12345678",
            "currentMode": "MONTHLY",
            "monthlyPayment": 51.00,
            "quarterlyPayment": 148.00,
            "annualPayment": 561.00,
            "recurringAchPayment": 48.40,
            "paymentMethod": "EFT/ACH",
            "additionalService": [
                "accountNumber": "12345678",
                "addlServiceCode": "X01888444",
                "monthlyPayment": 15.00,
                "quartPayment": 43.60,
                "annualPayment": 165.00,
                "recurringPayment": 14.20
            ]
        }
    ]
}

我有以下包装器(类)

public class AccountServicesWrapper {
    public class Response {
        public String accountNumber{get;set;}
        public String currentMode{
            get{
                return String.isBlank(currentMode) ? 'monthly' : currentMode;
            }
            set;
        }
        public String monthlyPayment{
            get{
                return StringUtils.isNotBlank(monthlyPayment) ? StringUtils.formatCurrency(monthlyPayment) : monthlyPayment;
            }
            set;
        }
        (quarterlyPayment, annualPayment, and recurringAchPayment are the same)
        public List<AdditionalService> additionalService{get;set;}
    }
    public List<Response> response{get;set;}
    public class AdditionalService {
        public String monthlyPayment (same as monthlyPayment above, quartPayment, annualPayment, recurringPayment also the same)
        public String currentMode{get;set;}
        public String paymentMethod{get;set;}
        public String payment{
            get {
                if (payment!= null) {
                    return payment;
                } else if (currentMode != null) {
                    if (paymentMethod == 'EFT/ACH' && 'monthly' == currentMode.toLowerCase()) {
                        payment = recurringPayment;
                    } else if ('monthly' == currentMode.toLowerCase()) {
                        payment = monthlyPayment;
                    } else if (repeat with quartPayment & annualPayment)
                    } else {
                        payment = monthlyPayment;
                    }
                } else {
                    payment = monthlyPayment;
                }
            }
            return payment;
        }
    }
}

AdditionalService 中的“付款”是屏幕上显示的内容。目前的问题是,支付时屏幕显示的是 15.00 而不是 14.20。那是因为 currentMode 和 paymentMethod 被设置为空。

如您所见,我正在尝试使用 currentMode 和 paymentMethod 来确定是显示 recurringPayment 金额还是每月/每季度/每年的付款金额。问题是服务没有在 AdditionalService 对象中返回 currentMode 或 paymentMethod。将这些添加到服务中不是一个选项 - 我无法控制。所以我必须以某种方式将值从 Response 类传递给 AdditionalService 类。

我尝试做'return Response.currentMode'和'return Response.get(0).currentMode',但这些都不起作用。

谁能告诉我我需要做什么?

我将 Java 包括在内,因为 Apex 基于 Java 6,所以我想也许 Java 人可能会有答案。

标签: javaclasssalesforceapex

解决方案


推荐阅读