๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/[์‚ผ์ •KPMG]ESG ๋ฐ์ดํ„ฐ ํ™œ์šฉ ํ’€์Šคํ… ๊ฐœ๋ฐœ

19์ผ์ฐจ. ๊ฐœ๋ฐœ ํ”Œ๋กœ์šฐ

by GreenJin_S2 2025. 11. 4.

์„œ๋น„์Šค ํŒŒ์ผ์€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋จ! ๊ทธ ์ดํ›„์—  ์„œ๋น„์Šค impl, ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ ๋‹ค ๋˜‘๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋งž์ถฐ์ฃผ๊ธฐ!

package store.esgseed.api.emission.service;

import java.util.List;

import store.esgseed.api.common.domain.Messenger;
import store.esgseed.api.emission.domain.EmissionDTO;

public interface EmissionService {
    Messenger save(EmissionDTO emission);
    Messenger delete(Long id);
    Messenger update(EmissionDTO emission);
    Messenger findbyId(Long id);
    Messenger findAll();
   
}

 

 

import java.util.List;

import org.springframework.stereotype.Service;

import lombok.RequiredArgsConstructor;
import store.esgseed.api.common.domain.Messenger;
import store.esgseed.api.emission.domain.EmissionDTO;
import store.esgseed.api.emission.repository.EmissionRepository;


@Service
@RequiredArgsConstructor
public class EmissionServiceImpl implements EmissionService {
   
    private final EmissionRepository emissionRepository;

    @Override
    public Messenger save(EmissionDTO emission) {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'save'");
    }

    @Override
    public Messenger delete(Long id) {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'delete'");
    }

    @Override
    public Messenger update(EmissionDTO emission) {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'update'");
    }

    @Override
    public Messenger findbyId(Long id) {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'findbyId'");
    }

    @Override
    public Messenger findAll() {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'findAll'");
    }

   
}

 

public class EmissionServiceImpl implements EmissionService-์ด๊ฑฐ ์ด์šฉํ•ด์„œ add๋ˆ„๋ฅด๊ณ  ๋‹ค ํ˜•์‹ ๋งž์ถฐ์ฃผ๊ธฐ

 

package store.esgseed.api.emission.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import store.esgseed.api.common.domain.Messenger;
import store.esgseed.api.emission.domain.EmissionDTO;
import store.esgseed.api.emission.domain.EmissionEntity;
import store.esgseed.api.emission.service.EmissionService;

@Repository
public class EmissionRepository {

   
    public Messenger save(EmissionDTO emission) {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'save'");
    }

   
    public Messenger delete(Long id) {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'delete'");
    }

   
    public Messenger update(EmissionDTO emission) {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'update'");
    }

   
    public Messenger findbyId(Long id) {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'findbyId'");
    }

   
    public Messenger findAll() {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("Unimplemented method 'findAll'");
    }

๋ ˆํฌ์ง€ํ† ๋ฆฌ๋„ impl์‚ฌ์šฉํ•ด์„œ ๋„ฃ๊ณ  ๋‚˜์ค‘์— @override ์ง€์šฐ๊ณ  ๊ทธ ๋’ค์—  impliment  ๋„ ์ง€์šฐ๊ธฐ

 

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.RequiredArgsConstructor;
import store.esgseed.api.common.domain.Messenger;
import store.esgseed.api.emission.domain.EmissionDTO;
import store.esgseed.api.emission.service.EmissionService;

@RestController
@RequestMapping("/emissions")
@RequiredArgsConstructor
public class EmissionController {

    private final EmissionService emissionService;

    @PostMapping("")
    public Messenger save() {
        emissionService.save(null);
        return Messenger.builder().code(200).message("์„ฑ๊ณต").build();
    }

    @DeleteMapping("/{id}")
    public Messenger delete(Long id) {
        emissionService.delete(id);
        return Messenger.builder().code(200).message("์„ฑ๊ณต").build();
   
    }

    @PutMapping("/{id}")
    public Messenger update(EmissionDTO emission) {
        emissionService.update(emission);
        return Messenger.builder().code(200).message("์„ฑ๊ณต").build();
    }

    @GetMapping("/id/{id}")
    public Messenger findbyId(Long id) {
        emissionService.findbyId(id);
        return Messenger.builder().code(200).message("์„ฑ๊ณต").build();
    }

