Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue #28: Ruta za glavnu knjigu #67

Merged
merged 9 commits into from
Apr 6, 2022
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 55 additions & 1 deletion src/main/java/rs/raf/demo/bootstrap/BootstrapData.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import rs.raf.demo.repositories.*;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

Expand All @@ -24,14 +25,27 @@ public class BootstrapData implements CommandLineRunner {
private final FakturaRepository fakturaRepository;
private final PreduzeceRepository preduzeceRepository;
private final PasswordEncoder passwordEncoder;
private final KontnaGrupaRepository kontnaGrupaRepository;
private final KontoRepository kontoRepository;
private final KnjizenjeRepository knjizenjeRepository;

@Autowired
public BootstrapData(UserRepository userRepository,FakturaRepository fakturaRepository, PreduzeceRepository preduzeceRepository, PermissionRepository permissionRepository, PasswordEncoder passwordEncoder) {
public BootstrapData(UserRepository userRepository,
FakturaRepository fakturaRepository,
PermissionRepository permissionRepository,
PasswordEncoder passwordEncoder,
KontoRepository kontoRepository,
KontnaGrupaRepository kontnaGrupaRepository,
KnjizenjeRepository knjizenjeRepository,
PreduzeceRepository preduzeceRepository) {
this.userRepository = userRepository;
this.passwordEncoder = passwordEncoder;
this.permissionRepository = permissionRepository;
this.fakturaRepository = fakturaRepository;
this.preduzeceRepository = preduzeceRepository;
this.kontoRepository = kontoRepository;
this.kontnaGrupaRepository = kontnaGrupaRepository;
this.knjizenjeRepository = knjizenjeRepository;
}

private Preduzece getDefaultPreduzece(){
Expand Down Expand Up @@ -123,11 +137,51 @@ public void run(String... args) throws Exception {
Faktura f4 = getDefaultFaktura();
f4.setIznos(4000.00);


this.fakturaRepository.save(f1);
this.fakturaRepository.save(f2);
this.fakturaRepository.save(f3);
this.fakturaRepository.save(f4);

KontnaGrupa kg1 = new KontnaGrupa();
kg1.setBrojKonta("0");
kg1.setNazivKonta("Naziv kontne grupe 0");
KontnaGrupa kg2 = new KontnaGrupa();
kg2.setBrojKonta("1");
kg2.setNazivKonta("Naziv kontne grupe 1");
this.kontnaGrupaRepository.save(kg1);
this.kontnaGrupaRepository.save(kg2);

Knjizenje knj1 = new Knjizenje();
knj1.setDatumKnjizenja(new Date());
Knjizenje knj2 = new Knjizenje();
knj2.setDatumKnjizenja(new Date());
this.knjizenjeRepository.save(knj1);
this.knjizenjeRepository.save(knj2);

Konto k1 = new Konto();
k1.setDuguje(200.0);
k1.setPotrazuje(300.0);
k1.setKontnaGrupa(kg1);
k1.setKnjizenje(knj1);
Konto k2 = new Konto();
k2.setDuguje(800.0);
k2.setPotrazuje(1300.0);
k2.setKontnaGrupa(kg2);
k2.setKnjizenje(knj1);
Konto k3 = new Konto();
k3.setDuguje(500.0);
k3.setPotrazuje(300.0);
k3.setKontnaGrupa(kg1);
k3.setKnjizenje(knj2);
Konto k4 = new Konto();
k4.setDuguje(1200.0);
k4.setPotrazuje(300.0);
k4.setKontnaGrupa(kg2);
k4.setKnjizenje(knj2);

this.kontoRepository.saveAll(Arrays.asList(k1, k2, k3, k4));

log.info("Data loaded!");
}
}
34 changes: 34 additions & 0 deletions src/main/java/rs/raf/demo/controllers/GlavnaKnjigaController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package rs.raf.demo.controllers;

import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import rs.raf.demo.model.Konto;
import rs.raf.demo.services.impl.KontoService;
import rs.raf.demo.utils.SearchUtil;


@CrossOrigin
@RestController
@SecurityRequirement(name = "bearerAuth")
@RequestMapping("/api/glavna-knjiga")
public class GlavnaKnjigaController {
gojkovicmatija99 marked this conversation as resolved.
Show resolved Hide resolved

private final KontoService kontoService;
private final SearchUtil<Konto> searchUtil;

public GlavnaKnjigaController(KontoService kontoService) {
this.kontoService = kontoService;
this.searchUtil = new SearchUtil<>();
}

@GetMapping(value = "/{kontnaGrupa}",
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getPreduzeceById(@PathVariable("kontnaGrupa") String kontnaGrupa,
@RequestParam(name = "search", required = false, defaultValue = "") String search) {
Specification<Konto> spec = this.searchUtil.getSpec(search + ",kontnaGrupa_brojKonta:" + kontnaGrupa + ",");
gojkovicmatija99 marked this conversation as resolved.
Show resolved Hide resolved
return ResponseEntity.ok(this.kontoService.findAllGlavnaKnjigaResponse(spec));
}
}
25 changes: 25 additions & 0 deletions src/main/java/rs/raf/demo/converter/KontoConverter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package rs.raf.demo.converter;

import org.springframework.stereotype.Component;
import rs.raf.demo.model.Konto;
import rs.raf.demo.responses.GlavnaKnjigaResponse;

import java.util.List;
import java.util.stream.Collectors;

@Component
public class KontoConverter {

public List<GlavnaKnjigaResponse> convert(List<Konto> kontoList) {
return kontoList.stream().map(
konto -> new GlavnaKnjigaResponse(
konto.getKnjizenje().getKnjizenjeId(),
konto.getKnjizenje().getDatumKnjizenja(),
konto.getPotrazuje(),
konto.getDuguje(),
konto.getDuguje() - konto.getPotrazuje(),
konto.getKontnaGrupa().getNazivKonta(),
konto.getKontnaGrupa().getBrojKonta())
).collect(Collectors.toList());
}
}
2 changes: 0 additions & 2 deletions src/main/java/rs/raf/demo/model/Konto.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import lombok.Setter;

import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.util.List;

@Entity
@Getter
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/rs/raf/demo/repositories/KontoRepository.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,22 @@
package rs.raf.demo.repositories;

import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import rs.raf.demo.model.Faktura;
import rs.raf.demo.model.KontnaGrupa;
import rs.raf.demo.model.Konto;

import java.util.List;
import java.util.Optional;

@Repository
public interface KontoRepository extends JpaRepository<Konto, Long> {

public List<Konto> findAll();

List<Konto> findKontoByKontnaGrupaBrojKonta(String kontnaGrupaId);

List<Konto> findAll(Specification<Konto> spec);

}
15 changes: 15 additions & 0 deletions src/main/java/rs/raf/demo/responses/GlavnaKnjigaResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package rs.raf.demo.responses;

import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.Date;

@Data
@AllArgsConstructor
public class GlavnaKnjigaResponse {
Long brojNaloga;
Date datum;
Double potrazuje, duguje, saldo;
String nazivKonta, konto;
}
21 changes: 21 additions & 0 deletions src/main/java/rs/raf/demo/services/impl/KontoService.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
package rs.raf.demo.services.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import rs.raf.demo.converter.KontoConverter;
import rs.raf.demo.model.Konto;
import rs.raf.demo.repositories.KontoRepository;
import rs.raf.demo.responses.GlavnaKnjigaResponse;
import rs.raf.demo.services.IService;

import java.util.*;

@Service
public class KontoService implements IService<Konto, Long> {

@Lazy
@Autowired
private KontoConverter kontoConverter;

private final KontoRepository kontoRepository;

@Autowired
Expand Down Expand Up @@ -40,4 +49,16 @@ public List<Konto> findAll() {
public void deleteById(Long id) {
kontoRepository.deleteById(id);
}

public List<Konto> findByKontnaGrupa(String kontnaGrupa) {
return this.kontoRepository.findKontoByKontnaGrupaBrojKonta(kontnaGrupa);
}

public List<Konto> findAll(Specification<Konto> spec) {
return this.kontoRepository.findAll(spec);
}

public List<GlavnaKnjigaResponse> findAllGlavnaKnjigaResponse(Specification<Konto> spec) {
return this.kontoConverter.convert(this.kontoRepository.findAll(spec));
}
}