1
I’m having trouble generating this json
{
"receita": [{
"specialtys": [{
"date": "27/01/2016 00:00:00",
"itemSpecialtys": [{
"specialtyId": 1,
"specialtyName": "Tabelionato de Notas",
"receitas": [{
"id": 2,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado (15) - Teste Receita Joyce -",
"value": 20
}, {
"id": 3,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado (15) - Joyce",
"value": 200
}, {
"id": 4,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado -",
"value": 3
}, {
"id": 5,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado - teste",
"value": 300
}, {
"id": 7,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratu- teste teste teste",
"value": 3
}, {
"id": 9,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado -",
"value": 0.33
}, {
"id": 10,
"date": "27/01/2016 00:00:00",
"descricao": "eem valor declarado -Escrituras - Lavratura de escrituras declarado -",
"value": 0.33
}, {
"id": 11,
"date": "27/01/2016 00:00:00",
"descricao": "Reconhecimento de firmas - Reconhecimento de firma -",
"value": 3.33
}]
}]
}, {
"date": "26/01/2016 00:00:00",
"itemSpecialtys": [{
"specialtyId": 1,
"specialtyName": "Tabelionato de Notas",
"receitas": [{
"id": 6,
"date": "26/01/2016 00:00:00",
"descricao": "Escrituras - ",
"value": 20
}]
}]
}, {
"date": "01/01/2016 00:00:00",
"itemSpecialtys": [{
"specialtyId": 1,
"specialtyName": "Tabelionato de Notas",
"receitas": [{
"id": 1,
"date": "01/01/2016 00:00:00",
"descricao": "outro teste ",
"value": 20
}]
}]
}, {
"date": "28/01/2016 00:00:00",
"itemSpecialtys": [{
"specialtyId": 1,
"specialtyName": "Tabelionato de Notas",
"receitas": [{
"id": 8,
"date": "01/01/2016 00:00:00",
"descricao": "outro teste ",
"value": 20
}]
}]
}]
}]
}
for what I get from answering my duties is this:
{
"receita": [{
"specialtys": [{
"date": "27/01/2016 00:00:00",
"itemSpecialtys": [{
"specialtyId": 1,
"specialtyName": "Tabelionato de Notas",
"receitas": [{
"id": 2,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado (15) - Teste Receita Joyce -",
"value": 20
}, {
"id": 3,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado (15) - Joyce",
"value": 200
}, {
"id": 4,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado -",
"value": 3
}, {
"id": 5,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado - teste",
"value": 300
}, {
"id": 7,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratu- teste teste teste",
"value": 3
}, {
"id": 9,
"date": "27/01/2016 00:00:00",
"descricao": "Escrituras - Lavratura de escrituras públicas com valor declarado -",
"value": 0.33
}, {
"id": 10,
"date": "27/01/2016 00:00:00",
"descricao": "eem valor declarado -Escrituras - Lavratura de escrituras declarado -",
"value": 0.33
}, {
"id": 11,
"date": "27/01/2016 00:00:00",
"descricao": "Reconhecimento de firmas - Reconhecimento de firma -",
"value": 3.33
}]
}]
}, {
"date": "26/01/2016 00:00:00"
}, {
"date": "01/01/2016 00:00:00"
}, {
"date": "28/01/2016 00:00:00"
}]
}]
}
Notice that it mounts the first division by date correctly, but not replica for the other dates, ie, it does not repeat the loop, someone would you know what LOGICA error I’m making? the methods that are those:
private List<RelatorioTO> orderSpecialtyListForDate(List<ReceitaTO> receitasTO){
List<RelatorioTO> relatorioTOs = new ArrayList<RelatorioTO>();
List<RelatorioEspecialidadeTO> specialtys = new ArrayList<RelatorioEspecialidadeTO>();
List<ReceitaTO> receitasOK = new ArrayList<ReceitaTO>();
//verifica cada receita pra comparar e ornaginar por data
Boolean exists = false;
for (ReceitaTO rTO : receitasTO){
exists = false;
for(RelatorioEspecialidadeTO specialty : specialtys){ // acho que ta aqui o problema
if(rTO.getEffectuationDate().equals(specialty.getDate())){
receitasOK.add(rTO);
//verifica cada receita pra comparar e ornaginar por especialidade
specialty.setValues(orderItemSpecialtyListForSpecialty(specialty, receitasOK));
exists = true;
}
}
if(!exists){
RelatorioEspecialidadeTO specialty = new RelatorioEspecialidadeTO();
specialty.setDate(rTO.getEffectuationDate());
specialtys.add(specialty);
}
}
RelatorioTO relTO = new RelatorioTO();
relTO.setSpecialty(specialtys);
relatorioTOs.add(relTO);
return relatorioTOs;
}
private List<RelatorioItemEspecialidadeTO> orderItemSpecialtyListForSpecialty(RelatorioEspecialidadeTO specialty, List<ReceitaTO> receitasOK){
List<RelatorioItemEspecialidadeTO> specialtys = new ArrayList<RelatorioItemEspecialidadeTO>();
//verifica cada receita pra comparar e ornaginar po especialidade
Boolean exists = false;
for (ReceitaTO rTO : receitasOK){
exists = false;
if(specialtys.size() == 0) {
RelatorioItemEspecialidadeTO itemSpecialty = new RelatorioItemEspecialidadeTO();
itemSpecialty.setSpecialtyId(rTO.getSpecialty().getIdSpecialty());
itemSpecialty.setSpecialtyName(rTO.getSpecialty().getDescription());
specialtys.add(itemSpecialty);
}
for(RelatorioItemEspecialidadeTO itemSpecialty : specialtys){
if(rTO.getSpecialty().getIdSpecialty().equals(itemSpecialty.getSpecialtyId())){
//verifica cada receita pra comparar e ornaginar por id
itemSpecialty.setReceitas(orderRevenuesListbyID(receitasOK));
exists = true;
}
}
if(!exists) {
RelatorioItemEspecialidadeTO itemSpecialty = new RelatorioItemEspecialidadeTO();
itemSpecialty.setSpecialtyId(rTO.getSpecialty().getIdSpecialty());
itemSpecialty.setSpecialtyName(rTO.getSpecialty().getDescription());
specialtys.add(itemSpecialty);
}
}
return specialtys;
}
private List<RelatorioReceitasTO> orderRevenuesListbyID(List<ReceitaTO> receitasTO) {
List<RelatorioReceitasTO> receitas = new ArrayList<RelatorioReceitasTO>();
//verifica cada receita pra comparar e ornaginar po especialidade
for (ReceitaTO rTO : receitasTO){
Boolean exists = false;
for(RelatorioReceitasTO receita : receitas){
if(rTO.getIdRevenue().equals(receita.getId())){
exists = true;
}
}
if(!exists){
RelatorioReceitasTO receita = new RelatorioReceitasTO();
receita.setId(rTO.getIdRevenue());
receita.setDate(rTO.getEffectuationDate());
receita.setDescricao(rTO.getDescription());
receita.setValue(rTO.getValue());
receitas.add(receita);
}
}
return receitas;
}
Managed to solve?
– Weslley Tavares
not yet face =S
– Victor Siqueira
Have you checked if the list you are receiving contains the little faces you want to reference? If you can, put the code where this list is filled in.
– Weslley Tavares
yes I am able to assemble and access the data, the problem is of logic, it mounts a part only once, despite creating the separation of the dates
– Victor Siqueira
Friend, to be able to help you, I need more information. You can post the entire JSON build flow?
– Weslley Tavares
What are you using to serialize JSON? How are your objects (your Tos)? It should be no problem to fill your objects, but some back Ference wrong configured, as the data are equal, some serializers do not duplicate the information by default.
– Bruno César
Are you holding the json? I suggest that you use Aphries that do this for you, like this one: https://mvnrepository.com/artifact/com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.2.3.
– Giuliana Bezerra