Merge branch 'dev' into feature/qcast-231

This commit is contained in:
DESKTOP-6ARNG1Q\dlsgk 2025-01-09 17:03:08 +09:00
commit 1a98b4c18a
12 changed files with 418 additions and 364 deletions

View File

@ -823,7 +823,6 @@ public class EstimateService {
itemRequest.setSpecification(roofItemResponse.getSpecification());
itemRequest.setAmount(roofItemResponse.getAmount());
itemRequest.setPcItemId(roofItemResponse.getPcItemId());
itemRequest.setCircuit(roofItemResponse.getCircuit());
estimateMapper.insertEstimateRoofItem(itemRequest);
}
@ -1342,10 +1341,15 @@ public class EstimateService {
elm.text(StringUtils.defaultString(data.getObjectName()));
elm = doc.getElementById("objectNo1");
elm.text(StringUtils.defaultString(data.getObjectNo()));
elm.text(
StringUtils.defaultString(data.getObjectNo())
+ " / "
+ StringUtils.defaultString(data.getPlanNo()));
/*
elm = doc.getElementById("planNo");
elm.text(StringUtils.defaultString(data.getPlanNo()));
*/
elm = doc.getElementById("estimateDate");
elm.text(StringUtils.defaultString(data.getEstimateDate()));
@ -1432,8 +1436,13 @@ public class EstimateService {
elm = doc.getElementById("totPrice1");
elm.text(StringUtils.defaultString(data.getTotPrice()));
elm = doc.getElementById("remarks");
elm.text(StringUtils.defaultString(data.getRemarks()));
if (!StringUtils.isEmpty(data.getRemarks())) {
elm = doc.getElementById("remarks");
elm.text(StringUtils.defaultString(data.getRemarks()));
} else {
elm = doc.getElementById("remarks");
elm.remove();
}
// 견적서 특이사항 목록 설정
if (data.getNoteList() != null) {

View File

@ -1,138 +1,52 @@
package com.interplug.qcast.biz.master;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
@Schema(description = "Api 가대 상세 조회 요청 객체 빌더")
public class ApiTrestleDetailBuilder {
@Schema(description = "모듈타입코드")
private String moduleTpCd;
@Schema(description = "모듈타입코드")
private String moduleTpCd;
@Schema(description = "지붕재코드")
private String roofMatlCd;
@Schema(description = "지붕재코드")
private String roofMatlCd;
@Schema(description = "가대메이커코드")
private String trestleMkrCd;
@Schema(description = "가대메이커코드")
private String trestleMkrCd;
@Schema(description = "공법코드")
private String constMthdCd;
@Schema(description = "공법코드")
private String constMthdCd;
@Schema(description = "지붕기초코드")
private String roofBaseCd;
@Schema(description = "지붕기초코드")
private String roofBaseCd;
@Schema(description = "면조도")
private String illuminationTp;
@Schema(description = "면조도")
private String illuminationTp;
@Schema(description = "설치높이")
private String instHt;
@Schema(description = "설치높이")
private String instHt;
@Schema(description = "풍속")
private String stdWindSpeed;
@Schema(description = "풍속")
private String stdWindSpeed;
@Schema(description = "적설량")
private String stdSnowLd;
@Schema(description = "적설량")
private String stdSnowLd;
@Schema(description = "경사도코드")
private String inclCd;
@Schema(description = "시공법")
private String constTp;
@Schema(description = "혼합모듈번호")
private Integer mixMatlNo;
@Schema(description = "하제(망둥어)피치")
private Integer roofPitch;
@Schema(description = "경사도코드")
private String inclCd;
public ApiTrestleDetailBuilder setModuleTpCd(String moduleTpCd){
this.moduleTpCd = moduleTpCd;
return this;
}
public ApiTrestleDetailBuilder setRoofMatlCd(String roofMatlCd){
this.roofMatlCd = roofMatlCd;
return this;
}
public ApiTrestleDetailBuilder setTrestleMkrCd(String trestleMkrCd){
this.trestleMkrCd = trestleMkrCd;
return this;
}
public ApiTrestleDetailBuilder setConstMthdCd(String constMthdCd){
this.constMthdCd = constMthdCd;
return this;
}
public ApiTrestleDetailBuilder setRoofBaseCd(String roofBaseCd){
this.roofBaseCd = roofBaseCd;
return this;
}
public ApiTrestleDetailBuilder setIlluminationTp(String illuminationTp){
this.illuminationTp = illuminationTp;
return this;
}
public ApiTrestleDetailBuilder setInstHt(String instHt){
this.instHt = instHt;
return this;
}
public ApiTrestleDetailBuilder setStdWindSpeed(String stdWindSpeed){
this.stdWindSpeed = stdWindSpeed;
return this;
}
public ApiTrestleDetailBuilder setStdSnowLd(String stdSnowLd){
this.stdSnowLd = stdSnowLd;
return this;
}
public ApiTrestleDetailBuilder setInclCd(String inclCd){
this.inclCd = inclCd;
return this;
}
public ApiTrestleDetailBuilder setConstTp(String constTp){
this.constTp = constTp;
return this;
}
public ApiTrestleDetailBuilder setMixMatlNo(int mixMatlNo){
this.mixMatlNo = mixMatlNo;
return this;
}
public ApiTrestleDetailBuilder setRoofPitch(int roofPitch){
this.roofPitch = roofPitch;
return this;
}
public ApiTrestleDetailBuilder (String moduleTpCd, String roofMatlCd, String trestleMkrCd, String constMthdCd, String roofBaseCd, String illuminationTp,
String instHt, String stdWindSpeed, String stdSnowLd, String inclCd, String constTp, Integer mixMatlNo, Integer roofPitch) {
this.moduleTpCd = moduleTpCd;
this.roofMatlCd = roofMatlCd;
this.trestleMkrCd = trestleMkrCd;
this.constMthdCd = constMthdCd;
this.roofBaseCd = roofBaseCd;
this.illuminationTp = illuminationTp;
this.instHt = instHt;
this.stdWindSpeed = stdWindSpeed;
this.stdSnowLd = stdSnowLd;
this.inclCd = inclCd;
this.constTp = constTp;
this.mixMatlNo = mixMatlNo;
this.roofPitch = roofPitch;
}
public ApiTrestleDetailBuilder build(){
return new ApiTrestleDetailBuilder(moduleTpCd, roofMatlCd, trestleMkrCd, constMthdCd, roofBaseCd, illuminationTp,
instHt, stdWindSpeed, stdSnowLd, inclCd, constTp, mixMatlNo, roofPitch);
}
}
@Schema(description = "시공법")
private String constTp;
@Schema(description = "혼합모듈번호")
private Integer mixMatlNo;
@Schema(description = "하제(망둥어)피치")
private Integer roofPitch;
}

View File

@ -49,125 +49,192 @@ public class MasterController {
@Operation(description = "가대 목록 조회한다.")
@GetMapping("/getTrestleList")
public ApiResponse<ApiTrestleResponse> 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());
@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<ApiConstructionResponse> 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);
}
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());
@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);
}
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<ApiTrestleDetailResponse> 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 apiTrestleDetailBuilder = new ApiTrestleDetailBuilder(moduleTpCd, roofMatlCd, trestleMkrCd, constMthdCd, roofBaseCd, illuminationTp
, instHt, stdWindSpeed, stdSnowLd, inclCd, constTp, mixMatlNo, roofPitch);
ApiTrestleDetailBuilder atdb = apiTrestleDetailBuilder
.setModuleTpCd(moduleTpCd)
.setRoofMatlCd(roofMatlCd)
.setTrestleMkrCd(trestleMkrCd)
.setConstMthdCd(constMthdCd)
.setRoofBaseCd(roofBaseCd)
.setIlluminationTp(illuminationTp)
.setInstHt(instHt)
.setStdWindSpeed(stdWindSpeed)
.setStdSnowLd(stdSnowLd)
.setInclCd(inclCd)
.setConstTp(constTp)
.setMixMatlNo(mixMatlNo)
.setRoofPitch(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());
@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());
}
}

