Compare commits

...

30 Commits

Author SHA1 Message Date
509803e92d Merge pull request '1012 - 2차대리점 로그인 메인화면에 물건3개 노출. 시공사 버그' (#16) from feature/cha into dev
Reviewed-on: #16
2025-04-24 15:09:04 +09:00
cha
96a6ccef57 1012 - 2차대리점 로그인 메인화면에 물건3개 노출. 시공사 버그 2025-04-24 15:06:49 +09:00
716c183e40 Merge pull request '986 - 시공사번호 추가, 시공사(userId) 데이터만 조회' (#15) from feature/cha into dev
Reviewed-on: #15
2025-04-23 16:05:07 +09:00
cha
ded370a348 986 - 시공사번호 추가, 시공사(userId) 데이터만 조회 2025-04-23 16:01:59 +09:00
46007af1fb chore: requestHeader referer 값 추가 2025-04-23 15:37:15 +09:00
891bb874ec chore: requestHeader 에 referer 추가 2025-04-23 15:29:04 +09:00
seulda
fe2123ae38 refactor: qsp master api 요청 시 헤더에 referer 추가 2025-04-22 17:45:43 +09:00
91a3c872f5 Merge branch 'dev' of https://git.hanasys.jp/qcast3/qcast-api into dev 2025-04-22 13:23:48 +09:00
2b51340eb9 북면설치 api dto 추가 2025-04-22 13:23:37 +09:00
8ce007c552 Merge pull request '975- 아이템(양단케이블) 타입 코드 sql, req, res, ser 추가' (#14) from feature/cha into dev
Reviewed-on: #14
2025-04-14 13:18:08 +09:00
cha
a641c64430 975- 아이템(양단케이블) 타입 코드 sql, req, res, ser 추가 2025-04-14 13:16:39 +09:00
846b64833a Merge pull request '975-ApiQuotationItemResponse 아이켐(양단케이블) 타입 코드 추가' (#13) from feature/cha into dev
Reviewed-on: #13
2025-04-11 17:27:12 +09:00
cha
129c4b12d3 975-ApiQuotationItemResponse 아이켐(양단케이블) 타입 코드 추가 2025-04-11 17:25:11 +09:00
b76304f55d Merge pull request '/* sqlid : com.interplug.qcast.biz.estimate.selectEstimateApiFailList */' (#12) from feature/qcast-886 into dev
Reviewed-on: #12
2025-04-10 15:11:15 +09:00
ff5a25fe18 /* sqlid : com.interplug.qcast.biz.estimate.selectEstimateApiFailList */
T_PLAN  / T_PLAN_INFO 테이블 나뉨 컬럼 미반영분..
2025-04-10 15:10:25 +09:00
ef929f9ec5 Merge pull request '#886 견적서 엑셀, PDF 다운시 금액필드도 OPEN텍스트 적용' (#11) from feature/qcast-886 into dev
Reviewed-on: #11
2025-04-10 10:48:02 +09:00
4163f324b2 #886 견적서 엑셀, PDF 다운시 금액필드도 OPEN텍스트 적용 2025-04-10 10:43:30 +09:00
b3acee760d Merge pull request 'QCast API #886 견적서 Excel, Pdf 다운시 Open 제품은 단가 필드에 OPEN 텍스트로 보여주도록' (#10) from feature/qcast-886 into dev
Reviewed-on: #10
2025-04-08 16:34:43 +09:00
a682efbd2b QCast API #886 견적서 Excel, Pdf 다운시 Open 제품은 단가 필드에 OPEN 텍스트로 보여주도록 2025-04-08 16:28:49 +09:00
b4850483d3 양단 케이블 갯수 파라미터 추가 2025-04-07 14:33:47 +09:00
1802d4381e Merge pull request '952-EstimateSendResponse 2차 SAP 판매점코드 반영' (#9) from feature/cha into dev
Reviewed-on: #9
2025-04-04 17:40:21 +09:00
cha
fc132e28e0 952-EstimateSendResponse 2차 SAP 판매점코드 반영 2025-04-04 17:38:34 +09:00
2a0ad031bf Merge pull request '952-EstimateSendResponse 2차 SAP 판매점코드 추가' (#8) from feature/cha into dev
Reviewed-on: #8
2025-04-04 17:24:20 +09:00
cha
dc23488cd2 952-EstimateSendResponse 2차 SAP 판매점코드 추가 2025-04-04 17:21:53 +09:00
c27930f46b Merge pull request '952-2차 SAP 판매점코드 저장' (#7) from feature/cha into dev
Reviewed-on: #7
2025-04-04 16:28:06 +09:00
cha
786e8b6a8b 952-2차 SAP 판매점코드 저장 2025-04-04 16:26:15 +09:00
5f2c22c2d4 Merge pull request '952-2차 SAP 판매점코드 추가' (#6) from feature/cha into dev
Reviewed-on: #6
2025-04-04 10:31:09 +09:00
cha
a31d0e9c1c 952-2차 SAP 판매점코드 추가 2025-04-04 10:27:22 +09:00
8955889710 Merge pull request '952-2차점 특가 있는 2nd Agency 리스트' (#5) from feature/cha into dev
Reviewed-on: #5
2025-04-03 14:14:29 +09:00
cha
c07003bac8 952-2차점 특가 있는 2nd Agency 리스트 2025-04-03 14:10:45 +09:00
23 changed files with 175 additions and 35 deletions

View File

@ -96,4 +96,11 @@ public class EstimateController {
throws Exception { throws Exception {
estimateService.excelDownload(request, response, estimateRequest); estimateService.excelDownload(request, response, estimateRequest);
} }
@Operation(description = "2차점 특가 있는 2nd Agency 목록을 조회한다.")
@GetMapping("/agency-cust-list")
@ResponseStatus(HttpStatus.OK)
public EstimateApiResponse selectAgencyCustList(PriceRequest priceRequest) throws Exception {
return estimateService.selectAgencyCustList(priceRequest);
}
} }

View File

@ -1409,6 +1409,12 @@ public class EstimateService {
itemResponse.setSalePrice(""); itemResponse.setSalePrice("");
itemResponse.setSaleTotPrice(""); itemResponse.setSaleTotPrice("");
} }
// 886 Excel, PDF에 OPEN_FLG = 1은 단가필드에 OPEN 텍스트로 보여주도록
if ("1".equals(itemResponse.getOpenFlg())) {
itemResponse.setSalePrice("OPEN");
itemResponse.setSaleTotPrice("OPEN");
}
} }
// 합산 문자열 통화로 변환 처리 // 합산 문자열 통화로 변환 처리
@ -1724,6 +1730,8 @@ public class EstimateService {
quoteList.add(estimateSendResponse); quoteList.add(estimateSendResponse);
estimateSendRequest.setQuoteList(quoteList); estimateSendRequest.setQuoteList(quoteList);
// 2차점명
estimateSendResponse.setSecSapSalesStoreCd(estimateRequest.getSecSapSalesStoreCd());
} }
EstimateApiResponse response = null; EstimateApiResponse response = null;
@ -2246,4 +2254,35 @@ public class EstimateService {
return circuitCfg; return circuitCfg;
} }
public EstimateApiResponse selectAgencyCustList(PriceRequest priceRequest) throws Exception {
// Validation
if (StringUtils.isEmpty(priceRequest.getSapSalesStoreCd())) {
throw new QcastException(ErrorCode.INVALID_INPUT_VALUE,
message.getMessage("common.message.required.data", "Sap Sale Store Code"));
}
EstimateApiResponse response = null;
/* [1]. QSP API (url + param) Setting */
String url = QSP_API_URL + "/api/master/agencyCustList";
String apiUrl = UriComponentsBuilder.fromHttpUrl(url)
.queryParam("sapSalesStoreCd", priceRequest.getSapSalesStoreCd()).build().toUriString();
/* [2]. QSP API CALL -> Response */
String strResponse = interfaceQsp.callApi(HttpMethod.GET, apiUrl, null);
if (!"".equals(strResponse)) {
com.fasterxml.jackson.databind.ObjectMapper om =
new com.fasterxml.jackson.databind.ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
response = om.readValue(strResponse, EstimateApiResponse.class);
} else {
// [msg] No data
throw new QcastException(ErrorCode.NOT_FOUND, message.getMessage("common.message.no.data"));
}
return response;
}
} }

View File

@ -212,4 +212,8 @@ public class EstimateRequest {
@Schema(description = "발전시뮬레이션 타입") @Schema(description = "발전시뮬레이션 타입")
private String pwrGnrSimType; private String pwrGnrSimType;
@Schema(description = "2차 SAP 판매점코드")
private String secSapSalesStoreCd;
} }

View File

@ -279,4 +279,7 @@ public class EstimateResponse {
@Schema(description = "SAP STORE CD") @Schema(description = "SAP STORE CD")
private String sapSalesStoreCd; private String sapSalesStoreCd;
@Schema(description = "2차 SAP 판매점코드")
private String secSapSalesStoreCd;
} }

View File

@ -115,4 +115,7 @@ public class EstimateSendResponse {
@Schema(description = "첨부파일 목록") @Schema(description = "첨부파일 목록")
List<FileResponse> fileList; List<FileResponse> fileList;
@Schema(description = "2차 SAP 판매점코드")
private String secSapSalesStoreCd;
} }

View File

@ -106,4 +106,7 @@ public class ItemRequest {
@Schema(description = "사용자아이디") @Schema(description = "사용자아이디")
private String userId; private String userId;
@Schema(description = "아이템 타입 코드")
public String itemTpCd;
} }

