From de39551f21809211c6453a4a9798e8c7fb87f08d Mon Sep 17 00:00:00 2001 From: Daseul Kim Date: Fri, 10 Jan 2025 17:02:10 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EA=B2=AC=EC=A0=81=EC=84=9C=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=ED=85=9C=20=EC=A1=B0=ED=9A=8C=20api=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/biz/master/MasterController.java | 440 +++++++++--------- .../qcast/biz/master/QuotationService.java | 17 + .../dto/ApiQuotationItemModuleRequest.java | 23 + .../dto/ApiQuotationItemModuleRowRequest.java | 87 ++++ .../dto/ApiQuotationItemRackRequest.java | 27 ++ .../master/dto/ApiQuotationItemRequest.java | 146 ++++++ .../master/dto/ApiQuotationItemResponse.java | 17 + 7 files changed, 542 insertions(+), 215 deletions(-) create mode 100644 src/main/java/com/interplug/qcast/biz/master/QuotationService.java create mode 100644 src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemModuleRequest.java create mode 100644 src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemModuleRowRequest.java create mode 100644 src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemRackRequest.java create mode 100644 src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemRequest.java create mode 100644 src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemResponse.java diff --git a/src/main/java/com/interplug/qcast/biz/master/MasterController.java b/src/main/java/com/interplug/qcast/biz/master/MasterController.java index 6df0150e..dc3529de 100644 --- a/src/main/java/com/interplug/qcast/biz/master/MasterController.java +++ b/src/main/java/com/interplug/qcast/biz/master/MasterController.java @@ -6,239 +6,249 @@ import com.interplug.qcast.config.Exception.QcastException; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - @RestController @RequestMapping("/api/v1/master") @RequiredArgsConstructor @Tag(name = "MasterController", description = "Master API") public class MasterController { - private final MasterService masterService; + private final MasterService masterService; + private final QuotationService quotationService; - @Operation(description = "지붕재 목록을 조회한다.") - @GetMapping("/getRoofMaterialList") - public ApiResponse getRoofMaterialList() { - return masterService.getRoofMaterialList(); + @Operation(description = "지붕재 목록을 조회한다.") + @GetMapping("/getRoofMaterialList") + public ApiResponse getRoofMaterialList() { + return masterService.getRoofMaterialList(); + } + + @Operation(description = "모듈 타입별 아이템 목록을 조회한다.") + @GetMapping("/getModuleTypeItemList") + public ApiResponse getModuleTypeItemList( + @Parameter(description = "지붕재 코드 목록") @RequestParam("arrRoofMatlCd") + List roofMaterialCd) + throws QcastException { + if (roofMaterialCd == null + || roofMaterialCd.isEmpty() + || roofMaterialCd.size() > 4 + || roofMaterialCd.stream().anyMatch(s -> s == null || s.trim().isEmpty())) { + throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); + } + return masterService.getModuleTypeItemList(roofMaterialCd); + } + + @Operation(description = "가대 목록 조회한다.") + @GetMapping("/getTrestleList") + public ApiResponse getTrestleList( + @Parameter(description = "모듈타입코드") @RequestParam(required = false) String moduleTpCd, + @Parameter(description = "지붕재코드") @RequestParam(required = false) String roofMatlCd, + @Parameter(description = "서까래기초코드") @RequestParam(required = false) String raftBaseCd, + @Parameter(description = "가대메이커코드") @RequestParam(required = false) String trestleMkrCd, + @Parameter(description = "공법코드") @RequestParam(required = false) String constMthdCd, + @Parameter(description = "지붕기초코드") @RequestParam(required = false) String roofBaseCd) { + + ApiTrestleBuilder apiTrestleInfoBuilder = + new ApiTrestleBuilder( + moduleTpCd, roofMatlCd, raftBaseCd, trestleMkrCd, constMthdCd, roofBaseCd); + ApiTrestleBuilder atb = + apiTrestleInfoBuilder + .setModuleTpCd(moduleTpCd) + .setRoofMatlCdCd(roofMatlCd) + .setRaftBaseCd(raftBaseCd) + .setTrestleMkrCd(trestleMkrCd) + .setConstMthdCd(constMthdCd) + .setRoofBaseCd(roofBaseCd) + .build(); + return masterService.getTrestleList( + atb.getModuleTpCd(), + atb.getRoofMatlCd(), + atb.getRaftBaseCd(), + atb.getTrestleMkrCd(), + atb.getConstMthdCd(), + atb.getRoofBaseCd()); + } + + @Operation(description = "시공법 목록 조회한다.") + @GetMapping("/getConstructionList") + public ApiResponse getConstructionList( + @Parameter(description = "모듈타입코드") @RequestParam String moduleTpCd, + @Parameter(description = "지붕재코드") @RequestParam String roofMatlCd, + @Parameter(description = "가대메이커코드") @RequestParam String trestleMkrCd, + @Parameter(description = "공법코드") @RequestParam String constMthdCd, + @Parameter(description = "지붕기초코드") @RequestParam String roofBaseCd, + @Parameter(description = "면조도") @RequestParam String illuminationTp, + @Parameter(description = "설치높이") @RequestParam String instHt, + @Parameter(description = "풍속") @RequestParam String stdWindSpeed, + @Parameter(description = "적설량") @RequestParam String stdSnowLd, + @Parameter(description = "경사도코드") @RequestParam String inclCd, + @Parameter(description = "서까래기초코드") @RequestParam(required = false) String raftBaseCd, + @Parameter(description = "하제(망둥어)피치") @RequestParam(required = false) Integer roofPitch) + throws QcastException { + + if (moduleTpCd == null + || moduleTpCd.trim().isEmpty() + || roofMatlCd == null + || roofMatlCd.trim().isEmpty() + || trestleMkrCd == null + || trestleMkrCd.trim().isEmpty() + || constMthdCd == null + || constMthdCd.trim().isEmpty() + || roofBaseCd == null + || roofBaseCd.trim().isEmpty() + || illuminationTp == null + || illuminationTp.trim().isEmpty() + || instHt == null + || instHt.trim().isEmpty() + || stdWindSpeed == null + || stdWindSpeed.trim().isEmpty() + || stdSnowLd == null + || stdSnowLd.trim().isEmpty() + || inclCd == null + || inclCd.trim().isEmpty()) { + throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); } - @Operation(description = "모듈 타입별 아이템 목록을 조회한다.") - @GetMapping("/getModuleTypeItemList") - public ApiResponse getModuleTypeItemList( - @Parameter(description = "지붕재 코드 목록") @RequestParam("arrRoofMatlCd") - List roofMaterialCd) - throws QcastException { - if (roofMaterialCd == null - || roofMaterialCd.isEmpty() - || roofMaterialCd.size() > 4 - || roofMaterialCd.stream().anyMatch(s -> s == null || s.trim().isEmpty())) { - throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); - } - return masterService.getModuleTypeItemList(roofMaterialCd); + ApiConstructionBuilder apiConstructionBuilder = + new ApiConstructionBuilder( + moduleTpCd, + roofMatlCd, + trestleMkrCd, + constMthdCd, + roofBaseCd, + illuminationTp, + instHt, + stdWindSpeed, + stdSnowLd, + inclCd, + raftBaseCd, + roofPitch); + ApiConstructionBuilder acb = + apiConstructionBuilder + .setModuleTpCd(moduleTpCd) + .setRoofMatlCd(roofMatlCd) + .setTrestleMkrCd(trestleMkrCd) + .setConstMthdCd(constMthdCd) + .setRoofBaseCd(roofBaseCd) + .setIlluminationTp(illuminationTp) + .setInstHt(instHt) + .setStdWindSpeed(stdWindSpeed) + .setStdSnowLd(stdSnowLd) + .setInclCd(inclCd) + .setRaftBaseCd(raftBaseCd) + .setRoofPitch(roofPitch) + .build(); + + return masterService.getConstructionList( + acb.getModuleTpCd(), + acb.getRoofMatlCd(), + acb.getTrestleMkrCd(), + acb.getConstMthdCd(), + acb.getRoofBaseCd(), + acb.getIlluminationTp(), + acb.getInstHt(), + acb.getStdWindSpeed(), + acb.getStdSnowLd(), + acb.getInclCd(), + acb.getRaftBaseCd(), + acb.getRoofPitch()); + } + + @Operation(description = "가대 상세 조회한다.") + @GetMapping("/getTrestleDetailList") + public ApiResponse getTrestleDetailList( + @Parameter(description = "모듈타입코드") @RequestParam String moduleTpCd, + @Parameter(description = "지붕재코드") @RequestParam String roofMatlCd, + @Parameter(description = "가대메이커코드") @RequestParam String trestleMkrCd, + @Parameter(description = "공법코드") @RequestParam String constMthdCd, + @Parameter(description = "지붕기초코드") @RequestParam String roofBaseCd, + @Parameter(description = "면조도") @RequestParam String illuminationTp, + @Parameter(description = "설치높이") @RequestParam String instHt, + @Parameter(description = "풍속") @RequestParam String stdWindSpeed, + @Parameter(description = "적설량") @RequestParam String stdSnowLd, + @Parameter(description = "경사도코드") @RequestParam String inclCd, + @Parameter(description = "시공법") @RequestParam String constTp, + @Parameter(description = "혼합모듈번호") @RequestParam(required = false) Integer mixMatlNo, + @Parameter(description = "하제(망둥어)피치") @RequestParam(required = false) Integer roofPitch) + throws QcastException { + + if (moduleTpCd == null + || moduleTpCd.trim().isEmpty() + || roofMatlCd == null + || roofMatlCd.trim().isEmpty() + || trestleMkrCd == null + || trestleMkrCd.trim().isEmpty() + || constMthdCd == null + || constMthdCd.trim().isEmpty() + || roofBaseCd == null + || roofBaseCd.trim().isEmpty() + || illuminationTp == null + || illuminationTp.trim().isEmpty() + || instHt == null + || instHt.trim().isEmpty() + || stdWindSpeed == null + || stdWindSpeed.trim().isEmpty() + || stdSnowLd == null + || stdSnowLd.trim().isEmpty() + || inclCd == null + || inclCd.trim().isEmpty() + || constTp == null + || constTp.trim().isEmpty()) { + throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); } - @Operation(description = "가대 목록 조회한다.") - @GetMapping("/getTrestleList") - public ApiResponse getTrestleList( - @Parameter(description = "모듈타입코드") @RequestParam(required = false) String moduleTpCd, - @Parameter(description = "지붕재코드") @RequestParam(required = false) String roofMatlCd, - @Parameter(description = "서까래기초코드") @RequestParam(required = false) String raftBaseCd, - @Parameter(description = "가대메이커코드") @RequestParam(required = false) String trestleMkrCd, - @Parameter(description = "공법코드") @RequestParam(required = false) String constMthdCd, - @Parameter(description = "지붕기초코드") @RequestParam(required = false) String roofBaseCd) { + ApiTrestleDetailBuilder atdb = + ApiTrestleDetailBuilder.builder() + .moduleTpCd(moduleTpCd) + .roofMatlCd(roofMatlCd) + .trestleMkrCd(trestleMkrCd) + .constMthdCd(constMthdCd) + .roofBaseCd(roofBaseCd) + .illuminationTp(illuminationTp) + .instHt(instHt) + .stdWindSpeed(stdWindSpeed) + .stdSnowLd(stdSnowLd) + .inclCd(inclCd) + .constTp(constTp) + .mixMatlNo(mixMatlNo) + .roofPitch(roofPitch) + .build(); - ApiTrestleBuilder apiTrestleInfoBuilder = - new ApiTrestleBuilder( - moduleTpCd, roofMatlCd, raftBaseCd, trestleMkrCd, constMthdCd, roofBaseCd); - ApiTrestleBuilder atb = - apiTrestleInfoBuilder - .setModuleTpCd(moduleTpCd) - .setRoofMatlCdCd(roofMatlCd) - .setRaftBaseCd(raftBaseCd) - .setTrestleMkrCd(trestleMkrCd) - .setConstMthdCd(constMthdCd) - .setRoofBaseCd(roofBaseCd) - .build(); - return masterService.getTrestleList( - atb.getModuleTpCd(), - atb.getRoofMatlCd(), - atb.getRaftBaseCd(), - atb.getTrestleMkrCd(), - atb.getConstMthdCd(), - atb.getRoofBaseCd()); - } + return masterService.getTrestleDetailList( + atdb.getModuleTpCd(), + atdb.getRoofMatlCd(), + atdb.getTrestleMkrCd(), + atdb.getConstMthdCd(), + atdb.getRoofBaseCd(), + atdb.getIlluminationTp(), + atdb.getInstHt(), + atdb.getStdWindSpeed(), + atdb.getStdSnowLd(), + atdb.getInclCd(), + atdb.getConstTp(), + atdb.getMixMatlNo(), + atdb.getRoofPitch()); + } - @Operation(description = "시공법 목록 조회한다.") - @GetMapping("/getConstructionList") - public ApiResponse getConstructionList( - @Parameter(description = "모듈타입코드") @RequestParam String moduleTpCd, - @Parameter(description = "지붕재코드") @RequestParam String roofMatlCd, - @Parameter(description = "가대메이커코드") @RequestParam String trestleMkrCd, - @Parameter(description = "공법코드") @RequestParam String constMthdCd, - @Parameter(description = "지붕기초코드") @RequestParam String roofBaseCd, - @Parameter(description = "면조도") @RequestParam String illuminationTp, - @Parameter(description = "설치높이") @RequestParam String instHt, - @Parameter(description = "풍속") @RequestParam String stdWindSpeed, - @Parameter(description = "적설량") @RequestParam String stdSnowLd, - @Parameter(description = "경사도코드") @RequestParam String inclCd, - @Parameter(description = "서까래기초코드") @RequestParam(required = false) String raftBaseCd, - @Parameter(description = "하제(망둥어)피치") @RequestParam(required = false) Integer roofPitch) - throws QcastException { + @Operation(description = "PCS 메이커, 시리즈 조회한다.") + @GetMapping("/pcsMakerList") + public ApiResponse getPcsMakerList( + @Parameter(description = "PCS 메이커 코드") @RequestParam(required = false) String pcsMkrCd, + @Parameter(description = "혼합모듈번호") @RequestParam(required = false) String mixMatlNo) { - if (moduleTpCd == null - || moduleTpCd.trim().isEmpty() - || roofMatlCd == null - || roofMatlCd.trim().isEmpty() - || trestleMkrCd == null - || trestleMkrCd.trim().isEmpty() - || constMthdCd == null - || constMthdCd.trim().isEmpty() - || roofBaseCd == null - || roofBaseCd.trim().isEmpty() - || illuminationTp == null - || illuminationTp.trim().isEmpty() - || instHt == null - || instHt.trim().isEmpty() - || stdWindSpeed == null - || stdWindSpeed.trim().isEmpty() - || stdSnowLd == null - || stdSnowLd.trim().isEmpty() - || inclCd == null - || inclCd.trim().isEmpty()) { - throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); - } + return masterService.getPcsMakerList(pcsMkrCd, mixMatlNo); + } - ApiConstructionBuilder apiConstructionBuilder = - new ApiConstructionBuilder( - moduleTpCd, - roofMatlCd, - trestleMkrCd, - constMthdCd, - roofBaseCd, - illuminationTp, - instHt, - stdWindSpeed, - stdSnowLd, - inclCd, - raftBaseCd, - roofPitch); - ApiConstructionBuilder acb = - apiConstructionBuilder - .setModuleTpCd(moduleTpCd) - .setRoofMatlCd(roofMatlCd) - .setTrestleMkrCd(trestleMkrCd) - .setConstMthdCd(constMthdCd) - .setRoofBaseCd(roofBaseCd) - .setIlluminationTp(illuminationTp) - .setInstHt(instHt) - .setStdWindSpeed(stdWindSpeed) - .setStdSnowLd(stdSnowLd) - .setInclCd(inclCd) - .setRaftBaseCd(raftBaseCd) - .setRoofPitch(roofPitch) - .build(); - - return masterService.getConstructionList( - acb.getModuleTpCd(), - acb.getRoofMatlCd(), - acb.getTrestleMkrCd(), - acb.getConstMthdCd(), - acb.getRoofBaseCd(), - acb.getIlluminationTp(), - acb.getInstHt(), - acb.getStdWindSpeed(), - acb.getStdSnowLd(), - acb.getInclCd(), - acb.getRaftBaseCd(), - acb.getRoofPitch()); - } - - @Operation(description = "가대 상세 조회한다.") - @GetMapping("/getTrestleDetailList") - public ApiResponse getTrestleDetailList( - @Parameter(description = "모듈타입코드") @RequestParam String moduleTpCd, - @Parameter(description = "지붕재코드") @RequestParam String roofMatlCd, - @Parameter(description = "가대메이커코드") @RequestParam String trestleMkrCd, - @Parameter(description = "공법코드") @RequestParam String constMthdCd, - @Parameter(description = "지붕기초코드") @RequestParam String roofBaseCd, - @Parameter(description = "면조도") @RequestParam String illuminationTp, - @Parameter(description = "설치높이") @RequestParam String instHt, - @Parameter(description = "풍속") @RequestParam String stdWindSpeed, - @Parameter(description = "적설량") @RequestParam String stdSnowLd, - @Parameter(description = "경사도코드") @RequestParam String inclCd, - @Parameter(description = "시공법") @RequestParam String constTp, - @Parameter(description = "혼합모듈번호") @RequestParam(required = false) Integer mixMatlNo, - @Parameter(description = "하제(망둥어)피치") @RequestParam(required = false) Integer roofPitch) - throws QcastException { - - if (moduleTpCd == null - || moduleTpCd.trim().isEmpty() - || roofMatlCd == null - || roofMatlCd.trim().isEmpty() - || trestleMkrCd == null - || trestleMkrCd.trim().isEmpty() - || constMthdCd == null - || constMthdCd.trim().isEmpty() - || roofBaseCd == null - || roofBaseCd.trim().isEmpty() - || illuminationTp == null - || illuminationTp.trim().isEmpty() - || instHt == null - || instHt.trim().isEmpty() - || stdWindSpeed == null - || stdWindSpeed.trim().isEmpty() - || stdSnowLd == null - || stdSnowLd.trim().isEmpty() - || inclCd == null - || inclCd.trim().isEmpty() - || constTp == null - || constTp.trim().isEmpty()) { - throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); - } - - ApiTrestleDetailBuilder atdb = - ApiTrestleDetailBuilder.builder() - .moduleTpCd(moduleTpCd) - .roofMatlCd(roofMatlCd) - .trestleMkrCd(trestleMkrCd) - .constMthdCd(constMthdCd) - .roofBaseCd(roofBaseCd) - .illuminationTp(illuminationTp) - .instHt(instHt) - .stdWindSpeed(stdWindSpeed) - .stdSnowLd(stdSnowLd) - .inclCd(inclCd) - .constTp(constTp) - .mixMatlNo(mixMatlNo) - .roofPitch(roofPitch) - .build(); - - return masterService.getTrestleDetailList( - atdb.getModuleTpCd(), - atdb.getRoofMatlCd(), - atdb.getTrestleMkrCd(), - atdb.getConstMthdCd(), - atdb.getRoofBaseCd(), - atdb.getIlluminationTp(), - atdb.getInstHt(), - atdb.getStdWindSpeed(), - atdb.getStdSnowLd(), - atdb.getInclCd(), - atdb.getConstTp(), - atdb.getMixMatlNo(), - atdb.getRoofPitch()); - } - - @Operation(description = "PCS 메이커, 시리즈 조회한다.") - @GetMapping("/pcsMakerList") - public ApiResponse getPcsMakerList(@Parameter(description = "PCS 메이커 코드") @RequestParam(required = false) String pcsMkrCd, - @Parameter(description = "혼합모듈번호") @RequestParam(required = false) String mixMatlNo) { - - return masterService.getPcsMakerList(pcsMkrCd, mixMatlNo); - } + @Operation(description = "견적서 아이템을 조회한다.") + @PostMapping("/getQuotationItem") + public ApiResponse getQuotationItem( + @RequestBody ApiQuotationItemRequest quotationItemRequest) { + return quotationService.getQuotationItem(quotationItemRequest); + } } diff --git a/src/main/java/com/interplug/qcast/biz/master/QuotationService.java b/src/main/java/com/interplug/qcast/biz/master/QuotationService.java new file mode 100644 index 00000000..b77a554a --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/QuotationService.java @@ -0,0 +1,17 @@ +package com.interplug.qcast.biz.master; + +import com.interplug.qcast.biz.master.dto.ApiQuotationItemRequest; +import com.interplug.qcast.biz.master.dto.ApiQuotationItemResponse; +import com.interplug.qcast.biz.master.dto.ApiResponse; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(name = "quotation", url = "${qsp.url}/api/quotation") +public interface QuotationService { + + // 견적서 아이템 조회 + @PostMapping("/item") + public ApiResponse getQuotationItem( + @RequestBody ApiQuotationItemRequest req); +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemModuleRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemModuleRequest.java new file mode 100644 index 00000000..bb81b115 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemModuleRequest.java @@ -0,0 +1,23 @@ +package com.interplug.qcast.biz.master.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "Api 견적서 아이템 조회 모듈 요청 객체") +public class ApiQuotationItemModuleRequest { + @Schema(description = "모듈타입코드") + @NotNull + public String moduleTpCd; + + @Schema(description = "모듈제품ID", maxLength = 20) + @NotNull + public String moduleItemId; + + @Schema(description = "모듈 수") + @NotNull + public Integer moduleCnt; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemModuleRowRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemModuleRowRequest.java new file mode 100644 index 00000000..9bbf18aa --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemModuleRowRequest.java @@ -0,0 +1,87 @@ +package com.interplug.qcast.biz.master.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "Api 견적서 아이템 조회 모듈 단 정보 요청 객체") +public class ApiQuotationItemModuleRowRequest { + @Schema(description = "순번") + @NotNull + public Integer seq; + + @Schema(description = "모듈제품ID", maxLength = 20) + @NotNull + public String moduleItemId; + + @Schema(description = "모듈타입코드") + @NotNull + public String moduleTpCd; + + @Schema(description = "모듈 수") + @NotNull + public Integer moduleCnt; + + @Schema(description = "노출 하면 수") + @NotNull + public Integer exposedBottomCnt; + + @Schema(description = "노출 반 하면 수") + @NotNull + public Integer exposedHalfBottomCnt; + + @Schema(description = "노출 상면 수") + @NotNull + public Integer exposedTopCnt; + + @Schema(description = "노출 반 상면 수") + @NotNull + public Integer exposedHalfTopCnt; + + @Schema(description = "접면 수") + @NotNull + public Integer touchedSurfaceCnt; + + @Schema(description = "반 접면 수") + @NotNull + public Integer touchedHalfSurfaceCnt; + + @Schema(description = "노출 하면 브라켓(지지금구) 수") + @NotNull + public Integer exposedBottomBracketCnt; + + @Schema(description = "노출 반 하면 브라켓(지지금구) 수") + @NotNull + public Integer exposedHalfBottomBracketCnt; + + @Schema(description = "노출 상면 브라켓(지지금구) 수") + @NotNull + public Integer exposedTopBracketCnt; + + @Schema(description = "노출 반 상면 브라켓(지지금구) 수") + @NotNull + public Integer exposedHalfTopBracketCnt; + + @Schema(description = "접면 브라켓(지지금구) 수") + @NotNull + public Integer touchedSurfaceBracketCnt; + + @Schema(description = "반 접면 브라켓(지지금구) 수") + @NotNull + public Integer touchedHalfSurfaceBracketCnt; + + @Schema(description = "처마커버 수") + @NotNull + public Integer eavesCnt; + + @Schema(description = "반 처마커버 수") + @NotNull + public Integer eavesHalfCnt; + + @Schema(description = "처마커버 측면 노출 수") + @NotNull + public Integer exposedSideEavesCnt; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemRackRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemRackRequest.java new file mode 100644 index 00000000..9045d463 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemRackRequest.java @@ -0,0 +1,27 @@ +package com.interplug.qcast.biz.master.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "Api 견적서 아이템 조회 랙 요청 객체") +public class ApiQuotationItemRackRequest { + @Schema(description = "랙 순번") + @NotNull + public Integer seq; + + @Schema(description = "아이템ID") + @NotNull + public String itemId; + + @Schema(description = "랙 단 수") + @NotNull + public Integer rackRows; + + @Schema(description = "랙 지지금구 수") + @NotNull + public Integer rackFittingCnt; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemRequest.java new file mode 100644 index 00000000..62cb8530 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemRequest.java @@ -0,0 +1,146 @@ +package com.interplug.qcast.biz.master.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "Api 견적서 아이템 조회 요청 객체") +public class ApiQuotationItemRequest { + + @Schema(description = "모듈타입코드") + @NotNull + public String moduleTpCd; + + @Schema(description = "지붕재코드") + @NotNull + public String roofMatlCd; + + @Schema(description = "가대메이커코드") + @NotNull + public String trestleMkrCd; + + @Schema(description = "공법코드") + @NotNull + public String constMthdCd; + + @Schema(description = "지붕기초코드") + @NotNull + public String roofBaseCd; + + @Schema(description = "면조도") + @NotNull + public String illuminationTp; + + @Schema(description = "설치높이") + @NotNull + public String instHt; + + @Schema(description = "풍속") + @NotNull + public String stdWindSpeed; + + @Schema(description = "적설량") + @NotNull + public Integer stdSnowLd; + + @Schema(description = "경사도코드") + @NotNull + public String inclCd; + + @Schema(description = "시공법") + @NotNull + public String constTp; + + @Schema(description = "혼합모듈번호") + public Integer mixMatlNo; + + @Schema(description = "서까래기초코드") + public String raftBaseCd; + + @Schema(description = "하제(망둥어)피치") + public Integer roofPitch; + + @Schema(description = "처마커버설치여부") + @NotNull + public String cvrYn; + + @Schema(description = "낙설방지금구설치여부") + @NotNull + public String snowGdYn; + + @Schema(description = "치조배치여부") + @NotNull + public String plvrYn; + + @Schema(description = "모듈 총 수") + @NotNull + public Integer moduleTotCnt; + + @Schema(description = "모듈 총 단 수") + @NotNull + public Integer moduleRowsTotCnt; + + @Schema(description = "노출 하면 총 수") + @NotNull + public Integer exposedBottomTotCnt; + + @Schema(description = "노출 반 하면 총 수") + @NotNull + public Integer exposedHalfBottomTotCnt; + + @Schema(description = "노출 최 하면 총 수") + @NotNull + public Integer exposedLowerBottomTotCnt; + + @Schema(description = "노출 상면 총 수") + @NotNull + public Integer exposedTopTotCnt; + + @Schema(description = "노출 반 상면 총 수") + @NotNull + public Integer exposedHalfTopTotCnt; + + @Schema(description = "접면 총 수") + @NotNull + public Integer touchedSurfaceTotCnt; + + @Schema(description = "반 접면 총 수") + @NotNull + public Integer touchedHalfSurfaceTotCnt; + + @Schema(description = "처마커버 총 수") + @NotNull + public Integer eavesTotCnt; + + @Schema(description = "반 처마커버 총 수") + @NotNull + public Integer eavesHalfTotCnt; + + @Schema(description = "모듈") + @NotNull + public List modules; + + @Schema(description = "모듈 단 정보") + @NotNull + public List moduleRows; + + @Schema(description = "랙 사용 여부") + @NotNull + public String rackYn; + + @Schema(description = "랙 총 수") + @NotNull + public Integer rackTotCnt; + + @Schema(description = "랙 지지금구 총 수") + @NotNull + public Integer rackFittingTotCnt; + + @Schema(description = "랙") + @NotNull + public List racks; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemResponse.java b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemResponse.java new file mode 100644 index 00000000..a8cbaf23 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/ApiQuotationItemResponse.java @@ -0,0 +1,17 @@ +package com.interplug.qcast.biz.master.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "Api 견적서 아이템 조회 응답 객체") +public class ApiQuotationItemResponse { + + @Schema(description = "아이템 ID") + public String itemId; + + @Schema(description = "수량") + public Integer amount; +}