View File

@ -27,44 +27,43 @@ public interface MasterService {
// 가대 목록 조회
@GetMapping("/trestle")
public ApiResponse<ApiTrestleResponse> getTrestleList(
@RequestParam(required = false) String moduleTpCd,
@RequestParam(required = false) String roofMatlCd,
@RequestParam(required = false) String raftBaseCd,
@RequestParam(required = false) String trestleMkrCd,
@RequestParam(required = false) String constMthdCd,
@RequestParam(required = false) String roofBaseCd);
@RequestParam(required = false) String moduleTpCd,
@RequestParam(required = false) String roofMatlCd,
@RequestParam(required = false) String raftBaseCd,
@RequestParam(required = false) String trestleMkrCd,
@RequestParam(required = false) String constMthdCd,
@RequestParam(required = false) String roofBaseCd);
// 시공법 목록 조회
@GetMapping("/construction")
@GetMapping("/construction")
public ApiResponse<ApiConstructionResponse> getConstructionList(
@RequestParam String moduleTpCd,
@RequestParam String roofMatlCd,
@RequestParam String trestleMkrCd,
@RequestParam String constMthdCd,
@RequestParam String roofBaseCd,
@RequestParam String illuminationTp,
@RequestParam String instHt,
@RequestParam String stdWindSpeed,
@RequestParam String stdSnowLd,
@RequestParam String inclCd,
@RequestParam(required = false) String raftBaseCd,
@RequestParam(required = false) Integer roofPitch);
// 가대 상세 조회
@GetMapping("/trestle/detail")
public ApiResponse<ApiTrestleDetailResponse> getTrestleDetailList(
@RequestParam String moduleTpCd,
@RequestParam String roofMatlCd,
@RequestParam String trestleMkrCd,
@RequestParam String constMthdCd,
@RequestParam String roofBaseCd,
@RequestParam String illuminationTp,
@RequestParam String instHt,
@RequestParam String stdWindSpeed,
@RequestParam String stdSnowLd,
@RequestParam String inclCd,
@RequestParam String constTp,
@RequestParam(required = false) Integer mixMatlNo,
@RequestParam(required = false) Integer roofPitch);
@RequestParam String moduleTpCd,
@RequestParam String roofMatlCd,
@RequestParam String trestleMkrCd,
@RequestParam String constMthdCd,
@RequestParam String roofBaseCd,
@RequestParam String illuminationTp,
@RequestParam String instHt,
@RequestParam String stdWindSpeed,
@RequestParam String stdSnowLd,
@RequestParam String inclCd,
@RequestParam(required = false) String raftBaseCd,
@RequestParam(required = false) Integer roofPitch);
// 가대 상세 조회
@GetMapping(value = "/trestle/detail", consumes = "application/json")
public ApiResponse<ApiTrestleDetailResponse> getTrestleDetailList(
@RequestParam String moduleTpCd,
@RequestParam String roofMatlCd,
@RequestParam String trestleMkrCd,
@RequestParam String constMthdCd,
@RequestParam String roofBaseCd,
@RequestParam String illuminationTp,
@RequestParam String instHt,
@RequestParam String stdWindSpeed,
@RequestParam String stdSnowLd,
@RequestParam String inclCd,
@RequestParam String constTp,
@RequestParam(required = false) Integer mixMatlNo,
@RequestParam(required = false) Integer roofPitch);
}

