feat: 시리즈 중 자동 추천 PCS 정보 조회 api 추가, master api 공통 response 타입 수정

This commit is contained in:
Daseul Kim 2025-01-13 18:10:02 +09:00
parent 2b6aa2876f
commit 8d2a5d1d23
12 changed files with 185 additions and 22 deletions

View File

@ -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<ApiRoofMaterialResponse> getRoofMaterialList() {
public ApiResponse<List<ApiRoofMaterialResponse>> getRoofMaterialList() {
return masterService.getRoofMaterialList();
}
@Operation(description = "모듈 타입별 아이템 목록을 조회한다.")
@GetMapping("/getModuleTypeItemList")
public ApiResponse<ApiModuleTpResponse> getModuleTypeItemList(
public ApiResponse<List<ApiModuleTpResponse>> getModuleTypeItemList(
@Parameter(description = "지붕재 코드 목록") @RequestParam("arrRoofMatlCd")
List<String> roofMaterialCd)
throws QcastException {
@ -56,7 +58,7 @@ public class MasterController {
@Operation(description = "가대 목록 조회한다.")
@GetMapping("/getTrestleList")
public ApiResponse<ApiTrestleResponse> getTrestleList(
public ApiResponse<List<ApiTrestleResponse>> 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<ApiConstructionResponse> getConstructionList(
public ApiResponse<List<ApiConstructionResponse>> 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<ApiPcsMakerResponse> getPcsMakerList(
public ApiResponse<List<ApiPcsMakerResponse>> 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<ApiPcsSeriesItemResponse> getPcsSeriesItemList(
public ApiResponse<List<ApiPcsSeriesItemResponse>> getPcsSeriesItemList(
@RequestBody ApiPcsSeriesItemRequest pcsSeriesItemListRequest) {
return masterService.getPcsSeriesItemList(pcsSeriesItemListRequest);
}
@Operation(description = "시리즈 중 자동으로 추천 PCS 정보 조회한다.")
@PostMapping("/pcsAutoRecommendList")
public ApiResponse<ApiPcsAutoRecommendResponse> getPcsAutoRecommendList(
@RequestBody ApiPcsAutoRecommendRequest autoRecommendRequest) {
return masterService.getPcsAutoRecommendList(autoRecommendRequest);
}
/** remote api group : quotation */
@Operation(description = "견적서 아이템을 조회한다.")
@PostMapping("/getQuotationItem")
public ApiResponse<ApiQuotationItemResponse> getQuotationItem(
public ApiResponse<List<ApiQuotationItemResponse>> getQuotationItem(
@RequestBody ApiQuotationItemRequest quotationItemRequest) {
return quotationService.getQuotationItem(quotationItemRequest);
}

View File

@ -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<ApiRoofMaterialResponse> getRoofMaterialList();
public ApiResponse<List<ApiRoofMaterialResponse>> getRoofMaterialList();
// 모듈 타입별 아이템 목록 조회
@GetMapping("/moduleTypeItemList")
public ApiResponse<ApiModuleTpResponse> getModuleTypeItemList(
public ApiResponse<List<ApiModuleTpResponse>> getModuleTypeItemList(
@RequestParam("arrRoofMatlCd") List<String> roofMaterialCd);
// 가대 목록 조회
@GetMapping("/trestle")
public ApiResponse<ApiTrestleResponse> getTrestleList(
public ApiResponse<List<ApiTrestleResponse>> 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<ApiConstructionResponse> getConstructionList(
public ApiResponse<List<ApiConstructionResponse>> getConstructionList(
@RequestParam String moduleTpCd,
@RequestParam String roofMatlCd,
@RequestParam String trestleMkrCd,
@ -74,12 +76,17 @@ public interface MasterService {
// PCS Maker, 시리즈 목록 조회
@GetMapping("/pcsMakerList")
public ApiResponse<ApiPcsMakerResponse> getPcsMakerList(
public ApiResponse<List<ApiPcsMakerResponse>> getPcsMakerList(
@RequestParam(required = false) String pcsMkrCd,
@RequestParam(required = false) String mixMatlNo);
// PCS 시리즈 아이템 목록 조회
@PostMapping("/pcsSeriesItemList")
public ApiResponse<ApiPcsSeriesItemResponse> getPcsSeriesItemList(
public ApiResponse<List<ApiPcsSeriesItemResponse>> getPcsSeriesItemList(
@RequestBody ApiPcsSeriesItemRequest req);
// 시리즈 자동으로 추천 PCS 정보 조회
@PostMapping("/pcsAutoRecommendList")
public ApiResponse<ApiPcsAutoRecommendResponse> getPcsAutoRecommendList(
@RequestBody ApiPcsAutoRecommendRequest req);
}

View File

@ -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<ApiQuotationItemResponse> getQuotationItem(
public ApiResponse<List<ApiQuotationItemResponse>> getQuotationItem(
@RequestBody ApiQuotationItemRequest req);
}

View File

@ -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<T> {
@Schema(description = "목록 데이터")
private List<T> data;
private T data;
@Schema(description = "목록 데이터2")
private List<T> data2;
private T data2;
@Schema(description = "API 결과 데이터")
private ApiResultResponse result;

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<ApiPcsModuleItemRequest> useModuleItemList;
@Schema(description = "지붕면별 목록")
@NotNull
public List<ApiPcsAutoRecommendRoofSurfaceRequest> roofSurfaceList;
@Schema(description = "PCS아이템ID")
@NotNull
public List<ApiPcsAutoRecommendPcsItemRequest> pcsItemList;
}

View File

@ -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<ApiPcsAutoRecommendPcsItemResponse> pcsItemList;
}

View File

@ -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<ApiPcsAutoRecommendModuleItemIdRequest> moduleList;
}

View File

@ -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<ApiPcsSeriesItemModuleRequest> moduleItemList;
public List<ApiPcsModuleItemRequest> moduleItemList;
}