    @GetMapping("/all")
    public Messenger findAll() {
        emissionService.findAll();
        return Messenger.builder().code(200).message("์„ฑ๊ณต").build();
    }


 
}

์ปจํŠธ๋กค๋Ÿฌ๋„ ๋™์ผํ•˜๊ฒŒ ํ•˜๊ณ  ๊ฐ๊ฐ ๋งž๊ฒŒ @postmapping get delete ๋งž๊ฒŒ ๋„ฃ์–ด ์ฃผ๊ณ  ์•ˆ์— ๋‚ด์šฉ ๋„ฃ์–ด ์ฃผ๊ธฐ , ๋‚˜์ค‘์—๋Š” ์•Œ์•„์„œ ์ž๋™์™„์„ฑ๋จ

 

package store.esgseed.api.emission.domain;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;

@Data
@Entity
@Table(name = "emissions")
public class EmissionEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
   
    private String site;
    private Double scope1Tco2e;
    private Double scope2Tco2e;
    private Double totalScope12Tco2e;
    private Double scope3Tco2e;
}

 

์—”ํ‹ฐํ‹ฐ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ   dto, vo ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ

 

package store.esgseed.api.emission.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class EmissionDTO {
    private String site;
    private Double scope1Tco2e;
    private Double scope2Tco2e;
    private Double totalScope12Tco2e;
    private Double scope3Tco2e;
}

 

package store.esgseed.api.emission.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class EmissionVO {
   
    private String site;
    private Double scope1Tco2e;
    private Double scope2Tco2e;
    private Double totalScope12Tco2e;
    private Double scope3Tco2e;

}
 

 

์•ˆ์— ๋“ค์–ด๊ฐˆ ๋‚ด์šฉ ์šฐ์„  ๋‚ด๊ฐ€ ์ˆ˜์ •ํ•ด์คŒ, ๋‚˜์ค‘์—๋Š” ์•Œ์•„์„œ ์ž‘์„ฑ๋  ๊ฒƒ

 

package store.esgseed.api.emission.controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.RequiredArgsConstructor;
import store.esgseed.api.common.domain.Messenger;
import store.esgseed.api.emission.domain.EmissionDTO;
import store.esgseed.api.emission.service.EmissionService;

@RestController
@RequestMapping("/emissions")
@RequiredArgsConstructor
public class EmissionController {

    private final EmissionService emissionService;

    @PostMapping("")
    public Messenger save(@RequestBody EmissionDTO emission) {
        return emissionService.save(emission);
    }

    @DeleteMapping("/{id}")
    public Messenger delete(@PathVariable Long id) {
        return emissionService.delete(id);
    }

    @PutMapping("/{id}")
    public Messenger update(@RequestBody EmissionDTO emission) {
        return emissionService.update(emission);
    }

    @GetMapping("/id/{id}")
    public Messenger findbyId(@PathVariable Long id) {
        return emissionService.findbyId(id);
    }

    @GetMapping("/all")
    public Messenger findAll() {
        return emissionService.findAll();
    }

 

 

๊ทธ ์•ˆ์— ๋‚ด์šฉ์€ ๋‚ด๊ฐ€ ๊ฐ๊ฐ ์ฑ„์šธ ๊ฒƒ

์ปจ-์„œ-๋ ˆ 

๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜์—ฌ ๊ฐ๊ฐ

 

์ปจํŠธ๋กค๋Ÿฌ๋Š” 

        emissionRepository.update(emission);
        return Messenger.builder().code(200).message("์„ฑ๊ณต").build();

 \\

๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š”

 return Messenger.builder().code(200).message("์„ฑ๊ณต").build();

์ด๋ ‡๊ฒŒ ๋„ฃ์–ด์„œ ์ˆ˜์ •ํ•œ๋’ค

 


 

@ApiApplication.java ์ด๊ฑฐ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด @EmissionEntity.java ์ด๋Œ€๋กœ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜๊ณ  @HomeController.java ์ด๋Œ€๋กœ ์Šค์›จ๊ฑฐ๊ฐ€ ์ƒ์„ฑ๋˜๋„๋ก ํ•ด์ค˜

 

-cursor ์— ์‹œํ‚ค๊ณ  ์ด์ œ๋Š” ์ž๋™ ํ•™์Šต๋˜๋„๋ก ํ• ๊ฒƒ!