View File

@ -1,8 +1,7 @@
package com.interplug.qcast.biz.master.dto;
import java.util.List;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
@ -10,13 +9,13 @@ import lombok.Setter;
@Setter
@Schema(description = "결과 데이터")
public class ApiResponse<T> {
@Schema(description = "목록 데이터")
private List<T> data;
@Schema(description = "목록 데이터2")
private List<T> data2;
@Schema(description = "API 결과 데이터")
private ApiResultResponse result;
@Schema(description = "목록 데이터")
private List<T> data;
@Schema(description = "목록 데이터2")
private List<T> data2;
@Schema(description = "API 결과 데이터")
private ApiResultResponse result;
}

View File

@ -9,25 +9,21 @@ import lombok.Setter;
@Schema(description = "Api 가대 상세 모듈 조회 응답 객체")
public class ApiTrestleDetailModuleResponse {
@Schema(description = "모듈타입코드(혼합제외)")
private String moduleTpCd;
@Schema(description = "모듈타입코드(혼합제외)")
private String moduleTpCd;
@Schema(description = "장경")
private double longAxis;
@Schema(description = "장경")
private Double longAxis;
@Schema(description = "단경")
private double shortAxis;
@Schema(description = "단경")
private Double shortAxis;
@Schema(description = "두께")
private double thickness;
@Schema(description = "두께")
private Double thickness;
@Schema(description = "색상")
private String color;
@Schema(description = "모듈최대단수")
private Integer moduleMaxRows;
@Schema(description = "순번")
private Integer priority;
@Schema(description = "색상")
private String color;
@Schema(description = "모듈최대단수")
private Integer moduleMaxRows;
}

View File

@ -0,0 +1,35 @@
package com.interplug.qcast.biz.master.dto;
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 = "Api 가대 상세 랙 아이템 응답 객체")
public class ApiTrestleDetailRackItemResponse {
@Schema(description = "아이템ID")
private String itemId;
@Schema(description = "랙단수코드")
private String rackRowsCd;
@Schema(description = "랙길이")
private Double rackLen;
@Schema(description = "스마트랙여부")
private String smartRackYn;
@Schema(description = "랙지지금구수")
private Integer supFitQty;
@Schema(description = "랙지지금구간격(랙양끝기준)")
private Double supFitIntvlPct;
@Schema(description = "Api 가대 상세 스마트랙 응답 객체")
private List<ApiTrestleDetailSmartRackResponse> smartRack;
}

