diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java index f88e3e3a..0ddd16ca 100644 --- a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusController.java @@ -1,8 +1,11 @@ package com.interplug.qcast.biz.canvasStatus; -import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusDto; +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatus; +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; + +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; @Slf4j @@ -14,9 +17,10 @@ public class CanvasStatusController { private final CanvasStatusService canvasStatusService; @PostMapping("/v1.0/canvasStatus") - public void canvasStatus(@RequestBody CanvasStatusDto cs) { + public void canvasStatus(@RequestBody CanvasStatusResponse cs) { log.warn(String.valueOf(log.isDebugEnabled())); if (log.isDebugEnabled()) { + log.debug("id : " + cs.getId()); log.debug("userId : " + cs.getUserId()); log.debug("objectNo : " + cs.getObjectNo()); log.debug("imageName : " + cs.getImageName()); @@ -26,37 +30,41 @@ public class CanvasStatusController { // 전체 견적서 조회 @GetMapping("/{userId}") - public CanvasStatusDto selectAllCanvasStatus(@RequestBody CanvasStatusDto cs) { + public CanvasStatus selectAllCanvasStatus(@RequestBody CanvasStatus cs) { return canvasStatusService.selectAllCanvasStatus(cs); } - // 견적서 조회 - @GetMapping("/{objectNo}") - public CanvasStatusDto selectObjectNoCanvasStatus(@RequestBody CanvasStatusDto cs) { - return canvasStatusService.selectObjectNoCanvasStatus(cs); - } + //견적서 조회 + @GetMapping("/{objectNo}") + public CanvasStatus selectObjectNoCanvasStatus(@PathVariable String objectNo) { + return canvasStatusService.selectObjectNoCanvasStatus(objectNo); + } // 견적서 등록 @PostMapping - public void insertCanvasStatus(@RequestBody CanvasStatusDto cs) { - canvasStatusService.insertCanvasStatus(cs); + @ResponseStatus(HttpStatus.CREATED) + public String insertCanvasStatus(@RequestBody CanvasStatusResponse cs) { + String objectNo = canvasStatusService.insertCanvasStatus(cs); + return objectNo; } // 견적서 수정 @PutMapping - public void updateCanvasStatus(@RequestBody CanvasStatusDto cs) { + public void updateCanvasStatus(@RequestBody CanvasStatusResponse cs) { canvasStatusService.updateCanvasStatus(cs); } // 견적서 삭제 @DeleteMapping("/{objectNo}") + @ResponseStatus(HttpStatus.NO_CONTENT) public void deleteObjectNoCanvasStatus(@PathVariable String objectNo) { canvasStatusService.deleteObjectNoCanvasStatus(objectNo); } // 이미지(템플릿) 삭제 @DeleteMapping - public void deleteImageNameCanvasStatus(@RequestBody CanvasStatusDto cs) { + @ResponseStatus(HttpStatus.NO_CONTENT) + public void deleteImageNameCanvasStatus(@RequestBody CanvasStatus cs) { canvasStatusService.deleteImageNameCanvasStatus(cs); } diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java index 2de603c1..e45fbfe0 100644 --- a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusMapper.java @@ -1,37 +1,35 @@ package com.interplug.qcast.biz.canvasStatus; -import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusDto; +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatus; +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusResponse; import org.apache.ibatis.annotations.Mapper; @Mapper interface CanvasStatusMapper { - // 견적서(objectNo) 존재 확인 - public CanvasStatusDto getCanvasStatusByObjectNo(String objectNo); + // objectNo 생성 + public String getCanvasStatusNewObjectNo(String userId); - // 이미지(템플릿) 존재 확인 - public CanvasStatusDto getCanvasStatusByImageName(String objectNo, String imageName); + // imageName 생성 + public String getCanvasStatusImageAdd(String objectNo); // 전체 견적서 조회 - public CanvasStatusDto selectAllCanvasStatus(CanvasStatusDto cs); + public CanvasStatus selectAllCanvasStatus(CanvasStatus cs); - // 견적서 조회 - public CanvasStatusDto selectObjectNoCanvasStatus(CanvasStatusDto cs); + // 견적서 조회(objectNo) + public CanvasStatus selectObjectNoCanvasStatus(String objectNo); - // 신규 견적서 등록 - public void insertNewCanvasStatus(CanvasStatusDto cs); - - // 이미지(템플릿) 추가 등록 - public void insertImageAddCanvasStatus(CanvasStatusDto cs); + // 견적서 등록 + public void insertCanvasStatus(CanvasStatusResponse cs); // 견적서 수정 - public void updateCanvasStatus(CanvasStatusDto cs); + public void updateCanvasStatus(CanvasStatusResponse cs); // 견적서 삭제 public void deleteObjectNoCanvasStatus(String objectNo); // 이미지(템플릿) 삭제 - public void deleteImageNameCanvasStatus(CanvasStatusDto cs); + public void deleteImageNameCanvasStatus(CanvasStatus cs); } \ No newline at end of file diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java index 5f8edfc3..18131792 100644 --- a/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/CanvasStatusService.java @@ -1,6 +1,9 @@ package com.interplug.qcast.biz.canvasStatus; -import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusDto; +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatus; +import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusResponse; + +import ch.qos.logback.classic.Logger; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -12,45 +15,50 @@ public class CanvasStatusService { // @Autowired CanvasStatusMapper canvasStatusMapper; private final CanvasStatusMapper canvasStatusMapper; - // 전체 견적서 조회 - public CanvasStatusDto selectAllCanvasStatus(CanvasStatusDto cs) { + // 전체 견적서 조회 + public CanvasStatus selectAllCanvasStatus(CanvasStatus cs) { return canvasStatusMapper.selectAllCanvasStatus(cs); } - // 견적서 조회 - public CanvasStatusDto selectObjectNoCanvasStatus(CanvasStatusDto cs) { - return canvasStatusMapper.selectObjectNoCanvasStatus(cs); + // 견적서 조회(objectNo) + public CanvasStatus selectObjectNoCanvasStatus(String objectNo) { + return canvasStatusMapper.selectObjectNoCanvasStatus(objectNo); } // 견적서 등록 - public void insertCanvasStatus(CanvasStatusDto cs) { + public String insertCanvasStatus(CanvasStatusResponse cs) { + + try { + // objectNo 없음(신규) + if (cs.getObjectNo() == null) { + // objectNo 생성 + String objectNo = canvasStatusMapper.getCanvasStatusNewObjectNo(cs.getUserId()); + + cs.setObjectNo(objectNo); + cs.setImageName("image01"); + + // 이미지(템플릿) 등록(추가) + } else { + // imageName 생성 + String imageName = canvasStatusMapper.getCanvasStatusImageAdd(cs.getObjectNo()); + + cs.setImageName(imageName); + } + + canvasStatusMapper.insertCanvasStatus(cs); + + } catch (Exception e) { + System.out.println("오류 발생 : " + e.getMessage()); + } + + // 생성된 objectNo 반환 + return cs.getObjectNo(); - // 견적서(objectNo) 존재 확인 - CanvasStatusDto existingStatus = canvasStatusMapper.getCanvasStatusByObjectNo(cs.getObjectNo()); - - if (existingStatus == null) { - // 견적서(objectNo)가 존재하지 않으면 새로 생성 - canvasStatusMapper.insertNewCanvasStatus(cs); - } else { - // 견적서 이미지 추가 등록 - // 견적서(objectNo)가 존재하면 해당 objectNo Row 추가 후 imageName +1 추가 - canvasStatusMapper.insertImageAddCanvasStatus(cs); - } } // 견적서 수정 - public void updateCanvasStatus(CanvasStatusDto cs) { - - // 이미지(템플릿) 존재 확인 - CanvasStatusDto existingStatus = canvasStatusMapper.getCanvasStatusByImageName(cs.getObjectNo(), cs.getImageName()); - - if (existingStatus == null) { - // 이미지(템플릿)가 존재하지 않으면 새로 생성 - canvasStatusMapper.insertNewCanvasStatus(cs); - } else { - // 이미지(템플릿)가 존재하면 update 처리 - canvasStatusMapper.updateCanvasStatus(cs); - } + public void updateCanvasStatus(CanvasStatusResponse cs) { + canvasStatusMapper.updateCanvasStatus(cs); } // 견적서 삭제 @@ -59,7 +67,7 @@ public class CanvasStatusService { } // 이미지(템플릿) 삭제 - public void deleteImageNameCanvasStatus(CanvasStatusDto cs) { + public void deleteImageNameCanvasStatus(CanvasStatus cs) { canvasStatusMapper.deleteImageNameCanvasStatus(cs); } diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatus.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatus.java new file mode 100644 index 00000000..b97dffd2 --- /dev/null +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatus.java @@ -0,0 +1,10 @@ +package com.interplug.qcast.biz.canvasStatus.dto; + +import lombok.Data; + +@Data +public class CanvasStatus { + private String userId; //사용자 ID + private String objectNo; //견적서 번호 + private String imageName; //이미지명 +} diff --git a/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusDto.java b/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusResponse.java similarity index 86% rename from src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusDto.java rename to src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusResponse.java index a19b25d7..15834b8a 100644 --- a/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusDto.java +++ b/src/main/java/com/interplug/qcast/biz/canvasStatus/dto/CanvasStatusResponse.java @@ -9,8 +9,8 @@ import lombok.Setter; @Data @Getter @Setter -public class CanvasStatusDto { - private int id; //PK ID +public class CanvasStatusResponse { + private Integer id; //PK ID private String userId; //사용자 ID private String objectNo; //견적서 번호 private String imageName; //이미지명 diff --git a/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml b/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml index 07b550ed..de81eb87 100644 --- a/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml +++ b/src/main/resources/mappers/canvasStatus/canvasStatusMapper.xml @@ -3,25 +3,24 @@ - + /* sqlid : com.interplug.qcast.canvasStatus.getCanvasStatusNewObjectNo */ + SELECT #{userId} + FORMAT(GETDATE(), 'yyMMdd') + RIGHT('000' + CAST(ISNULL(MAX(CAST(RIGHT(object_no, 3) AS INT)), 0) + 1 AS VARCHAR(3)), 3) + FROM TB_CANVAS_STATUS + WHERE object_no LIKE #{userId} + FORMAT(GETDATE(), 'yyMMdd') + '%' - + /* sqlid : com.interplug.qcast.canvasStatus.getCanvasStatusImageAdd */ + SELECT 'image' + RIGHT('00' + CAST(ISNULL(MAX(CAST(RIGHT(image_name, 2) AS INT)), 0) + 1 AS VARCHAR(2)), 2) + FROM TB_CANVAS_STATUS + WHERE object_no = #{objectNo} - /* sqlid : com.interplug.qcast.canvasStatus.selectAllCanvasStatus 전체 견적서 조회 */ SELECT id , user_id @@ -34,8 +33,8 @@ WHERE user_id = #{userId} - /* sqlid : com.interplug.qcast.canvasStatus.selectObjectNoCanvasStatus 견적서 조회 */ SELECT id , user_id @@ -49,29 +48,8 @@ AND object_no = #{objectNo} - - /* sqlid : com.interplug.qcast.canvasStatus.insertNewCanvasStatus 신규 견적서 등록 */ - INSERT INTO TB_CANVAS_STATUS - ( - user_id - , object_no - , image_name - , canvas_status - , regist_datetime - ) - VALUES ( - #{userId} - , ( SELECT #{userId} + FORMAT(GETDATE(), 'yyMMdd') + RIGHT('000' + CAST(ISNULL(MAX(CAST(RIGHT(object_no, 3) AS INT)), 0) + 1 AS VARCHAR(3)), 3) - FROM TB_CANVAS_STATUS - WHERE object_no LIKE #{userId} + FORMAT(GETDATE(), 'yyMMdd') + '%' ) - , 'image01' - , #{canvasStatus} - , GETDATE() - ) - - - - /* sqlid : com.interplug.qcast.canvasStatus.insertImageAddCanvasStatus 이미지(템플릿) 추가 등록 */ + + /* sqlid : com.interplug.qcast.canvasStatus.insertCanvasStatus 견적서 등록 */ INSERT INTO TB_CANVAS_STATUS ( user_id @@ -83,15 +61,13 @@ VALUES ( #{userId} , #{objectNo} - , ( SELECT 'image' + RIGHT('00' + CAST(ISNULL(MAX(CAST(RIGHT(image_name, 2) AS INT)), 0) + 1 AS VARCHAR(2)), 2) - FROM TB_CANVAS_STATUS - WHERE object_no = #{objectNo} ) + , #{imageName} , #{canvasStatus} , GETDATE() ) - - + + /* sqlid : com.interplug.qcast.canvasStatus.updateCanvasStatus 견적서 수정 */ UPDATE TB_CANVAS_STATUS SET canvas_status = #{canvasStatus} @@ -100,13 +76,13 @@ AND image_name = #{imageName} - + /* sqlid : com.interplug.qcast.canvasStatus.deleteObjectNoCanvasStatus 견적서 삭제 */ DELETE FROM TB_CANVAS_STATUS WHERE object_no = #{objectNo} - + /* sqlid : com.interplug.qcast.canvasStatus.deleteImageNameCanvasStatus 이미지(템플릿) 삭제 */ DELETE FROM TB_CANVAS_STATUS WHERE object_no = #{objectNo}