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

View File

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

View File

@ -49,125 +49,192 @@ public class MasterController {
@Operation(description = "가대 목록 조회한다.") @Operation(description = "가대 목록 조회한다.")
@GetMapping("/getTrestleList") @GetMapping("/getTrestleList")
public ApiResponse<ApiTrestleResponse> getTrestleList( public ApiResponse<ApiTrestleResponse> getTrestleList(
@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,
@Parameter(description = "가대메이커코드") @RequestParam(required = false) String trestleMkrCd, @Parameter(description = "가대메이커코드") @RequestParam(required = false) String trestleMkrCd,
@Parameter(description = "공법코드") @RequestParam(required = false) String constMthdCd, @Parameter(description = "공법코드") @RequestParam(required = false) String constMthdCd,
@Parameter(description = "지붕기초코드") @RequestParam(required = false) String roofBaseCd) { @Parameter(description = "지붕기초코드") @RequestParam(required = false) String roofBaseCd) {
ApiTrestleBuilder apiTrestleInfoBuilder = new ApiTrestleBuilder(moduleTpCd, roofMatlCd, raftBaseCd, trestleMkrCd, constMthdCd, roofBaseCd); ApiTrestleBuilder apiTrestleInfoBuilder =
ApiTrestleBuilder atb = apiTrestleInfoBuilder new ApiTrestleBuilder(
.setModuleTpCd(moduleTpCd) moduleTpCd, roofMatlCd, raftBaseCd, trestleMkrCd, constMthdCd, roofBaseCd);
.setRoofMatlCdCd(roofMatlCd) ApiTrestleBuilder atb =
.setRaftBaseCd(raftBaseCd) apiTrestleInfoBuilder
.setTrestleMkrCd(trestleMkrCd) .setModuleTpCd(moduleTpCd)
.setConstMthdCd(constMthdCd) .setRoofMatlCdCd(roofMatlCd)
.setRoofBaseCd(roofBaseCd) .setRaftBaseCd(raftBaseCd)
.build(); .setTrestleMkrCd(trestleMkrCd)
return masterService.getTrestleList(atb.getModuleTpCd(),atb.getRoofMatlCd(),atb.getRaftBaseCd(),atb.getTrestleMkrCd(),atb.getConstMthdCd(),atb.getRoofBaseCd()); .setConstMthdCd(constMthdCd)
.setRoofBaseCd(roofBaseCd)
.build();
return masterService.getTrestleList(
atb.getModuleTpCd(),
atb.getRoofMatlCd(),
atb.getRaftBaseCd(),
atb.getTrestleMkrCd(),
atb.getConstMthdCd(),
atb.getRoofBaseCd());
} }
@Operation(description = "시공법 목록 조회한다.") @Operation(description = "시공법 목록 조회한다.")
@GetMapping("/getConstructionList") @GetMapping("/getConstructionList")
public ApiResponse<ApiConstructionResponse> getConstructionList( public ApiResponse<ApiConstructionResponse> getConstructionList(
@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,
@Parameter(description = "공법코드") @RequestParam String constMthdCd, @Parameter(description = "공법코드") @RequestParam String constMthdCd,
@Parameter(description = "지붕기초코드") @RequestParam String roofBaseCd, @Parameter(description = "지붕기초코드") @RequestParam String roofBaseCd,
@Parameter(description = "면조도") @RequestParam String illuminationTp, @Parameter(description = "면조도") @RequestParam String illuminationTp,
@Parameter(description = "설치높이") @RequestParam String instHt, @Parameter(description = "설치높이") @RequestParam String instHt,
@Parameter(description = "풍속") @RequestParam String stdWindSpeed, @Parameter(description = "풍속") @RequestParam String stdWindSpeed,
@Parameter(description = "적설량") @RequestParam String stdSnowLd, @Parameter(description = "적설량") @RequestParam String stdSnowLd,
@Parameter(description = "경사도코드") @RequestParam String inclCd, @Parameter(description = "경사도코드") @RequestParam String inclCd,
@Parameter(description = "서까래기초코드") @RequestParam(required = false) String raftBaseCd, @Parameter(description = "서까래기초코드") @RequestParam(required = false) String raftBaseCd,
@Parameter(description = "하제(망둥어)피치") @RequestParam(required = false) Integer roofPitch) throws QcastException { @Parameter(description = "하제(망둥어)피치") @RequestParam(required = false) Integer roofPitch)
throws QcastException {
if (moduleTpCd == null || moduleTpCd.trim().isEmpty() ||
roofMatlCd == null || roofMatlCd.trim().isEmpty() || if (moduleTpCd == null
trestleMkrCd == null || trestleMkrCd.trim().isEmpty() || || moduleTpCd.trim().isEmpty()
constMthdCd == null || constMthdCd.trim().isEmpty() || || roofMatlCd == null
roofBaseCd == null || roofBaseCd.trim().isEmpty() || || roofMatlCd.trim().isEmpty()
illuminationTp == null || illuminationTp.trim().isEmpty() || || trestleMkrCd == null
instHt == null || instHt.trim().isEmpty() || || trestleMkrCd.trim().isEmpty()
stdWindSpeed == null || stdWindSpeed.trim().isEmpty() || || constMthdCd == null
stdSnowLd == null || stdSnowLd.trim().isEmpty() || || constMthdCd.trim().isEmpty()
inclCd == null || inclCd.trim().isEmpty()) { || roofBaseCd == null
throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); || roofBaseCd.trim().isEmpty()
} || illuminationTp == null
|| illuminationTp.trim().isEmpty()
ApiConstructionBuilder apiConstructionBuilder = new ApiConstructionBuilder(moduleTpCd, roofMatlCd, trestleMkrCd, constMthdCd, roofBaseCd, illuminationTp || instHt == null
, instHt, stdWindSpeed, stdSnowLd, inclCd, raftBaseCd, roofPitch); || instHt.trim().isEmpty()
ApiConstructionBuilder acb = apiConstructionBuilder || stdWindSpeed == null
.setModuleTpCd(moduleTpCd) || stdWindSpeed.trim().isEmpty()
.setRoofMatlCd(roofMatlCd) || stdSnowLd == null
.setTrestleMkrCd(trestleMkrCd) || stdSnowLd.trim().isEmpty()
.setConstMthdCd(constMthdCd) || inclCd == null
.setRoofBaseCd(roofBaseCd) || inclCd.trim().isEmpty()) {
.setIlluminationTp(illuminationTp) throw new QcastException(ErrorCode.INVALID_INPUT_VALUE);
.setInstHt(instHt) }
.setStdWindSpeed(stdWindSpeed)
.setStdSnowLd(stdSnowLd) ApiConstructionBuilder apiConstructionBuilder =
.setInclCd(inclCd) new ApiConstructionBuilder(
.setRaftBaseCd(raftBaseCd) moduleTpCd,
.setRoofPitch(roofPitch) roofMatlCd,
.build(); trestleMkrCd,
constMthdCd,
return masterService.getConstructionList(acb.getModuleTpCd(), acb.getRoofMatlCd(), acb.getTrestleMkrCd(), acb.getConstMthdCd(), acb.getRoofBaseCd(), acb.getIlluminationTp() roofBaseCd,
, acb.getInstHt(), acb.getStdWindSpeed(), acb.getStdSnowLd(), acb.getInclCd(), acb.getRaftBaseCd(), acb.getRoofPitch()); 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 = "가대 상세 조회한다.") @Operation(description = "가대 상세 조회한다.")
@GetMapping("/getTrestleDetailList") @GetMapping("/getTrestleDetailList")
public ApiResponse<ApiTrestleDetailResponse> getTrestleDetailList( public ApiResponse<ApiTrestleDetailResponse> getTrestleDetailList(
@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,
@Parameter(description = "공법코드") @RequestParam String constMthdCd, @Parameter(description = "공법코드") @RequestParam String constMthdCd,
@Parameter(description = "지붕기초코드") @RequestParam String roofBaseCd, @Parameter(description = "지붕기초코드") @RequestParam String roofBaseCd,
@Parameter(description = "면조도") @RequestParam String illuminationTp, @Parameter(description = "면조도") @RequestParam String illuminationTp,
@Parameter(description = "설치높이") @RequestParam String instHt, @Parameter(description = "설치높이") @RequestParam String instHt,
@Parameter(description = "풍속") @RequestParam String stdWindSpeed, @Parameter(description = "풍속") @RequestParam String stdWindSpeed,
@Parameter(description = "적설량") @RequestParam String stdSnowLd, @Parameter(description = "적설량") @RequestParam String stdSnowLd,
@Parameter(description = "경사도코드") @RequestParam String inclCd, @Parameter(description = "경사도코드") @RequestParam String inclCd,
@Parameter(description = "시공법") @RequestParam String constTp, @Parameter(description = "시공법") @RequestParam String constTp,
@Parameter(description = "혼합모듈번호") @RequestParam(required = false) Integer mixMatlNo, @Parameter(description = "혼합모듈번호") @RequestParam(required = false) Integer mixMatlNo,
@Parameter(description = "하제(망둥어)피치") @RequestParam(required = false) Integer roofPitch) throws QcastException { @Parameter(description = "하제(망둥어)피치") @RequestParam(required = false) Integer roofPitch)
throws QcastException {
if (moduleTpCd == null || moduleTpCd.trim().isEmpty() ||
roofMatlCd == null || roofMatlCd.trim().isEmpty() || if (moduleTpCd == null
trestleMkrCd == null || trestleMkrCd.trim().isEmpty() || || moduleTpCd.trim().isEmpty()
constMthdCd == null || constMthdCd.trim().isEmpty() || || roofMatlCd == null
roofBaseCd == null || roofBaseCd.trim().isEmpty() || || roofMatlCd.trim().isEmpty()
illuminationTp == null || illuminationTp.trim().isEmpty() || || trestleMkrCd == null
instHt == null || instHt.trim().isEmpty() || || trestleMkrCd.trim().isEmpty()
stdWindSpeed == null || stdWindSpeed.trim().isEmpty() || || constMthdCd == null
stdSnowLd == null || stdSnowLd.trim().isEmpty() || || constMthdCd.trim().isEmpty()
inclCd == null || inclCd.trim().isEmpty() || || roofBaseCd == null
constTp == null || constTp.trim().isEmpty()) { || roofBaseCd.trim().isEmpty()
throw new QcastException(ErrorCode.INVALID_INPUT_VALUE); || illuminationTp == null
} || illuminationTp.trim().isEmpty()
|| instHt == null
ApiTrestleDetailBuilder apiTrestleDetailBuilder = new ApiTrestleDetailBuilder(moduleTpCd, roofMatlCd, trestleMkrCd, constMthdCd, roofBaseCd, illuminationTp || instHt.trim().isEmpty()
, instHt, stdWindSpeed, stdSnowLd, inclCd, constTp, mixMatlNo, roofPitch); || stdWindSpeed == null
ApiTrestleDetailBuilder atdb = apiTrestleDetailBuilder || stdWindSpeed.trim().isEmpty()
.setModuleTpCd(moduleTpCd) || stdSnowLd == null
.setRoofMatlCd(roofMatlCd) || stdSnowLd.trim().isEmpty()
.setTrestleMkrCd(trestleMkrCd) || inclCd == null
.setConstMthdCd(constMthdCd) || inclCd.trim().isEmpty()
.setRoofBaseCd(roofBaseCd) || constTp == null
.setIlluminationTp(illuminationTp) || constTp.trim().isEmpty()) {
.setInstHt(instHt) throw new QcastException(ErrorCode.INVALID_INPUT_VALUE);
.setStdWindSpeed(stdWindSpeed) }
.setStdSnowLd(stdSnowLd)
.setInclCd(inclCd) ApiTrestleDetailBuilder atdb =
.setConstTp(constTp) ApiTrestleDetailBuilder.builder()
.setMixMatlNo(mixMatlNo) .moduleTpCd(moduleTpCd)
.setRoofPitch(roofPitch) .roofMatlCd(roofMatlCd)
.build(); .trestleMkrCd(trestleMkrCd)
.constMthdCd(constMthdCd)
return masterService.getTrestleDetailList(atdb.getModuleTpCd(), atdb.getRoofMatlCd(), atdb.getTrestleMkrCd(), atdb.getConstMthdCd(), atdb.getRoofBaseCd(), atdb.getIlluminationTp() .roofBaseCd(roofBaseCd)
, atdb.getInstHt(), atdb.getStdWindSpeed(), atdb.getStdSnowLd(), atdb.getInclCd(), atdb.getConstTp(), atdb.getMixMatlNo(), atdb.getRoofPitch()); .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") @GetMapping("/trestle")
public ApiResponse<ApiTrestleResponse> getTrestleList( public ApiResponse<ApiTrestleResponse> getTrestleList(
@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,
@RequestParam(required = false) String trestleMkrCd, @RequestParam(required = false) String trestleMkrCd,
@RequestParam(required = false) String constMthdCd, @RequestParam(required = false) String constMthdCd,
@RequestParam(required = false) String roofBaseCd); @RequestParam(required = false) String roofBaseCd);
// 시공법 목록 조회 // 시공법 목록 조회
@GetMapping("/construction") @GetMapping("/construction")
public ApiResponse<ApiConstructionResponse> getConstructionList( public ApiResponse<ApiConstructionResponse> getConstructionList(
@RequestParam String moduleTpCd, @RequestParam String moduleTpCd,
@RequestParam String roofMatlCd, @RequestParam String roofMatlCd,
@RequestParam String trestleMkrCd, @RequestParam String trestleMkrCd,
@RequestParam String constMthdCd, @RequestParam String constMthdCd,
@RequestParam String roofBaseCd, @RequestParam String roofBaseCd,
@RequestParam String illuminationTp, @RequestParam String illuminationTp,
@RequestParam String instHt, @RequestParam String instHt,
@RequestParam String stdWindSpeed, @RequestParam String stdWindSpeed,
@RequestParam String stdSnowLd, @RequestParam String stdSnowLd,
@RequestParam String inclCd, @RequestParam String inclCd,
@RequestParam(required = false) String raftBaseCd, @RequestParam(required = false) String raftBaseCd,
@RequestParam(required = false) Integer roofPitch); @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);
// 가대 상세 조회
@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; package com.interplug.qcast.biz.master.dto;
import java.util.List;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -10,13 +9,13 @@ import lombok.Setter;
@Setter @Setter
@Schema(description = "결과 데이터") @Schema(description = "결과 데이터")
public class ApiResponse<T> { public class ApiResponse<T> {
@Schema(description = "목록 데이터") @Schema(description = "목록 데이터")
private List<T> data; private List<T> data;
@Schema(description = "목록 데이터2") @Schema(description = "목록 데이터2")
private List<T> data2; private List<T> data2;
@Schema(description = "API 결과 데이터") @Schema(description = "API 결과 데이터")
private ApiResultResponse result; private ApiResultResponse result;
} }

View File

@ -9,25 +9,21 @@ import lombok.Setter;
@Schema(description = "Api 가대 상세 모듈 조회 응답 객체") @Schema(description = "Api 가대 상세 모듈 조회 응답 객체")
public class ApiTrestleDetailModuleResponse { public class ApiTrestleDetailModuleResponse {
@Schema(description = "모듈타입코드(혼합제외)") @Schema(description = "모듈타입코드(혼합제외)")
private String moduleTpCd; private String moduleTpCd;
@Schema(description = "장경") @Schema(description = "장경")
private double longAxis; private Double longAxis;
@Schema(description = "단경") @Schema(description = "단경")
private double shortAxis; private Double shortAxis;
@Schema(description = "두께") @Schema(description = "두께")
private double thickness; private Double thickness;
@Schema(description = "색상") @Schema(description = "색상")
private String color; private String color;
@Schema(description = "모듈최대단수")
private Integer moduleMaxRows;
@Schema(description = "순번")
private Integer priority;
@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; package com.interplug.qcast.biz.master.dto;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@Getter @Getter
@Setter @Setter
@JsonIgnoreProperties(ignoreUnknown = true)
@Schema(description = "Api 가대 상세 랙 조회 응답 객체") @Schema(description = "Api 가대 상세 랙 조회 응답 객체")
public class ApiTrestleDetailRackResponse { public class ApiTrestleDetailRackResponse {
@Schema(description = "모듈총단수") @Schema(description = "모듈타입코드")
private Integer moduleRows; private String moduleTpCd;
@Schema(description = "랙단수코드") @Schema(description = "모듈총단수")
private String rackRowsCds; private Integer moduleRows;
@Schema(description = "간격") @Schema(description = "모듈1단수")
private String intvls; 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; 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 io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
import java.util.Map;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@Getter @Getter
@Setter @Setter
@JsonIgnoreProperties(ignoreUnknown = true)
@Schema(description = "Api 가대 상세 조회 응답 객체") @Schema(description = "Api 가대 상세 조회 응답 객체")
public class ApiTrestleDetailResponse { public class ApiTrestleDetailResponse {
@Schema(description = "랙여부")
private String rackYn;
@Schema(description = "치조가능여부") @Schema(description = "랙여부")
private String plvrYn; private String rackYn;
@Schema(description = "모듈최대단수") @Schema(description = "치조가능여부")
private Integer moduleMaxRows; private String plvrYn;
@Schema(description = "모듈최대") @Schema(description = "모듈최대")
private Integer moduleMaxCols; private Integer moduleMaxRows;
@Schema(description = "지붕기준모듈설치간격-처마") @Schema(description = "모듈최대열수")
private double eaveIntvl; private Integer moduleMaxCols;
@Schema(description = "지붕기준모듈설치간격-용마루") @Schema(description = "지붕기준모듈설치간격-처마")
private double ridgeIntvl; private Double eaveIntvl;
@Schema(description = "지붕기준모듈설치간격-케라바") @Schema(description = "지붕기준모듈설치간격-용마루")
private double kerabaIntvl; private Double ridgeIntvl;
@Schema(description = "모듈간간격-좌우") @Schema(description = "지붕기준모듈설치간격-케라바")
private double moduleIntvlHor; private Double kerabaIntvl;
@Schema(description = "모듈간간격-상하") @Schema(description = "모듈간간격-좌우")
private double moduleIntvlVer; private Double moduleIntvlHor;
@Schema(description = "치조배치 중단처마커버 설치가능여부") @Schema(description = "모듈간간격-상하")
private String cvrPlvrYn; private Double moduleIntvlVer;
@Schema(description = "랙리스지지금구수") @Schema(description = "치조배치 중단처마커버 설치가능여부")
private double lessSupFitQty; private String cvrPlvrYn;
@Schema(description = "랙리스지지금구간격(모듈모서리기준)") @Schema(description = "랙리스지지금구")
private double lessSupFitIntvlPct; private Double lessSupFitQty;
@Schema(description = "랙구성수량(모듈1개당)") @Schema(description = "랙리스지지금구간격(모듈모서리기준)")
private double rackQty; private Double lessSupFitIntvlPct;
@Schema(description = "랙구성간격(모듈좌우면기준)") @Schema(description = "랙구성수량(모듈1개당)")
private double rackIntvlPct; private Double rackQty;
@Schema(description = "Api 가대 상세 모듈 조회 응답 객체") @Schema(description = "랙구성간격(모듈좌우면기준)")
private List<ApiTrestleDetailModuleResponse> module; private Double rackIntvlPct;
@Schema(description = "Api 가대 상세 랙 조회 응답 객체") @Schema(description = "모듈낙설방지금구수")
private List<ApiTrestleDetailRackResponse> rack; 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 SELECT
P.OBJECT_NO P.OBJECT_NO
, P.PLAN_NO , P.PLAN_NO
, RE.ROOF_NO , PE.ITEM_ID
, RE.ROOF_SURFACE , PE.AMOUNT
, ROUND(CAST(RE.SLOPE AS FLOAT), 2) AS SLOPE , PE.SPECIFICATION
, RIE.AMOUNT , I.ITEM_NAME
, CAST(RIE.SPECIFICATION AS FLOAT) SPECIFICATION , ROUND((PE.AMOUNT * CAST(ISNULL(PE.SPECIFICATION, 0) AS FLOAT) / 1000), 4) AS PC_VOL_KW
, ROUND((RIE.AMOUNT * CAST(ISNULL(RIE.SPECIFICATION, 0) AS FLOAT) / 1000), 4) AS PC_VOL_KW
, I.ITEM_ID
, I.ITEM_NO
, ISNULL(( , ISNULL((
SELECT SELECT
SUM((AMOUNT * CAST(ISNULL(SPECIFICATION, 0) AS FLOAT) / 1000)) SUM((AMOUNT * CAST(ISNULL(SPECIFICATION, 0) AS FLOAT) / 1000))
FROM T_ROOF_ITEM_ESTIMATE FROM T_ROOF_ITEM_ESTIMATE (NOLOCK)
WHERE ROOF_NO = RIE.ROOF_NO WHERE OBJECT_NO = PE.OBJECT_NO
AND OBJECT_NO = RIE.OBJECT_NO AND PLAN_NO = PE.PLAN_NO
AND PLAN_NO = RIE.PLAN_NO AND PC_ITEM_ID = PE.ITEM_ID
AND PC_ITEM_ID = RIE.ITEM_ID
), 0) AS MODULE_VOL_KW ), 0) AS MODULE_VOL_KW
FROM T_PLAN P WITH (NOLOCK) FROM T_PLAN P WITH (NOLOCK)
INNER JOIN T_ROOF_ESTIMATE RE WITH (NOLOCK) INNER JOIN T_PART_ESTIMATE PE WITH (NOLOCK)
ON P.OBJECT_NO = RE.OBJECT_NO ON P.OBJECT_NO = PE.OBJECT_NO
AND P.PLAN_NO = RE.PLAN_NO AND P.PLAN_NO = PE.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 M_ITEM I WITH (NOLOCK) 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} WHERE P.OBJECT_NO = #{objectNo}
AND P.PLAN_NO = #{planNo} AND P.PLAN_NO = #{planNo}
AND I.ITEM_GROUP = 'PC_' AND I.ITEM_GROUP = 'PC_'
@ -379,7 +371,6 @@
, ISNULL(PIE.SPECIFICATION, '') AS SPECIFICATION , ISNULL(PIE.SPECIFICATION, '') AS SPECIFICATION
, PIE.AMOUNT , PIE.AMOUNT
, PIE.PC_ITEM_ID , PIE.PC_ITEM_ID
, PIE.CIRCUIT
FROM T_ROOF_ITEM_ESTIMATE PIE WITH (NOLOCK) FROM T_ROOF_ITEM_ESTIMATE PIE WITH (NOLOCK)
WHERE PIE.OBJECT_NO = #{objectNo} WHERE PIE.OBJECT_NO = #{objectNo}
AND PIE.PLAN_NO = #{planNo} AND PIE.PLAN_NO = #{planNo}
@ -838,7 +829,6 @@
, SPECIFICATION , SPECIFICATION
, AMOUNT , AMOUNT
, PC_ITEM_ID , PC_ITEM_ID
, CIRCUIT
) )
SELECT SELECT
#{roofNo} AS ROOF_NO #{roofNo} AS ROOF_NO
@ -850,7 +840,6 @@
, I.PNOW_W , I.PNOW_W
, #{amount} , #{amount}
, #{pcItemId} , #{pcItemId}
, #{circuit}
FROM M_ITEM I WITH (NOLOCK) FROM M_ITEM I WITH (NOLOCK)
WHERE I.ITEM_ID = #{itemId} WHERE I.ITEM_ID = #{itemId}
</insert> </insert>

View File

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