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 ba5f98e2..c8467e97 100644 --- a/src/main/java/com/interplug/qcast/biz/master/MasterController.java +++ b/src/main/java/com/interplug/qcast/biz/master/MasterController.java @@ -3,6 +3,8 @@ package com.interplug.qcast.biz.master; import com.interplug.qcast.biz.master.dto.*; import com.interplug.qcast.biz.master.dto.construction.ApiConstructionResponse; import com.interplug.qcast.biz.master.dto.moduletype.ApiModuleTpResponse; +import com.interplug.qcast.biz.master.dto.pcs.autorecommend.ApiPcsAutoRecommendRequest; +import com.interplug.qcast.biz.master.dto.pcs.autorecommend.ApiPcsAutoRecommendResponse; import com.interplug.qcast.biz.master.dto.pcs.maker.ApiPcsMakerResponse; import com.interplug.qcast.biz.master.dto.pcs.series.ApiPcsSeriesItemRequest; import com.interplug.qcast.biz.master.dto.pcs.series.ApiPcsSeriesItemResponse; @@ -35,13 +37,13 @@ public class MasterController { @Operation(description = "지붕재 목록을 조회한다.") @GetMapping("/getRoofMaterialList") - public ApiResponse getRoofMaterialList() { + public ApiResponse> getRoofMaterialList() { return masterService.getRoofMaterialList(); } @Operation(description = "모듈 타입별 아이템 목록을 조회한다.") @GetMapping("/getModuleTypeItemList") - public ApiResponse getModuleTypeItemList( + public ApiResponse> getModuleTypeItemList( @Parameter(description = "지붕재 코드 목록") @RequestParam("arrRoofMatlCd") List roofMaterialCd) throws QcastException { @@ -56,7 +58,7 @@ public class MasterController { @Operation(description = "가대 목록 조회한다.") @GetMapping("/getTrestleList") - public ApiResponse 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, @@ -87,7 +89,7 @@ public class MasterController { @Operation(description = "시공법 목록 조회한다.") @GetMapping("/getConstructionList") - public ApiResponse getConstructionList( + public ApiResponse> getConstructionList( @Parameter(description = "모듈타입코드") @RequestParam String moduleTpCd, @Parameter(description = "지붕재코드") @RequestParam String roofMatlCd, @Parameter(description = "가대메이커코드") @RequestParam String trestleMkrCd, @@ -248,24 +250,30 @@ public class MasterController { @Operation(description = "PCS 메이커, 시리즈 조회한다.") @GetMapping("/pcsMakerList") - public ApiResponse getPcsMakerList( + 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 = "PCS 시리즈 아이템 목록을 조회한다.") @PostMapping("/getPcsSeriesItemList") - public ApiResponse getPcsSeriesItemList( + public ApiResponse> getPcsSeriesItemList( @RequestBody ApiPcsSeriesItemRequest pcsSeriesItemListRequest) { return masterService.getPcsSeriesItemList(pcsSeriesItemListRequest); } + @Operation(description = "시리즈 중 자동으로 추천 PCS 정보 조회한다.") + @PostMapping("/pcsAutoRecommendList") + public ApiResponse getPcsAutoRecommendList( + @RequestBody ApiPcsAutoRecommendRequest autoRecommendRequest) { + return masterService.getPcsAutoRecommendList(autoRecommendRequest); + } + /** remote api group : quotation */ @Operation(description = "견적서 아이템을 조회한다.") @PostMapping("/getQuotationItem") - public ApiResponse getQuotationItem( + public ApiResponse> getQuotationItem( @RequestBody ApiQuotationItemRequest quotationItemRequest) { return quotationService.getQuotationItem(quotationItemRequest); } diff --git a/src/main/java/com/interplug/qcast/biz/master/MasterService.java b/src/main/java/com/interplug/qcast/biz/master/MasterService.java index 8de308c2..8b084618 100644 --- a/src/main/java/com/interplug/qcast/biz/master/MasterService.java +++ b/src/main/java/com/interplug/qcast/biz/master/MasterService.java @@ -3,6 +3,8 @@ package com.interplug.qcast.biz.master; import com.interplug.qcast.biz.master.dto.*; import com.interplug.qcast.biz.master.dto.construction.ApiConstructionResponse; import com.interplug.qcast.biz.master.dto.moduletype.ApiModuleTpResponse; +import com.interplug.qcast.biz.master.dto.pcs.autorecommend.ApiPcsAutoRecommendRequest; +import com.interplug.qcast.biz.master.dto.pcs.autorecommend.ApiPcsAutoRecommendResponse; import com.interplug.qcast.biz.master.dto.pcs.maker.ApiPcsMakerResponse; import com.interplug.qcast.biz.master.dto.pcs.series.ApiPcsSeriesItemRequest; import com.interplug.qcast.biz.master.dto.pcs.series.ApiPcsSeriesItemResponse; @@ -22,16 +24,16 @@ public interface MasterService { // 지붕재 목록 조회 @GetMapping("/roofMaterialList") - public ApiResponse getRoofMaterialList(); + public ApiResponse> getRoofMaterialList(); // 모듈 타입별 아이템 목록 조회 @GetMapping("/moduleTypeItemList") - public ApiResponse getModuleTypeItemList( + public ApiResponse> getModuleTypeItemList( @RequestParam("arrRoofMatlCd") List roofMaterialCd); // 가대 목록 조회 @GetMapping("/trestle") - public ApiResponse getTrestleList( + public ApiResponse> getTrestleList( @RequestParam(required = false) String moduleTpCd, @RequestParam(required = false) String roofMatlCd, @RequestParam(required = false) String raftBaseCd, @@ -41,7 +43,7 @@ public interface MasterService { // 시공법 목록 조회 @GetMapping("/construction") - public ApiResponse getConstructionList( + public ApiResponse> getConstructionList( @RequestParam String moduleTpCd, @RequestParam String roofMatlCd, @RequestParam String trestleMkrCd, @@ -74,12 +76,17 @@ public interface MasterService { // PCS Maker, 시리즈 목록 조회 @GetMapping("/pcsMakerList") - public ApiResponse getPcsMakerList( + public ApiResponse> getPcsMakerList( @RequestParam(required = false) String pcsMkrCd, @RequestParam(required = false) String mixMatlNo); // PCS 시리즈 아이템 목록 조회 @PostMapping("/pcsSeriesItemList") - public ApiResponse getPcsSeriesItemList( + public ApiResponse> getPcsSeriesItemList( @RequestBody ApiPcsSeriesItemRequest req); + + // 시리즈 중 자동으로 추천 PCS 정보 조회 + @PostMapping("/pcsAutoRecommendList") + public ApiResponse getPcsAutoRecommendList( + @RequestBody ApiPcsAutoRecommendRequest req); } diff --git a/src/main/java/com/interplug/qcast/biz/master/QuotationService.java b/src/main/java/com/interplug/qcast/biz/master/QuotationService.java index 5479ed3e..c8f535b3 100644 --- a/src/main/java/com/interplug/qcast/biz/master/QuotationService.java +++ b/src/main/java/com/interplug/qcast/biz/master/QuotationService.java @@ -3,6 +3,7 @@ package com.interplug.qcast.biz.master; import com.interplug.qcast.biz.master.dto.ApiResponse; import com.interplug.qcast.biz.master.dto.quotation.ApiQuotationItemRequest; import com.interplug.qcast.biz.master.dto.quotation.ApiQuotationItemResponse; +import java.util.List; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -12,6 +13,6 @@ public interface QuotationService { // 견적서 아이템 조회 @PostMapping("/item") - public ApiResponse getQuotationItem( + public ApiResponse> getQuotationItem( @RequestBody ApiQuotationItemRequest req); } diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/ApiResponse.java b/src/main/java/com/interplug/qcast/biz/master/dto/ApiResponse.java index ea3f5b8f..084b4ada 100644 --- a/src/main/java/com/interplug/qcast/biz/master/dto/ApiResponse.java +++ b/src/main/java/com/interplug/qcast/biz/master/dto/ApiResponse.java @@ -1,7 +1,6 @@ package com.interplug.qcast.biz.master.dto; import io.swagger.v3.oas.annotations.media.Schema; -import java.util.List; import lombok.Getter; import lombok.Setter; @@ -11,10 +10,10 @@ import lombok.Setter; public class ApiResponse { @Schema(description = "목록 데이터") - private List data; + private T data; @Schema(description = "목록 데이터2") - private List data2; + private T data2; @Schema(description = "API 결과 데이터") private ApiResultResponse result; diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/series/ApiPcsSeriesItemModuleRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/ApiPcsModuleItemRequest.java similarity index 63% rename from src/main/java/com/interplug/qcast/biz/master/dto/pcs/series/ApiPcsSeriesItemModuleRequest.java rename to src/main/java/com/interplug/qcast/biz/master/dto/pcs/ApiPcsModuleItemRequest.java index 1563269b..f27ae67c 100644 --- a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/series/ApiPcsSeriesItemModuleRequest.java +++ b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/ApiPcsModuleItemRequest.java @@ -1,4 +1,4 @@ -package com.interplug.qcast.biz.master.dto.pcs.series; +package com.interplug.qcast.biz.master.dto.pcs; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; @@ -7,8 +7,8 @@ import lombok.Setter; @Getter @Setter -@Schema(description = "PCS 시리즈 아이템 목록 조회 요청 객체 모듈아이템") -public class ApiPcsSeriesItemModuleRequest { +@Schema(description = "PCS 모듈아이템 요청 객체") +public class ApiPcsModuleItemRequest { @Schema(description = "제품ID", maxLength = 20) @NotNull public String itemId; diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendModuleItemIdRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendModuleItemIdRequest.java new file mode 100644 index 00000000..0bfc50f3 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendModuleItemIdRequest.java @@ -0,0 +1,15 @@ +package com.interplug.qcast.biz.master.dto.pcs.autorecommend; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "PCS 모듈아이템 ID 요청 객체") +public class ApiPcsAutoRecommendModuleItemIdRequest { + @Schema(description = "제품ID", maxLength = 20) + @NotNull + private String itemId; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendPcsItemRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendPcsItemRequest.java new file mode 100644 index 00000000..16d771cc --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendPcsItemRequest.java @@ -0,0 +1,23 @@ +package com.interplug.qcast.biz.master.dto.pcs.autorecommend; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "시리즈 중 자동으로 추천 PCS 정보 조회 PCS 아이템 요청 객체") +public class ApiPcsAutoRecommendPcsItemRequest { + @Schema(description = "PCS제품ID", maxLength = 20) + @NotNull + private String itemId; + + @Schema(description = "PCS메이커코드", maxLength = 10) + @NotNull + private String pcsMkrCd; + + @Schema(description = "PCS시리즈코드", maxLength = 10) + @NotNull + private String pcsSerCd; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendPcsItemResponse.java b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendPcsItemResponse.java new file mode 100644 index 00000000..bc387ed6 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendPcsItemResponse.java @@ -0,0 +1,28 @@ +package com.interplug.qcast.biz.master.dto.pcs.autorecommend; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@JsonIgnoreProperties(ignoreUnknown = true) +@Schema(description = "시리즈 중 자동으로 추천 PCS 정보 조회 PCS 아이템 응답 객체") +public class ApiPcsAutoRecommendPcsItemResponse { + + @Schema(description = "PCS메이커코드") + private String pcsMkrCd; + + @Schema(description = "PCS시리즈코드") + private String pcsSerCd; + + @Schema(description = "PCS 아이템 ID") + private String itemId; + + @Schema(description = "PCS 제품명") + private String itemNm; + + @Schema(description = "PCS 제품명(Basic Material)") + private String goodsNo; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendRequest.java new file mode 100644 index 00000000..33cb58ec --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendRequest.java @@ -0,0 +1,37 @@ +package com.interplug.qcast.biz.master.dto.pcs.autorecommend; + +import com.interplug.qcast.biz.master.dto.pcs.ApiPcsModuleItemRequest; +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 = "시리즈 중 자동으로 추천 PCS 정보 조회 요청 객체") +public class ApiPcsAutoRecommendRequest { + @Schema(description = "Max접속(과적)여부") + @NotNull + public String maxConnYn; + + @Schema(description = "동일회로도여부") + @NotNull + public String smpCirYn; + + @Schema(description = "한랭지여부") + @NotNull + public String coldZoneYn; + + @Schema(description = "사용된 모듈아이템 List") + @NotNull + public List useModuleItemList; + + @Schema(description = "지붕면별 목록") + @NotNull + public List roofSurfaceList; + + @Schema(description = "PCS아이템ID") + @NotNull + public List pcsItemList; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendResponse.java b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendResponse.java new file mode 100644 index 00000000..9c1f8f54 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendResponse.java @@ -0,0 +1,16 @@ +package com.interplug.qcast.biz.master.dto.pcs.autorecommend; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import io.swagger.v3.oas.annotations.media.Schema; +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@JsonIgnoreProperties(ignoreUnknown = true) +@Schema(description = "시리즈 중 자동으로 추천 PCS 정보 조회 응답 객체") +public class ApiPcsAutoRecommendResponse { + @Schema(description = "PCS 아이템 목록") + private List pcsItemList; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendRoofSurfaceRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendRoofSurfaceRequest.java new file mode 100644 index 00000000..7dc9e3a1 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/autorecommend/ApiPcsAutoRecommendRoofSurfaceRequest.java @@ -0,0 +1,28 @@ +package com.interplug.qcast.biz.master.dto.pcs.autorecommend; + +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 = "시리즈 중 자동으로 추천 PCS 정보 조회 지붕면 요청 객체") +public class ApiPcsAutoRecommendRoofSurfaceRequest { + @Schema(description = "지붕면ID") + @NotNull + private String roofSurfaceId; + + @Schema(description = "지붕면방위(동,서,남,북,동남,서북 등등)") + @NotNull + private String roofSurface; + + @Schema(description = "촌수(경사도)") + @NotNull + private Double roofSurfaceIncl; + + @Schema(description = "모듈아이템 List(도면에 설치된 모듈)") + @NotNull + private List moduleList; +} diff --git a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/series/ApiPcsSeriesItemRequest.java b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/series/ApiPcsSeriesItemRequest.java index 93c1be79..478cd8ac 100644 --- a/src/main/java/com/interplug/qcast/biz/master/dto/pcs/series/ApiPcsSeriesItemRequest.java +++ b/src/main/java/com/interplug/qcast/biz/master/dto/pcs/series/ApiPcsSeriesItemRequest.java @@ -1,5 +1,6 @@ package com.interplug.qcast.biz.master.dto.pcs.series; +import com.interplug.qcast.biz.master.dto.pcs.ApiPcsModuleItemRequest; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import java.util.List; @@ -20,5 +21,5 @@ public class ApiPcsSeriesItemRequest { @Schema(description = "Module Item ID") @NotNull - public List moduleItemList; + public List moduleItemList; }