View File

@ -85,4 +85,7 @@ public class ItemResponse {
@Schema(description = "회로구성도") @Schema(description = "회로구성도")
private String circuitCfg; private String circuitCfg;
@Schema(description = "아이템 타입 코드")
public String itemTpCd;
} }

View File

@ -23,4 +23,7 @@ public class PriceRequest {
@Schema(description = "아이템번호 목록") @Schema(description = "아이템번호 목록")
private List<PriceItemRequest> itemIdList; private List<PriceItemRequest> itemIdList;
@Schema(description = "2차 SAP 판매점코드")
private String secSapSalesStoreCd;
} }

View File

@ -25,4 +25,6 @@ public class UserResponse {
private String storeLvl; // Store Level private String storeLvl; // Store Level
private String groupId; // groupId private String groupId; // groupId
private String custCd; // custCd private String custCd; // custCd
//시공사 번호
private String builderNo;
} }

View File

@ -21,9 +21,9 @@ public class MainPageController {
private final ObjectService objectService; private final ObjectService objectService;
@Operation(description = "메인 물건정보 목록을 조회한다.") @Operation(description = "메인 물건정보 목록을 조회한다.")
@GetMapping("/object/{saleStoreId}/list") @GetMapping("/object/{saleStoreId}/{userId}/{builderNo}/list")
@ResponseStatus(HttpStatus.OK) @ResponseStatus(HttpStatus.OK)
public MainPageResponse selectObjectList(@PathVariable String saleStoreId) throws Exception { public MainPageResponse selectObjectList(@PathVariable String saleStoreId, @PathVariable String userId, @PathVariable String builderNo) throws Exception {
MainPageResponse mainPageResponse = new MainPageResponse(); MainPageResponse mainPageResponse = new MainPageResponse();
// 판매점명 조회 // 판매점명 조회
@ -39,6 +39,11 @@ public class MainPageController {
// 물건정보 목록 조회 // 물건정보 목록 조회
ObjectRequest objectRequest = new ObjectRequest(); ObjectRequest objectRequest = new ObjectRequest();
objectRequest.setSaleStoreId(saleStoreId); objectRequest.setSaleStoreId(saleStoreId);
objectRequest.setUserId(userId);
if(builderNo != null && !"null".equals(builderNo)) {
objectRequest.setBuilderNo(builderNo);
}
List<ObjectResponse> objectList = objectService.selectObjectMainList(objectRequest); List<ObjectResponse> objectList = objectService.selectObjectMainList(objectRequest);
mainPageResponse.setObjectList(objectList); mainPageResponse.setObjectList(objectList);

View File

@ -23,6 +23,7 @@ import com.interplug.qcast.config.Exception.QcastException;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -43,13 +44,15 @@ public class MasterController {
@Operation(description = "지붕재 목록을 조회한다.") @Operation(description = "지붕재 목록을 조회한다.")
@GetMapping("/getRoofMaterialList") @GetMapping("/getRoofMaterialList")
public ApiResponse<List<ApiRoofMaterialResponse>> getRoofMaterialList() { public ApiResponse<List<ApiRoofMaterialResponse>> getRoofMaterialList(
return masterService.getRoofMaterialList(); HttpServletRequest request) {
return masterService.getRoofMaterialList(request.getHeader("Referer"));
} }
@Operation(description = "모듈 타입별 아이템 목록을 조회한다.") @Operation(description = "모듈 타입별 아이템 목록을 조회한다.")
@GetMapping("/getModuleTypeItemList") @GetMapping("/getModuleTypeItemList")
public ApiResponse<List<ApiModuleTpResponse>> getModuleTypeItemList( public ApiResponse<List<ApiModuleTpResponse>> getModuleTypeItemList(
HttpServletRequest request,
@Parameter(description = "지붕재 코드 목록") @RequestParam("arrRoofMatlCd") @Parameter(description = "지붕재 코드 목록") @RequestParam("arrRoofMatlCd")
List<String> roofMaterialCd) List<String> roofMaterialCd)
throws QcastException { throws QcastException {
@ -59,12 +62,13 @@ public class MasterController {
|| roofMaterialCd.stream().anyMatch(s -> s == null || s.trim().isEmpty())) { || roofMaterialCd.stream().anyMatch(s -> s == null || s.trim().isEmpty())) {
throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); throw new QcastException(ErrorCode.INVALID_INPUT_VALUE);
} }
return masterService.getModuleTypeItemList(roofMaterialCd); return masterService.getModuleTypeItemList(request.getHeader("Referer"), roofMaterialCd);
} }
@Operation(description = "가대 목록 조회한다.") @Operation(description = "가대 목록 조회한다.")
@GetMapping("/getTrestleList") @GetMapping("/getTrestleList")
public ApiResponse<List<ApiTrestleResponse>> getTrestleList( public ApiResponse<List<ApiTrestleResponse>> getTrestleList(
HttpServletRequest request,
@Parameter(description = "모듈타입코드") @RequestParam(required = false) String moduleTpCd, @Parameter(description = "모듈타입코드") @RequestParam(required = false) String moduleTpCd,
@Parameter(description = "지붕재코드") @RequestParam(required = false) String roofMatlCd, @Parameter(description = "지붕재코드") @RequestParam(required = false) String roofMatlCd,
@Parameter(description = "서까래기초코드") @RequestParam(required = false) String raftBaseCd, @Parameter(description = "서까래기초코드") @RequestParam(required = false) String raftBaseCd,
@ -85,6 +89,7 @@ public class MasterController {
.setRoofBaseCd(roofBaseCd) .setRoofBaseCd(roofBaseCd)
.build(); .build();
return masterService.getTrestleList( return masterService.getTrestleList(
request.getHeader("Referer"),
atb.getModuleTpCd(), atb.getModuleTpCd(),
atb.getRoofMatlCd(), atb.getRoofMatlCd(),
atb.getRaftBaseCd(), atb.getRaftBaseCd(),
@ -96,6 +101,7 @@ public class MasterController {
@Operation(description = "시공법 목록 조회한다.") @Operation(description = "시공법 목록 조회한다.")
@GetMapping("/getConstructionList") @GetMapping("/getConstructionList")
public ApiResponse<List<ApiConstructionResponse>> getConstructionList( public ApiResponse<List<ApiConstructionResponse>> getConstructionList(
HttpServletRequest request,
@Parameter(description = "모듈타입코드") @RequestParam String moduleTpCd, @Parameter(description = "모듈타입코드") @RequestParam String moduleTpCd,
@Parameter(description = "지붕재코드") @RequestParam String roofMatlCd, @Parameter(description = "지붕재코드") @RequestParam String roofMatlCd,
@Parameter(description = "가대메이커코드") @RequestParam String trestleMkrCd, @Parameter(description = "가대메이커코드") @RequestParam String trestleMkrCd,
@ -164,6 +170,7 @@ public class MasterController {
.build(); .build();
return masterService.getConstructionList( return masterService.getConstructionList(
request.getHeader("Referer"),
acb.getModuleTpCd(), acb.getModuleTpCd(),
acb.getRoofMatlCd(), acb.getRoofMatlCd(),
acb.getTrestleMkrCd(), acb.getTrestleMkrCd(),
@ -181,12 +188,13 @@ public class MasterController {
@Operation(description = "가대 상세 조회한다.") @Operation(description = "가대 상세 조회한다.")
@PostMapping("/getTrestleDetailList") @PostMapping("/getTrestleDetailList")
public ArrayList<ApiResponse<ApiTrestleDetailResponse>> getTrestleDetailList( public ArrayList<ApiResponse<ApiTrestleDetailResponse>> getTrestleDetailList(
@RequestBody List<ApiTrestleDetailRequest> reqList) { HttpServletRequest request, @RequestBody List<ApiTrestleDetailRequest> reqList) {
ArrayList<ApiResponse<ApiTrestleDetailResponse>> results = new ArrayList<>(); ArrayList<ApiResponse<ApiTrestleDetailResponse>> results = new ArrayList<>();
for (ApiTrestleDetailRequest req : reqList) { for (ApiTrestleDetailRequest req : reqList) {
ApiResponse<ApiTrestleDetailResponse> response = ApiResponse<ApiTrestleDetailResponse> response =
masterService.getTrestleDetailList( masterService.getTrestleDetailList(
request.getHeader("Referer"),
req.getModuleTpCd(), req.getModuleTpCd(),
req.getRoofMatlCd(), req.getRoofMatlCd(),
req.getTrestleMkrCd(), req.getTrestleMkrCd(),
@ -218,57 +226,67 @@ public class MasterController {
@Operation(description = "PCS 메이커, 시리즈 조회한다.") @Operation(description = "PCS 메이커, 시리즈 조회한다.")
@GetMapping("/pcsMakerList") @GetMapping("/pcsMakerList")
public ApiResponse<List<ApiPcsMakerResponse>> getPcsMakerList( public ApiResponse<List<ApiPcsMakerResponse>> getPcsMakerList(
HttpServletRequest request,
@Parameter(description = "PCS 메이커 코드") @RequestParam(required = false) String pcsMkrCd, @Parameter(description = "PCS 메이커 코드") @RequestParam(required = false) String pcsMkrCd,
@Parameter(description = "혼합모듈번호") @RequestParam(required = false) String mixMatlNo) { @Parameter(description = "혼합모듈번호") @RequestParam(required = false) String mixMatlNo) {
return masterService.getPcsMakerList(pcsMkrCd, mixMatlNo); return masterService.getPcsMakerList(request.getHeader("Referer"), pcsMkrCd, mixMatlNo);
} }
@Operation(description = "PCS 시리즈 아이템 목록을 조회한다.") @Operation(description = "PCS 시리즈 아이템 목록을 조회한다.")
@PostMapping("/getPcsSeriesItemList") @PostMapping("/getPcsSeriesItemList")
public ApiResponse<List<ApiPcsSeriesItemResponse>> getPcsSeriesItemList( public ApiResponse<List<ApiPcsSeriesItemResponse>> getPcsSeriesItemList(
@RequestBody ApiPcsSeriesItemRequest pcsSeriesItemListRequest) { HttpServletRequest request, @RequestBody ApiPcsSeriesItemRequest pcsSeriesItemListRequest) {
return masterService.getPcsSeriesItemList(pcsSeriesItemListRequest); return masterService.getPcsSeriesItemList(
request.getHeader("Referer"), pcsSeriesItemListRequest);
} }
@Operation(description = "시리즈 중 자동으로 추천 PCS 정보를 조회한다.") @Operation(description = "시리즈 중 자동으로 추천 PCS 정보를 조회한다.")
@PostMapping("/getPcsAutoRecommendList") @PostMapping("/getPcsAutoRecommendList")
public ApiResponse<ApiPcsAutoRecommendResponse> getPcsAutoRecommendList( public ApiResponse<ApiPcsAutoRecommendResponse> getPcsAutoRecommendList(
@RequestBody ApiPcsInfoRequest autoRecommendRequest) { HttpServletRequest request, @RequestBody ApiPcsInfoRequest autoRecommendRequest) {
return masterService.getPcsAutoRecommendList(autoRecommendRequest); return masterService.getPcsAutoRecommendList(
request.getHeader("Referer"), autoRecommendRequest);
} }
@Operation(description = "배치된 모듈을 선택한 PCS로 회로 구성 가능 여부 체크한다.") @Operation(description = "배치된 모듈을 선택한 PCS로 회로 구성 가능 여부 체크한다.")
@PostMapping("/getPcsVoltageChk") @PostMapping("/getPcsVoltageChk")
public ApiResultResponse getPcsVoltageChk(@RequestBody ApiPcsInfoRequest pcsVoltageChkRequest) { public ApiResultResponse getPcsVoltageChk(
return masterService.getPcsVoltageChk(pcsVoltageChkRequest).getResult(); HttpServletRequest request, @RequestBody ApiPcsInfoRequest pcsVoltageChkRequest) {
return masterService
.getPcsVoltageChk(request.getHeader("Referer"), pcsVoltageChkRequest)
.getResult();
} }
@Operation(description = "PCS 승압설정 정보를 조회한다.") @Operation(description = "PCS 승압설정 정보를 조회한다.")
@PostMapping("/getPcsVoltageStepUpList") @PostMapping("/getPcsVoltageStepUpList")
public ApiResponse<ApiPcsVoltageStepUpResponse> getPcsVoltageStepUpList( public ApiResponse<ApiPcsVoltageStepUpResponse> getPcsVoltageStepUpList(
@RequestBody ApiPcsInfoRequest pcsVoltageStepUpRequest) { HttpServletRequest request, @RequestBody ApiPcsInfoRequest pcsVoltageStepUpRequest) {
return masterService.getPcsVoltageStepUpList(pcsVoltageStepUpRequest); return masterService.getPcsVoltageStepUpList(
request.getHeader("Referer"), pcsVoltageStepUpRequest);
} }
@Operation(description = "PCS 수동회로 확정 체크한다.") @Operation(description = "PCS 수동회로 확정 체크한다.")
@PostMapping("/getPcsMenualConfChk") @PostMapping("/getPcsMenualConfChk")
public ApiResultResponse getPcsMenualConfChk( public ApiResultResponse getPcsMenualConfChk(
@RequestBody ApiPcsMenualConfRequest pcsMenualConfChkRequest) { HttpServletRequest request, @RequestBody ApiPcsMenualConfRequest pcsMenualConfChkRequest) {
return masterService.getPcsMenualConfChk(pcsMenualConfChkRequest).getResult(); return masterService
.getPcsMenualConfChk(request.getHeader("Referer"), pcsMenualConfChkRequest)
.getResult();
} }
@Operation(description = "PCS 접속함 및 옵션 목록을 조회한다.") @Operation(description = "PCS 접속함 및 옵션 목록을 조회한다.")
@PostMapping("/getPcsConnOptionItemList") @PostMapping("/getPcsConnOptionItemList")
public ApiResponse<ApiPcsConnOptionResponse> getPcsConnOptionItemList( public ApiResponse<ApiPcsConnOptionResponse> getPcsConnOptionItemList(
@RequestBody ApiPcsConnOptionRequest pcsConnOptionRequest) { HttpServletRequest request, @RequestBody ApiPcsConnOptionRequest pcsConnOptionRequest) {
return masterService.getPcsConnOptionItemList(pcsConnOptionRequest); return masterService.getPcsConnOptionItemList(
request.getHeader("Referer"), pcsConnOptionRequest);
} }
/** remote api group : quotation */ /** remote api group : quotation */
@Operation(description = "견적서 아이템을 조회한다.") @Operation(description = "견적서 아이템을 조회한다.")
@PostMapping("/getQuotationItem") @PostMapping("/getQuotationItem")
public ApiResponse<List<ApiQuotationItemResponse>> getQuotationItem( public ApiResponse<List<ApiQuotationItemResponse>> getQuotationItem(
@RequestBody ApiQuotationItemRequest quotationItemRequest) { HttpServletRequest request, @RequestBody ApiQuotationItemRequest quotationItemRequest) {
return quotationService.getQuotationItem(quotationItemRequest); return quotationService.getQuotationItem(request.getHeader("Referer"), quotationItemRequest);
} }
} }

View File

@ -21,6 +21,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
// @FeignClient(name = "master", url = "${feign.master.url}") // @FeignClient(name = "master", url = "${feign.master.url}")
@ -29,16 +30,19 @@ public interface MasterService {
// 지붕재 목록 조회 // 지붕재 목록 조회
@GetMapping("/roofMaterialList") @GetMapping("/roofMaterialList")
public ApiResponse<List<ApiRoofMaterialResponse>> getRoofMaterialList(); public ApiResponse<List<ApiRoofMaterialResponse>> getRoofMaterialList(
@RequestHeader("Referer") String referer);
// 모듈 타입별 아이템 목록 조회 // 모듈 타입별 아이템 목록 조회
@GetMapping("/moduleTypeItemList") @GetMapping("/moduleTypeItemList")
public ApiResponse<List<ApiModuleTpResponse>> getModuleTypeItemList( public ApiResponse<List<ApiModuleTpResponse>> getModuleTypeItemList(
@RequestHeader("Referer") String referer,
@RequestParam("arrRoofMatlCd") List<String> roofMaterialCd); @RequestParam("arrRoofMatlCd") List<String> roofMaterialCd);
// 가대 목록 조회 // 가대 목록 조회
@GetMapping("/trestle") @GetMapping("/trestle")
public ApiResponse<List<ApiTrestleResponse>> getTrestleList( public ApiResponse<List<ApiTrestleResponse>> getTrestleList(
@RequestHeader("Referer") String referer,
@RequestParam(required = false) String moduleTpCd, @RequestParam(required = false) String moduleTpCd,
@RequestParam(required = false) String roofMatlCd, @RequestParam(required = false) String roofMatlCd,
@RequestParam(required = false) String raftBaseCd, @RequestParam(required = false) String raftBaseCd,
@ -49,6 +53,7 @@ public interface MasterService {
// 시공법 목록 조회 // 시공법 목록 조회
@GetMapping("/construction") @GetMapping("/construction")
public ApiResponse<List<ApiConstructionResponse>> getConstructionList( public ApiResponse<List<ApiConstructionResponse>> getConstructionList(
@RequestHeader("Referer") String referer,
@RequestParam String moduleTpCd, @RequestParam String moduleTpCd,
@RequestParam String roofMatlCd, @RequestParam String roofMatlCd,
@RequestParam String trestleMkrCd, @RequestParam String trestleMkrCd,
@ -65,6 +70,7 @@ public interface MasterService {
// 가대 상세 조회 // 가대 상세 조회
@GetMapping(value = "/trestle/detail", consumes = "application/json") @GetMapping(value = "/trestle/detail", consumes = "application/json")
public ApiResponse<ApiTrestleDetailResponse> getTrestleDetailList( public ApiResponse<ApiTrestleDetailResponse> getTrestleDetailList(
@RequestHeader("Referer") String referer,
@RequestParam String moduleTpCd, @RequestParam String moduleTpCd,
@RequestParam String roofMatlCd, @RequestParam String roofMatlCd,
@RequestParam String trestleMkrCd, @RequestParam String trestleMkrCd,
@ -83,34 +89,37 @@ public interface MasterService {
// PCS Maker, 시리즈 목록 조회 // PCS Maker, 시리즈 목록 조회
@GetMapping("/pcsMakerList") @GetMapping("/pcsMakerList")
public ApiResponse<List<ApiPcsMakerResponse>> getPcsMakerList( public ApiResponse<List<ApiPcsMakerResponse>> getPcsMakerList(
@RequestHeader("Referer") String referer,
@RequestParam(required = false) String pcsMkrCd, @RequestParam(required = false) String pcsMkrCd,
@RequestParam(required = false) String mixMatlNo); @RequestParam(required = false) String mixMatlNo);
// PCS 시리즈 아이템 목록 조회 // PCS 시리즈 아이템 목록 조회
@PostMapping("/pcsSeriesItemList") @PostMapping("/pcsSeriesItemList")
public ApiResponse<List<ApiPcsSeriesItemResponse>> getPcsSeriesItemList( public ApiResponse<List<ApiPcsSeriesItemResponse>> getPcsSeriesItemList(
@RequestBody ApiPcsSeriesItemRequest req); @RequestHeader("Referer") String referer, @RequestBody ApiPcsSeriesItemRequest req);
// 시리즈 자동으로 추천 PCS 정보 조회 // 시리즈 자동으로 추천 PCS 정보 조회
@PostMapping("/pcsAutoRecommendList") @PostMapping("/pcsAutoRecommendList")
public ApiResponse<ApiPcsAutoRecommendResponse> getPcsAutoRecommendList( public ApiResponse<ApiPcsAutoRecommendResponse> getPcsAutoRecommendList(
@RequestBody ApiPcsInfoRequest req); @RequestHeader("Referer") String referer, @RequestBody ApiPcsInfoRequest req);
// 배치된 모듈을 선택한 PCS로 회로 구성 가능 여부 체크 // 배치된 모듈을 선택한 PCS로 회로 구성 가능 여부 체크
@PostMapping("/pcsVoltageChk") @PostMapping("/pcsVoltageChk")
public ApiResponse<JsonNode> getPcsVoltageChk(@RequestBody ApiPcsInfoRequest req); public ApiResponse<JsonNode> getPcsVoltageChk(
@RequestHeader("Referer") String referer, @RequestBody ApiPcsInfoRequest req);
// PCS 승압설정 정보 조회 // PCS 승압설정 정보 조회
@PostMapping("/pcsVoltageStepUpList") @PostMapping("/pcsVoltageStepUpList")
public ApiResponse<ApiPcsVoltageStepUpResponse> getPcsVoltageStepUpList( public ApiResponse<ApiPcsVoltageStepUpResponse> getPcsVoltageStepUpList(
@RequestBody ApiPcsInfoRequest req); @RequestHeader("Referer") String referer, @RequestBody ApiPcsInfoRequest req);
// PCS 수동회로 확정 체크 // PCS 수동회로 확정 체크
@PostMapping("/pcsMenualConfChk") @PostMapping("/pcsMenualConfChk")
public ApiResponse<JsonNode> getPcsMenualConfChk(@RequestBody ApiPcsMenualConfRequest req); public ApiResponse<JsonNode> getPcsMenualConfChk(
@RequestHeader("Referer") String referer, @RequestBody ApiPcsMenualConfRequest req);
// PCS 접속함 옵션 목록 조회 // PCS 접속함 옵션 목록 조회
@PostMapping("/pcsConnOptionItemList") @PostMapping("/pcsConnOptionItemList")
public ApiResponse<ApiPcsConnOptionResponse> getPcsConnOptionItemList( public ApiResponse<ApiPcsConnOptionResponse> getPcsConnOptionItemList(
@RequestBody ApiPcsConnOptionRequest req); @RequestHeader("Referer") String referer, @RequestBody ApiPcsConnOptionRequest req);
} }

View File

@ -7,6 +7,7 @@ import java.util.List;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
@FeignClient(name = "quotation", url = "${qsp.url}/api/quotation") @FeignClient(name = "quotation", url = "${qsp.url}/api/quotation")
public interface QuotationService { public interface QuotationService {
@ -14,5 +15,5 @@ public interface QuotationService {
// 견적서 아이템 조회 // 견적서 아이템 조회
@PostMapping("/item") @PostMapping("/item")
public ApiResponse<List<ApiQuotationItemResponse>> getQuotationItem( public ApiResponse<List<ApiQuotationItemResponse>> getQuotationItem(
@RequestBody ApiQuotationItemRequest req); @RequestHeader("Referer") String referer, @RequestBody ApiQuotationItemRequest req);
} }

View File

@ -43,4 +43,7 @@ public class ApiModuleTpItemResponse {
@Schema(description = "MIX배치 여부") @Schema(description = "MIX배치 여부")
private String mixAsgYn; private String mixAsgYn;
@Schema(description = "북면설치 여부")
private String northModuleYn;
} }

View File

@ -1,8 +1,8 @@
package com.interplug.qcast.biz.master.dto.quotation; package com.interplug.qcast.biz.master.dto.quotation;
import java.util.List;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.List;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -22,4 +22,7 @@ public class ApiQuotationItemRequest {
@Schema(description = "PCS 목록") @Schema(description = "PCS 목록")
@NotNull @NotNull
public List<ApiQuotationItemPcsRequest> pcses; public List<ApiQuotationItemPcsRequest> pcses;
@Schema(description = "양단 케이블 갯수")
public Integer dblCblTotCnt = 0;
} }

View File

@ -14,4 +14,7 @@ public class ApiQuotationItemResponse {
@Schema(description = "수량") @Schema(description = "수량")
public Integer amount; public Integer amount;
@Schema(description = "아이템 타입 코드")
public String itemTpCd;
} }

View File

@ -170,4 +170,7 @@ public class ObjectRequest {
@Schema(description = "종료 Row") @Schema(description = "종료 Row")
private String endRow; private String endRow;
@Schema(description = "시공사 번호")
private String builderNo;
} }

View File

@ -26,6 +26,9 @@ public class InterfaceQsp {
@Value("${qsp.url}") @Value("${qsp.url}")
private String qspUrl; private String qspUrl;
@Value("${front.url}")
private String frontUrl;
/** /**
* API Call * API Call
* *
@ -63,6 +66,7 @@ public class InterfaceQsp {
con.setReadTimeout(120000); // InputStream 읽어 오는 Timeout 시간 설정 con.setReadTimeout(120000); // InputStream 읽어 오는 Timeout 시간 설정
con.setRequestMethod(httpMethod.toString()); con.setRequestMethod(httpMethod.toString());
con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Referer", frontUrl);
con.setDoInput(true); con.setDoInput(true);
con.setUseCaches(false); con.setUseCaches(false);
con.setDefaultUseCaches(false); con.setDefaultUseCaches(false);
@ -170,6 +174,7 @@ public class InterfaceQsp {
con.setReadTimeout(30000); // InputStream 읽어 오는 Timeout 시간 설정 con.setReadTimeout(30000); // InputStream 읽어 오는 Timeout 시간 설정
con.setRequestMethod(httpMethod.toString()); con.setRequestMethod(httpMethod.toString());
con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Referer", frontUrl);
con.setDoInput(true); con.setDoInput(true);
con.setUseCaches(false); con.setUseCaches(false);
con.setDefaultUseCaches(false); con.setDefaultUseCaches(false);

View File

@ -58,4 +58,7 @@ file:
root.path: /home/development/public/files root.path: /home/development/public/files
ini.root.path: /home/development/public/files/NewEstimate ini.root.path: /home/development/public/files/NewEstimate
ini.base.filename: 料金シミュレーション.ini ini.base.filename: 料金シミュレーション.ini
ini.drawing.img.path: /home/development/public/files/NewEstimate/Drawing ini.drawing.img.path: /home/development/public/files/NewEstimate/Drawing
front:
url: http://1.248.227.176:3000

View File

@ -58,4 +58,7 @@ file:
root.path: C:\\ root.path: C:\\
ini.root.path: C:\\NewEstimate ini.root.path: C:\\NewEstimate
ini.base.filename: 料金シミュレーション.ini ini.base.filename: 料金シミュレーション.ini
ini.drawing.img.path: C:\\NewEstimate\Drawing ini.drawing.img.path: C:\\NewEstimate\Drawing
front:
url: http://localhost:8080

View File

@ -58,4 +58,7 @@ file:
root.path: /home/production/public/files root.path: /home/production/public/files
ini.root.path: /home/production/public/files/NewEstimate ini.root.path: /home/production/public/files/NewEstimate
ini.base.filename: 料金シミュレーション.ini ini.base.filename: 料金シミュレーション.ini
ini.drawing.img.path: /home/production/public/files/NewEstimate/Drawing ini.drawing.img.path: /home/production/public/files/NewEstimate/Drawing
front:
url: https://hanasys.jp

View File

@ -56,6 +56,7 @@
, PI.SYNC_FLG , PI.SYNC_FLG
, PI.CREATE_DATETIME , PI.CREATE_DATETIME
, PI.CREATE_USER , PI.CREATE_USER
, PI.SEC_SAP_SALES_STORE_CD
, O.OBJECT_NAME , O.OBJECT_NAME
, O.OBJECT_NAME_OMIT , O.OBJECT_NAME_OMIT
, O.REMARKS AS OBJECT_REMARKS , O.REMARKS AS OBJECT_REMARKS
@ -175,7 +176,7 @@
, P.CONSTRUCT_SPECIFICATION , P.CONSTRUCT_SPECIFICATION
, P.NORTH_ARRANGEMENT , P.NORTH_ARRANGEMENT
, PI.ESTIMATE_TYPE , PI.ESTIMATE_TYPE
, P.PKG_ASP , PI.PKG_ASP
, P.DEL_FLG , P.DEL_FLG
, CONVERT(NVARCHAR(10), PI.CREATE_DATETIME, 121) AS ESTIMATE_DETAIL_CREATE_DATE , CONVERT(NVARCHAR(10), PI.CREATE_DATETIME, 121) AS ESTIMATE_DETAIL_CREATE_DATE
, P.LAST_EDIT_DATETIME , P.LAST_EDIT_DATETIME
@ -191,7 +192,7 @@
ON O.OBJECT_NO = OI.OBJECT_NO ON O.OBJECT_NO = OI.OBJECT_NO
INNER JOIN M_SALES_STORE SS WITH(NOLOCK) INNER JOIN M_SALES_STORE SS WITH(NOLOCK)
ON O.SALE_STORE_ID = SS.SALE_STORE_ID ON O.SALE_STORE_ID = SS.SALE_STORE_ID
WHERE P.SYNC_FLG = '0' WHERE PI.SYNC_FLG = '0'
AND OI.SOURCE_ORIGIN = 'QCAST_III' AND OI.SOURCE_ORIGIN = 'QCAST_III'
AND OI.ORG_DEL_FLG = '0' AND OI.ORG_DEL_FLG = '0'
</select> </select>
@ -282,6 +283,7 @@
, PEI.OPEN_FLG , PEI.OPEN_FLG
, PEI.ITEM_CHANGE_FLG , PEI.ITEM_CHANGE_FLG
, PEI.DISP_CABLE_FLG , PEI.DISP_CABLE_FLG
, PEI.ITEM_TP_CD
, I.PNOW_W , I.PNOW_W
, CASE WHEN I.POWER_COM_FLG = '1' THEN 'PC_' , CASE WHEN I.POWER_COM_FLG = '1' THEN 'PC_'
WHEN I.ITEM_GROUP = 'PC_' AND I.POWER_COM_FLG = '0' THEN 'STORAGE_BATTERY' WHEN I.ITEM_GROUP = 'PC_' AND I.POWER_COM_FLG = '0' THEN 'STORAGE_BATTERY'
@ -679,6 +681,7 @@
UPDATE T_PLAN_INFO UPDATE T_PLAN_INFO
SET SET
ESTIMATE_TYPE = #{estimateType} ESTIMATE_TYPE = #{estimateType}
, SEC_SAP_SALES_STORE_CD = #{secSapSalesStoreCd}
<choose> <choose>
<when test='drawingFlg != null and drawingFlg == "1"'> <when test='drawingFlg != null and drawingFlg == "1"'>
, CONSTRUCT_SPECIFICATION_MULTI = #{constructSpecificationMulti} , CONSTRUCT_SPECIFICATION_MULTI = #{constructSpecificationMulti}
@ -731,6 +734,7 @@
, PKG_ASP = NULL , PKG_ASP = NULL
, PRICE_CD = #{priceCd} , PRICE_CD = #{priceCd}
, TEMP_FLG = CASE WHEN TEMP_FLG = '0' THEN '0' ELSE #{tempFlg} END , TEMP_FLG = CASE WHEN TEMP_FLG = '0' THEN '0' ELSE #{tempFlg} END
, SEC_SAP_SALES_STORE_CD = #{secSapSalesStoreCd}
WHERE OBJECT_NO = #{objectNo} WHERE OBJECT_NO = #{objectNo}
AND PLAN_NO = #{planNo} AND PLAN_NO = #{planNo}
</update> </update>
@ -835,6 +839,7 @@
, OPEN_FLG , OPEN_FLG
, ITEM_CHANGE_FLG , ITEM_CHANGE_FLG
, DISP_CABLE_FLG , DISP_CABLE_FLG
, ITEM_TP_CD
) VALUES ( ) VALUES (
#{objectNo} #{objectNo}
, #{planNo} , #{planNo}
@ -853,6 +858,7 @@
, #{openFlg} , #{openFlg}
, #{itemChangeFlg} , #{itemChangeFlg}
, #{dispCableFlg} , #{dispCableFlg}
, #{itemTpCd}
) )
</insert> </insert>
@ -1167,6 +1173,7 @@
, SYNC_FLG , SYNC_FLG
, CREATE_DATETIME , CREATE_DATETIME
, CREATE_USER , CREATE_USER
, SEC_SAP_SALES_STORE_CD
) )
SELECT SELECT
#{copyObjectNo} AS OBJECT_NO #{copyObjectNo} AS OBJECT_NO
@ -1187,6 +1194,7 @@
, '0' AS SYNC_FLG , '0' AS SYNC_FLG
, GETDATE() AS CREATE_DATETIME , GETDATE() AS CREATE_DATETIME
, #{userId} AS CREATE_USER , #{userId} AS CREATE_USER
, PI.SEC_SAP_SALES_STORE_CD
FROM T_PLAN_INFO PI WITH (NOLOCK) FROM T_PLAN_INFO PI WITH (NOLOCK)
WHERE PI.OBJECT_NO = #{objectNo} WHERE PI.OBJECT_NO = #{objectNo}
AND PI.PLAN_NO = #{planNo} AND PI.PLAN_NO = #{planNo}

View File

@ -183,6 +183,9 @@
FROM T_OBJECT O WITH (NOLOCK) FROM T_OBJECT O WITH (NOLOCK)
INNER JOIN T_OBJECT_INFO OI WITH (NOLOCK) INNER JOIN T_OBJECT_INFO OI WITH (NOLOCK)
ON O.OBJECT_NO = OI.OBJECT_NO ON O.OBJECT_NO = OI.OBJECT_NO
<if test='builderNo != null and builderNo != ""'>
AND OI.CREATE_USER = #{userId}
</if>
INNER JOIN M_SALES_STORE S WITH (NOLOCK) INNER JOIN M_SALES_STORE S WITH (NOLOCK)
ON O.SALE_STORE_ID = S.SALE_STORE_ID ON O.SALE_STORE_ID = S.SALE_STORE_ID
<if test='saleStoreId != null and saleStoreId != "T01"'> <if test='saleStoreId != null and saleStoreId != "T01"'>
@ -274,6 +277,9 @@
FROM T_OBJECT O WITH (NOLOCK) FROM T_OBJECT O WITH (NOLOCK)
INNER JOIN T_OBJECT_INFO OI WITH (NOLOCK) INNER JOIN T_OBJECT_INFO OI WITH (NOLOCK)
ON O.OBJECT_NO = OI.OBJECT_NO ON O.OBJECT_NO = OI.OBJECT_NO
<if test='builderNo != null and builderNo != ""'>
AND OI.CREATE_USER = #{userId}
</if>
INNER JOIN M_SALES_STORE S WITH (NOLOCK) INNER JOIN M_SALES_STORE S WITH (NOLOCK)
ON O.SALE_STORE_ID = S.SALE_STORE_ID ON O.SALE_STORE_ID = S.SALE_STORE_ID
<if test='(saleStoreId != null and saleStoreId != "T01") or (schSelSaleStoreId != null and schSelSaleStoreId != "")'> <if test='(saleStoreId != null and saleStoreId != "T01") or (schSelSaleStoreId != null and schSelSaleStoreId != "")'>