3
respostas

Gostaria de saber como fazer um relatório para um projeto da faculdade, não estou sabendo como fazer

Abaixo vou deixar uma parte do código e o link do gitHub para se alguém puder da uma olhada e me da alguma dica? O projeto é sobre um sistema de DIZÍMO ONLINE, no projeto existe o membro e a igreja, o membro vai ter uma conta membro e a igreja vai ter uma conta igreja. Queria criar uma tabela no banco(MySql) para receber um relatorio de todas as doações do membro para a igreja.

@Entity
@Table(name = "membros")
@Getter
@Setter
@NoArgsConstructor
public class Membro {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;
    @Column(name = "cpf", unique = true, nullable = false, length = 14)
    private String cpf;
    private String nome;
    private Integer idade;
    private LocalDate dataDeNascimento;
    private Genero sexo;
    private String email;
    private Integer senha;
    private Boolean ativo;
    @OneToOne(cascade = CascadeType.ALL)
    private Endereco endereco;
    @OneToOne(mappedBy = "membro", cascade = CascadeType.ALL)
    private ContaMembro contaMembro;

    public Membro(String nome, String cpf, Integer idade, LocalDate dataDeNascimento, Genero sexo, Integer senha, String email) {
        this.nome = nome;
        this.cpf = cpf;
        this.idade = idade;
        this.dataDeNascimento = dataDeNascimento;
        this.sexo = sexo;
        this.senha = senha;
        this.email = email;
        this.ativo = true;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("Member {\n");
        sb.append("  id: ").append(id).append("\n");
        sb.append("  cpf: '").append(cpf).append("'\n");
        sb.append("  name: '").append(nome).append("'\n");
        sb.append("  age: ").append(idade).append("\n");
        sb.append("  dateOfBirth: ").append(dataDeNascimento).append("\n");
        sb.append("  sex: ").append(sexo).append("\n");
        sb.append("  email: '").append(email).append("'\n");
        sb.append("  password: ").append(senha).append("\n");
        sb.append("  active: ").append(ativo).append("\n");
        sb.append("  address: ").append(endereco).append("\n");
        sb.append("  memberAccount: ").append(contaMembro.toString()).append("\n");
        sb.append("}");
        return sb.toString();
    }
@Entity
@Table(name = "igrejas")
@Getter
@Setter
@NoArgsConstructor
public class Igreja {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nomeDaIgreja;
    @Column(name = "cnpj", unique = true, nullable = false)
    private String cnpj;
    private String email;
    private Integer senha;
    private LocalDate dataDeFundacao;
    @OneToOne(cascade = CascadeType.ALL)
    private Endereco endereco;
    private Boolean ativo;
    @OneToOne(mappedBy = "igreja", cascade = CascadeType.ALL)
    private ContaIgreja contaIgreja;

    public Igreja(String nomeDaIgreja, String cnpj, Integer senha, LocalDate dateOfBirth, String email) {
        this.nomeDaIgreja = nomeDaIgreja;
        this.cnpj = cnpj;
        this.email = email;
        this.senha = senha;
        this.dataDeFundacao = dateOfBirth;
        this.ativo = true;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("Church {\n");
        sb.append("  id: ").append(id).append("\n");
        sb.append("  churchName: '").append(nomeDaIgreja).append("'\n");
        sb.append("  cnpj: '").append(cnpj).append("'\n");
        sb.append("  email: '").append(email).append("'\n");
        sb.append("  password: ").append(senha).append("\n");
        sb.append("  dateOfBirth: ").append(dataDeFundacao).append("\n");
        sb.append("  address: ").append(endereco).append("\n");
        sb.append("  active: ").append(ativo).append("\n");
        sb.append("  churchAccount: ").append(contaIgreja.toString()).append("\n");
        sb.append("}");
        return sb.toString();
    }

}
3 respostas
@Entity
@Table(name = "contas")
@NoArgsConstructor
@Getter
@Setter
public abstract class Conta {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;
    @Column(unique = true)
    private Integer numeroDaConta;
    private Integer senha;
    private BigDecimal saldo;
    private LocalDate dataDeAberturaDaConta;

    protected Conta(Integer numeroDaConta, Integer senha) {
        this.numeroDaConta = numeroDaConta;
        this.senha = senha;
        this.saldo = BigDecimal.ZERO;
        this.dataDeAberturaDaConta = LocalDate.now();
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("Conta {\n");
        sb.append("  id: ").append(id).append("\n");
        sb.append("  accountNumber: ").append(numeroDaConta).append("\n");
        sb.append("  password: ").append(senha).append("\n");
        sb.append("  balance: ").append(saldo).append("\n");
        sb.append("  accountOpeningDate: ").append(dataDeAberturaDaConta).append("\n");
        sb.append("}");
        return sb.toString();
    }

}
@Entity
@Getter
@Setter
@NoArgsConstructor
public class ContaMembro extends Conta {
    @OneToOne
    private Membro membro;

    public ContaMembro(Integer accountNumber, Integer password, Membro membro) {
        super(accountNumber, password);
        this.membro = membro;
    }

    public ContaMembro(Integer accountNumber, Integer password) {
        super(accountNumber,password);
    }

    @Override
    public String toString() {
        return super.toString();
    }
}
@Entity
@Getter
@Setter
@NoArgsConstructor
public class ContaIgreja extends Conta {
    @OneToOne(cascade = {CascadeType.ALL})
    private Igreja igreja;

    public ContaIgreja(Integer numeroDaConta, Integer senha, Igreja igreja) {
        super(numeroDaConta, senha);
        this.igreja = igreja;
    }

    public ContaIgreja(Integer numeroDaConta, Integer senha){
        super(numeroDaConta,senha);
    }

    @Override
    public String toString() {
        return super.toString();
    }

}

Link do GitHub se alguem quiser olhar o codigo completo: https://github.com/BrunoAlexys/Dizimo_Online.git

Olá Bruno, tudo bem?

Você pode criar uma nova entidade chamada Doacao, que terá um relacionamento ManyToOne com Membro e outro relacionamento ManyToOne com Igreja.

A entidade Doacao pode ter os seguintes atributos: id, valor, data e descrição. Além disso, você pode criar um método na entidade Membro para retornar todas as doações realizadas por ele e outro método na entidade Igreja para retornar todas as doações recebidas por ela.

Com essas informações, você pode criar uma consulta no banco de dados para obter o relatório de doações que você precisa.

Espero ter ajudado e bons estudos!

Ok, obrigado vou tentar fazer aqui!