View File

@ -1,21 +1,38 @@
package com.interplug.qcast.biz.master.dto;
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 = "Api 가대 상세 랙 조회 응답 객체")
public class ApiTrestleDetailRackResponse {
@Schema(description = "모듈총단수")
private Integer moduleRows;
@Schema(description = "모듈타입코드")
private String moduleTpCd;
@Schema(description = "랙단수코드")
private String rackRowsCds;
@Schema(description = "모듈총단수")
private Integer moduleRows;
@Schema(description = "간격")
private String intvls;
@Schema(description = "모듈1단수")
private String moduleTpRows1; // private Integer moduleTpRows1;
@Schema(description = "모듈2단수")
private String moduleTpRows2; // private Integer moduleTpRows2;
@Schema(description = "모듈3단수")
private String moduleTpRows3; // private Integer moduleTpRows3;
@Schema(description = "모듈4단수")
private String moduleTpRows4; // private Integer moduleTpRows4;
@Schema(description = "모듈5단수")
private String moduleTpRows5; // private Integer moduleTpRows5;
@Schema(description = "랙목록")
private List<ApiTrestleDetailRackItemResponse> racks;
}

View File

@ -1,62 +1,66 @@
package com.interplug.qcast.biz.master.dto;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
@Schema(description = "Api 가대 상세 조회 응답 객체")
public class ApiTrestleDetailResponse {
@Schema(description = "랙여부")
private String rackYn;
@Schema(description = "치조가능여부")
private String plvrYn;
@Schema(description = "랙여부")
private String rackYn;
@Schema(description = "모듈최대단수")
private Integer moduleMaxRows;
@Schema(description = "치조가능여부")
private String plvrYn;
@Schema(description = "모듈최대")
private Integer moduleMaxCols;
@Schema(description = "모듈최대")
private Integer moduleMaxRows;
@Schema(description = "지붕기준모듈설치간격-처마")
private double eaveIntvl;
@Schema(description = "모듈최대열수")
private Integer moduleMaxCols;
@Schema(description = "지붕기준모듈설치간격-용마루")
private double ridgeIntvl;
@Schema(description = "지붕기준모듈설치간격-처마")
private Double eaveIntvl;
@Schema(description = "지붕기준모듈설치간격-케라바")
private double kerabaIntvl;
@Schema(description = "지붕기준모듈설치간격-용마루")
private Double ridgeIntvl;
@Schema(description = "모듈간간격-좌우")
private double moduleIntvlHor;
@Schema(description = "지붕기준모듈설치간격-케라바")
private Double kerabaIntvl;
@Schema(description = "모듈간간격-상하")
private double moduleIntvlVer;
@Schema(description = "모듈간간격-좌우")
private Double moduleIntvlHor;
@Schema(description = "치조배치 중단처마커버 설치가능여부")
private String cvrPlvrYn;
@Schema(description = "모듈간간격-상하")
private Double moduleIntvlVer;
@Schema(description = "랙리스지지금구수")
private double lessSupFitQty;
@Schema(description = "치조배치 중단처마커버 설치가능여부")
private String cvrPlvrYn;
@Schema(description = "랙리스지지금구간격(모듈모서리기준)")
private double lessSupFitIntvlPct;
@Schema(description = "랙리스지지금구")
private Double lessSupFitQty;
@Schema(description = "랙구성수량(모듈1개당)")
private double rackQty;
@Schema(description = "랙리스지지금구간격(모듈모서리기준)")
private Double lessSupFitIntvlPct;
@Schema(description = "랙구성간격(모듈좌우면기준)")
private double rackIntvlPct;
@Schema(description = "랙구성수량(모듈1개당)")
private Double rackQty;
@Schema(description = "Api 가대 상세 모듈 조회 응답 객체")
private List<ApiTrestleDetailModuleResponse> module;
@Schema(description = "랙구성간격(모듈좌우면기준)")
private Double rackIntvlPct;
@Schema(description = "Api 가대 상세 랙 조회 응답 객체")
private List<ApiTrestleDetailRackResponse> rack;
@Schema(description = "모듈낙설방지금구수")
private Double moduleSnowGdCnt;
@Schema(description = "Api 가대 상세 모듈 조회 응답 객체")
private List<ApiTrestleDetailModuleResponse> module;
@Schema(description = "Api 가대 상세 랙 조회 응답 객체")
private Map<String, ApiTrestleDetailRackResponse> rack; // = new HashMap<>();
}

View File

