From 19d7bbf3b3bfaa6fb4ae1a582bad517af0b87514 Mon Sep 17 00:00:00 2001 From: bangae1 Date: Wed, 28 May 2025 06:28:59 +0000 Subject: [PATCH] =?UTF-8?q?=EA=B0=80=EA=B2=A9=EC=A1=B0=EC=82=AC=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/slip/임시전표저장.http | 23 ++-- .../kospo/svcm/dto/req/SlipSaveRequest.java | 44 +++++--- .../svcm/dto/res/EstimateDetailResponse.java | 46 ++++++++ .../svcm/dto/res/PrcsBizDetailResponse.java | 49 +++++++++ .../svcm/dto/res/PrcsDetailResponse.java | 90 ++++++++++++++++ .../com/kospo/svcm/dto/res/SlipResponse.java | 98 ++++++++++------- src/main/java/com/kospo/svcm/model/Slip.java | 102 +++++++++++------- .../svcm/repository/PrcsBizRepository.java | 4 +- .../kospo/svcm/repository/PrcsRepository.java | 4 +- .../kospo/svcm/repository/SlipRepository.java | 2 - .../com/kospo/svcm/service/PrcsService.java | 7 +- .../svcm/service/impl/PrcsServiceImpl.java | 14 ++- .../svcm/service/impl/SlipServiceImpl.java | 28 +++-- 13 files changed, 393 insertions(+), 118 deletions(-) create mode 100644 src/main/java/com/kospo/svcm/dto/res/EstimateDetailResponse.java create mode 100644 src/main/java/com/kospo/svcm/dto/res/PrcsBizDetailResponse.java create mode 100644 src/main/java/com/kospo/svcm/dto/res/PrcsDetailResponse.java diff --git a/api/slip/임시전표저장.http b/api/slip/임시전표저장.http index 9d90c2f..c8cd481 100644 --- a/api/slip/임시전표저장.http +++ b/api/slip/임시전표저장.http @@ -3,18 +3,23 @@ Content-Type: application/json { "contNo": "CONT-0000000005", - "lifnr": "999-99-99999", - "gsber": "1000", - "wrbtrS": "1102", - "mwskz": "V4", - "waers": "KRW", "bldat": "20250501", "budat": "20250502", + "waers": "KRW", + "bktxt": "전표 생성 테스트1", + "lifnr": "999-99-99999", + "wrbtr": "1203", + "mwskz": "V4", + "gsber": "1000", + "bupla": "1000", + "zterm": "PF00", + "banks": "KR", + "bankl": "012", + "bankn": "3510876657453", "hkont": "5366010", + "wrbtrS": "1102", "kostl": "12330", "projk": "", - "wrbtr": "1203", - "bvtyp": "3100", - "bankl": "012", - "bankn": "3510876657453" + "trtGubun": "11", + "txBillSeq": "202503231" } \ No newline at end of file diff --git a/src/main/java/com/kospo/svcm/dto/req/SlipSaveRequest.java b/src/main/java/com/kospo/svcm/dto/req/SlipSaveRequest.java index 09a9118..e6a0966 100644 --- a/src/main/java/com/kospo/svcm/dto/req/SlipSaveRequest.java +++ b/src/main/java/com/kospo/svcm/dto/req/SlipSaveRequest.java @@ -17,32 +17,44 @@ import java.util.List; public class SlipSaveRequest implements Serializable { @Schema(name = "contNo", description = "계약번호") String contNo; - @Schema(name = "lifnr", description = "계약대상자") - String lifnr; - @Schema(name = "gsber", description = "사업영역코드") - String gsber; - @Schema(name = "wrbtrS", description = "전기금액(공급가액)") - String wrbtrS; - @Schema(name = "mwskz", description = "세금코드") - String mwskz; - @Schema(name = "waers", description = "통화코드") - String waers; @Schema(name = "bldat", description = "증빙일") String bldat; @Schema(name = "budat", description = "전기일") String budat; - @Schema(name = "hkont", description = "계정과목코드") - String hkont; - @Schema(name = "kostl", description = "코스트센터코드") - String kostl; - @Schema(name = "projk", description = "wbs요소코드") - String projk; + @Schema(name = "waers", description = "통화") + String waers; + @Schema(name = "bktxt", description = "전표헤더텍스트") + String bktxt; + @Schema(name = "lifnr", description = "구매처코드") + String lifnr; @Schema(name = "wrbtr", description = "전기금액(공급가액+세액") String wrbtr; + @Schema(name = "mwskz", description = "세금코드") + String mwskz; + @Schema(name = "gsber", description = "사업영역") + String gsber; + @Schema(name = "bupla", description = "사업장") + String bupla; + @Schema(name = "zterm", description = "지급조건") + String zterm; + @Schema(name = "banks", description = "은행국가키") + String banks; @Schema(name = "bankl", description = "은행코드") String bankl; @Schema(name = "bankn", description = "계좌번호") String bankn; + @Schema(name = "hkont", description = "계정과목코드") + String hkont; + @Schema(name = "wrbtrS", description = "전기금액(공급가액)") + String wrbtrS; + @Schema(name = "kostl", description = "코스트센터코드") + String kostl; + @Schema(name = "projk", description = "wbs요소코드") + String projk; + @Schema(name = "trtGubun", description = "전자세금계산서 처리구분자") + String trtGubun; + @Schema(name = "txBillSeq", description = "전자세금계산서 일련번호") + String txBillSeq; List slipAtts; @Getter diff --git a/src/main/java/com/kospo/svcm/dto/res/EstimateDetailResponse.java b/src/main/java/com/kospo/svcm/dto/res/EstimateDetailResponse.java new file mode 100644 index 0000000..ad9dd7b --- /dev/null +++ b/src/main/java/com/kospo/svcm/dto/res/EstimateDetailResponse.java @@ -0,0 +1,46 @@ +package com.kospo.svcm.dto.res; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.kospo.svcm.model.Estimate; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * DTO for {@link Estimate} + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonIgnoreProperties(ignoreUnknown = true) +@Schema(name = "EstimateResponse", description = "견적") +public class EstimateDetailResponse implements Serializable { + @Schema(name = "estNo", description = "견적관리번호") + String estNo; + @Schema(name = "mngNm", description = "담당자명") + String mngNm; + @Schema(name = "unitPrc", description = "단가") + Integer unitPrc; + @Schema(name = "amt", description = "금액") + Integer amt; + @Schema(name = "dtlSpNo", description = "상세규격번호") + String dtlSpNo; + @Schema(name = "regDt", description = "등록일시") + String regDt; + + public static EstimateDetailResponse from(Estimate estimate) { + return EstimateDetailResponse.builder() + .estNo(estimate.getEstNo()) + .mngNm(estimate.getMngNm()) + .dtlSpNo(estimate.getDtlSpNo()) + .unitPrc(estimate.getUnitPrc()) + .amt(estimate.getAmt()) + .regDt(estimate.getRegDt()) + .build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/kospo/svcm/dto/res/PrcsBizDetailResponse.java b/src/main/java/com/kospo/svcm/dto/res/PrcsBizDetailResponse.java new file mode 100644 index 0000000..37149d9 --- /dev/null +++ b/src/main/java/com/kospo/svcm/dto/res/PrcsBizDetailResponse.java @@ -0,0 +1,49 @@ +package com.kospo.svcm.dto.res; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.kospo.svcm.model.DtlSpec; +import com.kospo.svcm.model.PrcsBiz; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.io.Serializable; +import java.util.List; + +/** + * DTO for {@link DtlSpec} + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonIgnoreProperties(ignoreUnknown = true) +@Schema(name = "DtlSpecResponse", description = "상세규격") +public class PrcsBizDetailResponse implements Serializable { + @Schema(name = "prcsNo", description = "가격조사번호") + String prcsNo; + @Schema(name = "bizNo", description = "사업자번호") + String bizNo; + @Schema(name = "email", description = "이메일") + String email; + @Schema(name = "sendYn", description = "전송여부") + Boolean sendYn; + @Schema(name = "estStatCd", description = "입찰상태코드") + String estStatCd; + @Schema(name = "estStat", description = "입찰상태") + String estStat; + @Schema(name = "totAmt", description = "합계금액") + int totAmt; + List estimates; + + public static PrcsBizDetailResponse from(PrcsBiz prcsBiz) { + return PrcsBizDetailResponse.builder() + .prcsNo(prcsBiz.getId().getPrcsNo()) + .bizNo(prcsBiz.getId().getBizNo()) + .email(prcsBiz.getEmail()) + .sendYn(prcsBiz.getSendYn()) + .estStatCd(prcsBiz.getEstStatCd()) + .estStat(prcsBiz.getEstStat()) + .build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/kospo/svcm/dto/res/PrcsDetailResponse.java b/src/main/java/com/kospo/svcm/dto/res/PrcsDetailResponse.java new file mode 100644 index 0000000..580bc9b --- /dev/null +++ b/src/main/java/com/kospo/svcm/dto/res/PrcsDetailResponse.java @@ -0,0 +1,90 @@ +package com.kospo.svcm.dto.res; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.kospo.svcm.model.Prcs; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; + +/** + * DTO for {@link Prcs} + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonIgnoreProperties(ignoreUnknown = true) +@Schema(name = "PrcsDetailResponse", description = "가격조사상세") +public class PrcsDetailResponse implements Serializable { + @Schema(name = "prcsNo", description = "가격조사번호") + String prcsNo; + @Schema(name = "cateCd", description = "분야코드") + String cateCd; + @Schema(name = "cateNm", description = "분야") + String cateNm; + @Schema(name = "title", description = "제목") + String title; + @Schema(name = "content", description = "내용") + String content; + @Schema(name = "regSdat", description = "등록시작일") + String regSdat; + @Schema(name = "regEdat", description = "등록종료일") + String regEdat; + @Schema(name = "prvYn", description = "비공개여부") + Boolean prvYn; + @Schema(name = "prvRsn", description = "비공개사유") + String prvRsn; + @Schema(name = "prvPwd", description = "비공개비밀번호") + String prvPwd; + @Schema(name = "aiYn", description = "ai검증여부") + Boolean aiYn; + @Schema(name = "regSabun", description = "등록사번") + String regSabun; + @Schema(name = "regNm", description = "등록자") + String regNm; + @Schema(name = "regDt", description = "등록일시") + String regDt; + @Schema(name = "stCd", description = "등록상태코드") + String stCd; + @Schema(name = "stNm", description = "등록상태") + String stNm; + @Schema(name = "svyYn", description = "조사완료여부") + Boolean svyYn; + @Schema(name = "svyDt", description = "조사완료일시") + String svyDt; + ApprMstResponse apprMst; + List prcsAtts; + List dtlSpecs; + List prcsBizs; + + public static PrcsDetailResponse from(Prcs prcs) { + return PrcsDetailResponse.builder() + .prcsNo(prcs.getPrcsNo()) + .cateCd(prcs.getCateCd()) + .cateNm(prcs.getCateNm()) + .title(prcs.getTitle()) + .content(prcs.getContent()) + .regSdat(prcs.getRegSdat()) + .regEdat(prcs.getRegEdat()) + .prvYn(prcs.getPrvYn()) + .prvRsn(prcs.getPrvRsn()) + .prvPwd(prcs.getPrvPwd()) + .aiYn(prcs.getAiYn()) + .regSabun(prcs.getRegSabun()) + .regNm(prcs.getRegNm()) + .stCd(prcs.getStCd()) + .stNm(prcs.getStNm()) + .svyYn(prcs.getSvyYn()) + .svyDt(prcs.getSvyDt()) + .regDt(prcs.getRegDt()) + .apprMst(prcs.getApprMst() == null ? null : ApprMstResponse.from(prcs.getApprMst())) + .prcsAtts(prcs.getPrcsAtts() == null ? null : prcs.getPrcsAtts().stream().map(PrcsAttResponse::from).collect(Collectors.toList())) + .dtlSpecs(prcs.getDtlSpecs() == null ? null : prcs.getDtlSpecs().stream().map(DtlSpecResponse::from).collect(Collectors.toList())) + .prcsBizs(prcs.getPrcsBizs() == null ? null : prcs.getPrcsBizs().stream().map(PrcsBizDetailResponse::from).collect(Collectors.toList())) + .build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/kospo/svcm/dto/res/SlipResponse.java b/src/main/java/com/kospo/svcm/dto/res/SlipResponse.java index eda3b6e..99fbb1a 100644 --- a/src/main/java/com/kospo/svcm/dto/res/SlipResponse.java +++ b/src/main/java/com/kospo/svcm/dto/res/SlipResponse.java @@ -21,47 +21,61 @@ import java.util.List; public class SlipResponse implements Serializable { @Schema(name = "contNo", description = "계약번호") String contNo; - @Schema(name = "lifnr", description = "계약대상자") - String lifnr; - @Schema(name = "gsber", description = "사업영역코드") - String gsber; - @Schema(name = "wrbtrS", description = "전기금액(공급가액)") - String wrbtrS; - @Schema(name = "mwskz", description = "세금코드") - String mwskz; - @Schema(name = "waers", description = "통화코드") - String waers; @Schema(name = "bldat", description = "증빙일") String bldat; @Schema(name = "budat", description = "전기일") String budat; - @Schema(name = "hkont", description = "계정과목코드") - String hkont; - @Schema(name = "kostl", description = "코스트센터코드") - String kostl; - @Schema(name = "projk", description = "WBS요소코드") - String projk; - @Schema(name = "wrbtr", description = "전기금액(공급가액+세액)") + @Schema(name = "waers", description = "통화") + String waers; + @Schema(name = "bktxt", description = "전표헤더텍스트") + String bktxt; + @Schema(name = "lifnr", description = "구매처코드") + String lifnr; + @Schema(name = "wrbtr", description = "전기금액(공급가액+세액") String wrbtr; - @Schema(name = "bvtyp", description = "파트너은행") - String bvtyp; - @Schema(name = "bstat", description = "전표상태") - String bstat; + @Schema(name = "mwskz", description = "세금코드") + String mwskz; + @Schema(name = "gsber", description = "사업영역") + String gsber; + @Schema(name = "bupla", description = "사업장") + String bupla; + @Schema(name = "zterm", description = "지급조건") + String zterm; + @Schema(name = "banks", description = "은행국가키") + String banks; @Schema(name = "bankl", description = "은행코드") String bankl; - @Schema(name = "usnam", description = "전표생성자사번") + @Schema(name = "bankn", description = "계좌번호") + String bankn; + @Schema(name = "hkont", description = "계정과목코드") + String hkont; + @Schema(name = "wrbtrS", description = "전기금액(공급가액)") + String wrbtrS; + @Schema(name = "kostl", description = "코스트센터코드") + String kostl; + @Schema(name = "projk", description = "wbs요소코드") + String projk; + @Schema(name = "usnam", description = "전표 생성자사번") String usnam; - @Schema(name = "gjahr", description = "회계년도") - String gjahr; + @Schema(name = "url", description = "증빙문서url") + String url; + @Schema(name = "trtGubun", description = "전자세금계산서 처리구분자") + String trtGubun; + @Schema(name = "txBillSeq", description = "전자세금계산서 일련번호") + String txBillSeq; + @Schema(name = "bukrs", description = "회사코드") + String bukrs; @Schema(name = "belnr", description = "전표번호") String belnr; - @Schema(name = "bukrs", description = "남부발전코드(1000)") - String bukrs; + @Schema(name = "gjahr", description = "회계연도") + String gjahr; @Schema(name = "type", description = "메시지유형") String type; - @Schema(name = "message", description = "메시지") + @Schema(name = "message", description = "메시지유형") String message; - @Schema(name = "regDt", description = "결재순번") + @Schema(name = "regSabun", description = "등록자") + String regSabun; + @Schema(name = "regDt", description = "등록일시") String regDt; List slipAtts; @@ -69,25 +83,33 @@ public class SlipResponse implements Serializable { public static SlipResponse to(Slip slip) { return SlipResponse.builder() .contNo(slip.getContNo()) - .lifnr(slip.getLifnr()) - .gsber(slip.getGsber()) - .wrbtrS(slip.getWrbtrS()) - .mwskz(slip.getMwskz()) - .waers(slip.getWaers()) .bldat(slip.getBldat()) .budat(slip.getBudat()) + .waers(slip.getWaers()) + .bktxt(slip.getBktxt()) + .lifnr(slip.getLifnr()) + .wrbtr(slip.getWrbtr()) + .mwskz(slip.getMwskz()) + .gsber(slip.getGsber()) + .bupla(slip.getBupla()) + .zterm(slip.getZterm()) + .banks(slip.getBanks()) + .bankl(slip.getBankl()) + .bankn(slip.getBankn()) .hkont(slip.getHkont()) + .wrbtrS(slip.getWrbtrS()) .kostl(slip.getKostl()) .projk(slip.getProjk()) - .wrbtr(slip.getWrbtr()) - .bvtyp(slip.getBvtyp()) - .bstat(slip.getBstat()) .usnam(slip.getUsnam()) - .gjahr(slip.getGjahr()) - .belnr(slip.getBelnr()) + .url(slip.getUrl()) + .trtGubun(slip.getTrtGubun()) + .txBillSeq(slip.getTxBillSeq()) .bukrs(slip.getBukrs()) + .belnr(slip.getBelnr()) + .gjahr(slip.getGjahr()) .type(slip.getType()) .message(slip.getMessage()) + .regSabun(slip.getRegSabun()) .regDt(slip.getRegDt()) .slipAtts(slip.getSlipAtts() == null ? null : slip.getSlipAtts().stream().map(SlipAttResponse::from).toList()) .build(); diff --git a/src/main/java/com/kospo/svcm/model/Slip.java b/src/main/java/com/kospo/svcm/model/Slip.java index 5522323..0804d53 100644 --- a/src/main/java/com/kospo/svcm/model/Slip.java +++ b/src/main/java/com/kospo/svcm/model/Slip.java @@ -1,6 +1,7 @@ package com.kospo.svcm.model; import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import lombok.*; @@ -19,26 +20,6 @@ public class Slip { @Column(name = "cont_no", nullable = false, length = 20) private String contNo; - @Size(max = 20) - @Column(name = "lifnr", length = 20) - private String lifnr; - - @Size(max = 4) - @Column(name = "gsber", length = 4) - private String gsber; - - @Size(max = 31) - @Column(name = "wrbtr_s", length = 31) - private String wrbtrS; - - @Size(max = 2) - @Column(name = "mwskz", length = 2) - private String mwskz; - - @Size(max = 5) - @Column(name = "waers", length = 5) - private String waers; - @Size(max = 8) @Column(name = "bldat", length = 8) private String bldat; @@ -47,10 +28,59 @@ public class Slip { @Column(name = "budat", length = 8) private String budat; + @Size(max = 5) + @Column(name = "waers", length = 5) + private String waers; + + @Size(max = 75) + @Column(name = "bktxt", length = 75) + private String bktxt; + + @Size(max = 20) + @Column(name = "lifnr", length = 20) + private String lifnr; + + @Size(max = 31) + @Column(name = "wrbtr", length = 31) + private String wrbtr; + + @Size(max = 2) + @NotNull + @Column(name = "mwskz", nullable = false, length = 2) + private String mwskz; + + @Size(max = 4) + @Column(name = "gsber", length = 4) + private String gsber; + + @Size(max = 4) + @Column(name = "bupla", length = 4) + private String bupla; + + @Size(max = 4) + @Column(name = "zterm", length = 4) + private String zterm; + + @Size(max = 3) + @Column(name = "banks", length = 3) + private String banks; + + @Size(max = 45) + @Column(name = "bankl", length = 45) + private String bankl; + + @Size(max = 60) + @Column(name = "bankn", length = 60) + private String bankn; + @Size(max = 10) @Column(name = "hkont", length = 10) private String hkont; + @Size(max = 31) + @Column(name = "wrbtr_s", length = 31) + private String wrbtrS; + @Size(max = 10) @Column(name = "kostl", length = 10) private String kostl; @@ -59,33 +89,33 @@ public class Slip { @Column(name = "projk", length = 24) private String projk; - @Size(max = 31) - @Column(name = "wrbtr", length = 31) - private String wrbtr; - - @Size(max = 4) - @Column(name = "bvtyp", length = 4) - private String bvtyp; - - @Size(max = 1) - @Column(name = "bstat", length = 1) - private String bstat; - @Size(max = 12) @Column(name = "usnam", length = 12) private String usnam; + @Size(max = 200) + @Column(name = "url", length = 200) + private String url; + + @Size(max = 2) + @Column(name = "trt_gubun", length = 2) + private String trtGubun; + + @Size(max = 15) + @Column(name = "tx_bill_seq", length = 15) + private String txBillSeq; + @Size(max = 4) - @Column(name = "gjahr", length = 4) - private String gjahr; + @Column(name = "bukrs", length = 4) + private String bukrs; @Size(max = 10) @Column(name = "belnr", length = 10) private String belnr; @Size(max = 4) - @Column(name = "bukrs", length = 4) - private String bukrs; + @Column(name = "gjahr", length = 4) + private String gjahr; @Size(max = 1) @Column(name = "type", length = 1) diff --git a/src/main/java/com/kospo/svcm/repository/PrcsBizRepository.java b/src/main/java/com/kospo/svcm/repository/PrcsBizRepository.java index e8d8580..f57df49 100644 --- a/src/main/java/com/kospo/svcm/repository/PrcsBizRepository.java +++ b/src/main/java/com/kospo/svcm/repository/PrcsBizRepository.java @@ -12,8 +12,8 @@ public interface PrcsBizRepository extends JpaRepository { "inner join ApprMst am on am.prcsNo = p.prcsNo \n" + "and pb.id.bizNo = :bizNo " + "and p.stCd = '0200' and pb.estStatCd = '0000' and am.apprStatCd = '0200' " + - "and p.regSdat >= to_char(current_date, 'yyyy-MM-dd') " + - "and p.regEdat <= to_char(current_date, 'yyyy-MM-dd') ") + "and p.regSdat <= to_char(current_date, 'yyyy-MM-dd') " + + "and p.regEdat >= to_char(current_date, 'yyyy-MM-dd') ") int countReqByBizNo(String bizNo); /*입찰 상태 변경*/ diff --git a/src/main/java/com/kospo/svcm/repository/PrcsRepository.java b/src/main/java/com/kospo/svcm/repository/PrcsRepository.java index a52a184..5a129f7 100644 --- a/src/main/java/com/kospo/svcm/repository/PrcsRepository.java +++ b/src/main/java/com/kospo/svcm/repository/PrcsRepository.java @@ -98,8 +98,8 @@ public interface PrcsRepository extends JpaRepository { "inner join ApprMst am on am.prcsNo = p.prcsNo \n" + "and pb.id.bizNo = :bizNo " + "and p.stCd = '0200' and pb.estStatCd = '0000' and am.apprStatCd = '0200' " + - "and p.regSdat >= to_char(current_date, 'yyyy-MM-dd') " + - "and p.regEdat <= to_char(current_date, 'yyyy-MM-dd') " + + "and p.regSdat <= to_char(current_date, 'yyyy-MM-dd') " + + "and p.regEdat >= to_char(current_date, 'yyyy-MM-dd') " + "and (:cateCd is null or :cateCd = '' or p.cateCd = :cateCd) " + "and (:regNm is null or :regNm = '' or p.regNm like concat('%', :regNm, '%'))" + "and (:title is null or :title = '' or p.title like concat('%', :title, '%'))" + diff --git a/src/main/java/com/kospo/svcm/repository/SlipRepository.java b/src/main/java/com/kospo/svcm/repository/SlipRepository.java index dfe3c14..cfbf426 100644 --- a/src/main/java/com/kospo/svcm/repository/SlipRepository.java +++ b/src/main/java/com/kospo/svcm/repository/SlipRepository.java @@ -3,8 +3,6 @@ package com.kospo.svcm.repository; import com.kospo.svcm.model.Slip; import org.springframework.data.jpa.repository.JpaRepository; -import java.util.List; - public interface SlipRepository extends JpaRepository { Slip findByContNo(String contNo); Slip findByBelnr(String belnr); diff --git a/src/main/java/com/kospo/svcm/service/PrcsService.java b/src/main/java/com/kospo/svcm/service/PrcsService.java index 2e1e5a7..00e244f 100644 --- a/src/main/java/com/kospo/svcm/service/PrcsService.java +++ b/src/main/java/com/kospo/svcm/service/PrcsService.java @@ -2,10 +2,7 @@ package com.kospo.svcm.service; import com.kospo.svcm.dto.req.PrcsSaveRequest; import com.kospo.svcm.dto.req.PrcsUpdateRequest; -import com.kospo.svcm.dto.res.ContPrcsResponse; -import com.kospo.svcm.dto.res.PageResponse; -import com.kospo.svcm.dto.res.PrcsExternalResponse; -import com.kospo.svcm.dto.res.PrcsResponse; +import com.kospo.svcm.dto.res.*; import com.kospo.svcm.model.PrcsAtt; import org.springframework.data.domain.Pageable; import org.springframework.transaction.annotation.Transactional; @@ -25,7 +22,7 @@ public interface PrcsService { PageResponse findSearch(String cateCd, String stCd, String regNm, String regSdt, String regEdt, Pageable pageable); @Transactional - PrcsResponse findDetail(String prcsNo); + PrcsDetailResponse findDetail(String prcsNo); @Transactional PrcsResponse findByApprNoDetail(String apprNo); diff --git a/src/main/java/com/kospo/svcm/service/impl/PrcsServiceImpl.java b/src/main/java/com/kospo/svcm/service/impl/PrcsServiceImpl.java index 00aa460..488ebe5 100644 --- a/src/main/java/com/kospo/svcm/service/impl/PrcsServiceImpl.java +++ b/src/main/java/com/kospo/svcm/service/impl/PrcsServiceImpl.java @@ -115,10 +115,20 @@ public class PrcsServiceImpl implements PrcsService { @Transactional @Override - public PrcsResponse findDetail(String prcsNo) { + public PrcsDetailResponse findDetail(String prcsNo) { Optional optionalPrcs = prcsRepository.findById(prcsNo); if(optionalPrcs.isPresent()) { - return PrcsResponse.from(optionalPrcs.get()); + PrcsDetailResponse prcsResponse = PrcsDetailResponse.from(optionalPrcs.get()); + prcsResponse.getPrcsBizs().forEach(prcsBiz -> { + List estimates = estimateRepository.findByBizNoAndPrcsNo(prcsBiz.getBizNo(), prcsBiz.getPrcsNo()); + int totAmt = estimates.stream().mapToInt(Estimate::getAmt).sum(); + prcsBiz.setTotAmt(totAmt); + prcsBiz.setEstimates(estimates.stream().map(estimate ->{ + EstimateDetailResponse estimateDetailResponse = EstimateDetailResponse.from(estimate); + return estimateDetailResponse; + }).toList()); + }); + return prcsResponse; } else { throw new CustomException(ErrorCode.FIND_ERR); } diff --git a/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java b/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java index 6e3e2fb..3780259 100644 --- a/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java +++ b/src/main/java/com/kospo/svcm/service/impl/SlipServiceImpl.java @@ -58,20 +58,28 @@ public class SlipServiceImpl implements SlipService { if(cont != null) { Slip slip = slipRepository.save(Slip.builder() .contNo(slipSaveRequest.getContNo()) - .lifnr(slipSaveRequest.getLifnr()) - .gsber(slipSaveRequest.getGsber()) - .wrbtrS(slipSaveRequest.getWrbtrS()) - .mwskz(slipSaveRequest.getMwskz()) - .waers(slipSaveRequest.getWaers()) .bldat(slipSaveRequest.getBldat()) .budat(slipSaveRequest.getBudat()) + .waers(slipSaveRequest.getWaers()) + .bktxt(slipSaveRequest.getBktxt()) + .lifnr(slipSaveRequest.getLifnr()) + .wrbtr(slipSaveRequest.getWrbtr()) + .mwskz(slipSaveRequest.getMwskz()) + .gsber(slipSaveRequest.getGsber()) + .bupla(slipSaveRequest.getBupla()) + .zterm(slipSaveRequest.getZterm()) + .banks(slipSaveRequest.getBanks()) + .bankl(slipSaveRequest.getBankl()) + .bankn(slipSaveRequest.getBankn()) .hkont(slipSaveRequest.getHkont()) .wrbtrS(slipSaveRequest.getWrbtrS()) .kostl(slipSaveRequest.getKostl()) .projk(slipSaveRequest.getProjk()) .usnam(user.getSabun()) + .url("전표 상세 페이지 url 필요 ex) http://svcm.kospo.co.kr/slip/{cont_no}") + .trtGubun(slipSaveRequest.getTrtGubun()) + .txBillSeq(slipSaveRequest.getTxBillSeq()) .regSabun(user.getSabun()) - .wrbtr(String.valueOf(Integer.parseInt(slipSaveRequest.getWrbtrS()) + Math.floor((Integer.parseInt(slipSaveRequest.getWrbtrS())* 0.1)))) .regDt(CommonUtils.dateFormat("yyyy-MM-dd HH:mm:ss")) .build()); List slipAtts = null; @@ -101,6 +109,14 @@ public class SlipServiceImpl implements SlipService { } slip.setSlipAtts(slipAtts); + + /*임시 전표 생성 eai호출영역 start*/ + slip.setBukrs("1000"); + slip.setBelnr(CommonUtils.dateFormat("yyyyMMddHHmmss")); + slip.setGjahr(CommonUtils.dateFormat("yyyy")); + slip.setType("S"); + /*임시 전표 생성 eai호출영역 end*/ + slipRepository.save(slip); return SlipResponse.to(slip); } else { throw new CustomException(ErrorCode.SAVE_ERR);