diff --git a/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingController.java b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingController.java new file mode 100644 index 00000000..41f9ad85 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingController.java @@ -0,0 +1,44 @@ +package com.interplug.qcast.biz.canvasBasicSetting; + +import com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingInfo; +import com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingResponse; +import com.interplug.qcast.biz.excelDown.dto.NtrCtsCmpResponse; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +@Slf4j +@RestController +@RequestMapping("/api/canvas-management") +@RequiredArgsConstructor +@Tag(name = "CanvasBasicSettingController", description = "Canvas Basic Setting 관련 API") +public class CanvasBasicSettingController { + private final CanvasBasicSettingService canvasBasicSettingService; + + @Operation(description = "Canvas Basic Setting 정보를 조회 한다.") + @GetMapping("/canvas-basic-settings/by-object/{objectNo}") + public List selectCanvasBasicSetting(@PathVariable String objectNo) { + + log.debug("Basic Setting 조회 ::::: " + objectNo); + + return canvasBasicSettingService.selectCanvasBasicSetting(objectNo); + } + + @Operation(description = "Canvas Basic Setting 정보를 등록 한다.") + @PostMapping("/canvas-basic-settings") + @ResponseStatus(HttpStatus.CREATED) + public String insertCanvasBasicSetting(@RequestBody CanvasBasicSettingInfo csi) { + + log.debug("Basic Setting 등록 ::::: " + csi.getObjectNo()); + + return canvasBasicSettingService.insertCanvasBasicSetting(csi); + } + +} diff --git a/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingMapper.java b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingMapper.java new file mode 100644 index 00000000..153fccf7 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingMapper.java @@ -0,0 +1,26 @@ +package com.interplug.qcast.biz.canvasBasicSetting; + +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; + +import com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingInfo; +import com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingResponse; +import com.interplug.qcast.biz.canvasBasicSetting.dto.RoofMaterialsAddInfo; + +@Mapper +public interface CanvasBasicSettingMapper { + + // Canvas Basic Setting 조회(objectNo) + public List selectCanvasBasicSetting(String objectNo); + + // Canvas Basic Setting 등록 + public void insertCanvasBasicSetting(CanvasBasicSettingInfo csi); + + // Canvas 지붕재추가 Setting 등록 + public void insertRoofMaterialsAdd(RoofMaterialsAddInfo rma); + + // Canvas 지붕재추가 Setting 삭제 + public void deleteRoofMaterialsAdd(String objectNo); + +} \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingService.java b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingService.java new file mode 100644 index 00000000..037c6f5b --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/CanvasBasicSettingService.java @@ -0,0 +1,53 @@ +package com.interplug.qcast.biz.canvasBasicSetting; + +import lombok.RequiredArgsConstructor; + +import java.util.List; + +import org.springframework.stereotype.Service; + +import com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingInfo; +import com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingResponse; +import com.interplug.qcast.biz.canvasBasicSetting.dto.RoofMaterialsAddInfo; + +@Service +@RequiredArgsConstructor +public class CanvasBasicSettingService { + // @Autowired CanvasBasicSettingMapper canvasBasicSettingMapper; + private final CanvasBasicSettingMapper canvasBasicSettingMapper; + + // Canvas Basic Setting 조회(objectNo) + public List selectCanvasBasicSetting(String objectNo) { + return canvasBasicSettingMapper.selectCanvasBasicSetting(objectNo); + } + + // Canvas Basic Setting 등록 + public String insertCanvasBasicSetting(CanvasBasicSettingInfo csi) { + + try { + + // 도면/치수/각도 정보 insert/update + canvasBasicSettingMapper.insertCanvasBasicSetting(csi); + + // 기존 지붕재추가 정보 삭제 후 insert + canvasBasicSettingMapper.deleteRoofMaterialsAdd(csi.getObjectNo()); + + // for-each 루프를 사용하여 지붕재추가 Setting + for (RoofMaterialsAddInfo rma : csi.getRoofMaterialsAddList()) { + + rma.setObjectNo(csi.getObjectNo()); + + // 신규 지붕재추가 정보 insert + canvasBasicSettingMapper.insertRoofMaterialsAdd(rma); + } + + } catch (Exception e) { + System.out.println("오류 발생 : " + e.getMessage()); + } + + // 생성된 objectNo 반환 + return csi.getObjectNo(); + + } + +} diff --git a/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/CanvasBasicSettingInfo.java b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/CanvasBasicSettingInfo.java new file mode 100644 index 00000000..c38579d0 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/CanvasBasicSettingInfo.java @@ -0,0 +1,21 @@ +package com.interplug.qcast.biz.canvasBasicSetting.dto; + +import java.sql.Date; +import java.util.List; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CanvasBasicSettingInfo { + + private String objectNo; //견적서 번호 + private int roofDrawingSet; //도면(치수) + private int roofSizeSet; //치수(복사도/실측값/육지붕) + private String roofAngleSet; //각도(경사/각도) + private Date registDatetime; //생성일시 + private Date lastEditDatetime; //수정일시 + + private List roofMaterialsAddList; +} \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/CanvasBasicSettingResponse.java b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/CanvasBasicSettingResponse.java new file mode 100644 index 00000000..9de8b1b8 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/CanvasBasicSettingResponse.java @@ -0,0 +1,21 @@ +package com.interplug.qcast.biz.canvasBasicSetting.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class CanvasBasicSettingResponse { + + private String objectNo; //견적서 번호 + private int roofDrawingSet; //도면(치수) + private int roofSizeSet; //치수(복사도/실측값/육지붕) + private String roofAngleSet; //각도(경사/각도) + private int roofSeq; //순번 SEQ + private int roofType; //타입 + private int roofWidth; //넓이 + private int roofHeight; //높이 + private int roofGap; //간격 + private String roofLayout; //방식 + +} \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/RoofMaterialsAddInfo.java b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/RoofMaterialsAddInfo.java new file mode 100644 index 00000000..b1971bf2 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasBasicSetting/dto/RoofMaterialsAddInfo.java @@ -0,0 +1,22 @@ +package com.interplug.qcast.biz.canvasBasicSetting.dto; + +import java.sql.Date; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class RoofMaterialsAddInfo { + + private String objectNo; //견적서 번호 + private int roofSeq; //순번 SEQ + private int roofType; //타입 + private int roofWidth; //넓이 + private int roofHeight; //높이 + private int roofGap; //간격 + private String roofLayout; //방식 + private Date registDatetime; //생성일시 + private Date lastEditDatetime; //수정일시 + +} diff --git a/src/main/resources/mappers/canvasBasicSetting/canvasBasicSettingMapper.xml b/src/main/resources/mappers/canvasBasicSetting/canvasBasicSettingMapper.xml new file mode 100644 index 00000000..762f1adf --- /dev/null +++ b/src/main/resources/mappers/canvasBasicSetting/canvasBasicSettingMapper.xml @@ -0,0 +1,86 @@ + + + + + + + + + /* sqlid : com.interplug.qcast.canvasBasicSetting.insertCanvasBasicSetting Canvas Basic Setting 등록 */ + MERGE TB_CANVAS_BASIC_SETUP AS target + USING (SELECT #{objectNo} AS object_no) AS source + ON (target.object_no = source.object_no) + WHEN MATCHED THEN + UPDATE + SET roof_drawing_set = #{roofDrawingSet} + , roof_size_set = #{roofSizeSet} + , roof_angle_set = #{roofAngleSet} + , last_edit_datetime = GETDATE() + + WHEN NOT MATCHED THEN + INSERT + ( + object_no + , roof_drawing_set + , roof_size_set + , roof_angle_set + , regist_datetime + ) + VALUES ( + #{objectNo} + , #{roofDrawingSet} + , #{roofSizeSet} + , #{roofAngleSet} + , GETDATE() + ); + + + + /* sqlid : com.interplug.qcast.canvasBasicSetting.insertRoofMaterialsAdd Canvas 지붕재추가 Setting 등록 */ + INSERT INTO TB_CANVAS_ROOF_MATERIALS_ADD + ( + object_no + , roof_seq + , roof_type + , roof_width + , roof_height + , roof_gap + , roof_layout + , regist_datetime + ) + VALUES ( + #{objectNo} + , #{roofSeq} + , #{roofType} + , #{roofWidth} + , #{roofHeight} + , #{roofGap} + , #{roofLayout} + , GETDATE() + ); + + + + /* sqlid : com.interplug.qcast.canvasBasicSetting.deleteRoofMaterialsAdd Canvas 지붕재추가 Setting 삭제 */ + DELETE FROM TB_CANVAS_ROOF_MATERIALS_ADD + WHERE object_no = #{objectNo} + + + \ No newline at end of file