@ -0,0 +1,25 @@
package com.interplug.qcast.biz.master.dto;
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 = "Api 가대 상세 스마트랙 응답 객체")
public class ApiTrestleDetailSmartRackResponse {
@Schema(description = "스마트랙순번")
private Integer seq;
@Schema(description = "스마트랙유형코드(RACK:랙 길이, INTVL:랙 간격)")
private String setRackTpCd;
@Schema(description = "스마트랙유형길이(RACK:랙 길이, INTVL:랙 간격)")
private Integer setRackTpLen;
@Schema(description = "랙지지금구수")
private Integer supFitQty;
}

View File

@ -298,33 +298,25 @@
SELECT
P.OBJECT_NO
, P.PLAN_NO
, RE.ROOF_NO
, RE.ROOF_SURFACE
, ROUND(CAST(RE.SLOPE AS FLOAT), 2) AS SLOPE
, RIE.AMOUNT
, CAST(RIE.SPECIFICATION AS FLOAT) SPECIFICATION
, ROUND((RIE.AMOUNT * CAST(ISNULL(RIE.SPECIFICATION, 0) AS FLOAT) / 1000), 4) AS PC_VOL_KW
, I.ITEM_ID
, I.ITEM_NO
, PE.ITEM_ID
, PE.AMOUNT
, PE.SPECIFICATION
, I.ITEM_NAME
, ROUND((PE.AMOUNT * CAST(ISNULL(PE.SPECIFICATION, 0) AS FLOAT) / 1000), 4) AS PC_VOL_KW
, ISNULL((
SELECT
SUM((AMOUNT * CAST(ISNULL(SPECIFICATION, 0) AS FLOAT) / 1000))
FROM T_ROOF_ITEM_ESTIMATE
WHERE ROOF_NO = RIE.ROOF_NO
AND OBJECT_NO = RIE.OBJECT_NO
AND PLAN_NO = RIE.PLAN_NO
AND PC_ITEM_ID = RIE.ITEM_ID
SUM((AMOUNT * CAST(ISNULL(SPECIFICATION, 0) AS FLOAT) / 1000))
FROM T_ROOF_ITEM_ESTIMATE (NOLOCK)
WHERE OBJECT_NO = PE.OBJECT_NO
AND PLAN_NO = PE.PLAN_NO
AND PC_ITEM_ID = PE.ITEM_ID
), 0) AS MODULE_VOL_KW
FROM T_PLAN P WITH (NOLOCK)
INNER JOIN T_ROOF_ESTIMATE RE WITH (NOLOCK)
ON P.OBJECT_NO = RE.OBJECT_NO
AND P.PLAN_NO = RE.PLAN_NO
INNER JOIN T_ROOF_ITEM_ESTIMATE RIE WITH (NOLOCK)
ON RE.ROOF_NO = RIE.ROOF_NO
AND RE.OBJECT_NO = RE.OBJECT_NO
AND RE.PLAN_NO = RE.PLAN_NO
INNER JOIN T_PART_ESTIMATE PE WITH (NOLOCK)
ON P.OBJECT_NO = PE.OBJECT_NO
AND P.PLAN_NO = PE.PLAN_NO
INNER JOIN M_ITEM I WITH (NOLOCK)
ON RIE.ITEM_ID = I.ITEM_ID
ON PE.ITEM_ID = I.ITEM_ID
WHERE P.OBJECT_NO = #{objectNo}
AND P.PLAN_NO = #{planNo}
AND I.ITEM_GROUP = 'PC_'
@ -379,7 +371,6 @@
, ISNULL(PIE.SPECIFICATION, '') AS SPECIFICATION
, PIE.AMOUNT
, PIE.PC_ITEM_ID
, PIE.CIRCUIT
FROM T_ROOF_ITEM_ESTIMATE PIE WITH (NOLOCK)
WHERE PIE.OBJECT_NO = #{objectNo}
AND PIE.PLAN_NO = #{planNo}
@ -838,7 +829,6 @@
, SPECIFICATION
, AMOUNT
, PC_ITEM_ID
, CIRCUIT
)
SELECT
#{roofNo} AS ROOF_NO
@ -850,7 +840,6 @@
, I.PNOW_W
, #{amount}
, #{pcItemId}
, #{circuit}
FROM M_ITEM I WITH (NOLOCK)
WHERE I.ITEM_ID = #{itemId}
</insert>

View File

@ -372,10 +372,10 @@
<span class="tit">見積書番号 :</span>
<span id="objectNo1"></span>
</div>
<div class="product-count">
<!--<div class="product-count">
<span class="tit">プラン :</span>
<span id="planNo"></span>
</div>
</div>-->
</div>
<div class="product-form">
<span class="tit">日付 :</span>