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
}]
}]
}]
}]
}
Because what I'm getting from my functions response 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 assembles the first division by date correctly, but not replies to the other dates, that is, it does not repeat the loop, someone would you know the LOGIC error I'm making? the methods that I'm using are these:
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;
}