견적서 등록 시 생성된 id 반환 처리

This commit is contained in:
changkyu choi 2024-09-27 16:36:31 +09:00
parent f7a41332d5
commit 1a36f6211f
5 changed files with 55 additions and 11 deletions

View File

@ -2,6 +2,7 @@ package com.interplug.qcast.biz.canvasStatus;
import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatus;
import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusResponse;
import com.interplug.qcast.config.Exception.CanvasStatusException;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -27,14 +28,14 @@ public class CanvasStatusController {
@Operation(description = "견적서를 조회 한다.")
@GetMapping("/canvas-statuses/by-object/{objectNo}")
public List<CanvasStatusResponse> selectObjectNoCanvasStatus(@PathVariable String objectNo) {
return canvasStatusService.selectObjectNoCanvasStatus(objectNo);
public List<CanvasStatusResponse> selectObjectNoCanvasStatus(@PathVariable String objectNo, @PathVariable String userId) {
return canvasStatusService.selectObjectNoCanvasStatus(objectNo, userId);
}
@Operation(description = "견적서를 등록 한다.")
@PostMapping("/canvas-statuses")
@ResponseStatus(HttpStatus.CREATED)
public String insertCanvasStatus(@RequestBody CanvasStatus cs) {
public Integer insertCanvasStatus(@RequestBody CanvasStatus cs) throws CanvasStatusException {
return canvasStatusService.insertCanvasStatus(cs);
}

View File

@ -20,7 +20,10 @@ public interface CanvasStatusMapper {
public List<CanvasStatusResponse> selectAllCanvasStatus(String userId);
// 견적서 조회(objectNo)
public List<CanvasStatusResponse> selectObjectNoCanvasStatus(String objectNo);
public List<CanvasStatusResponse> selectObjectNoCanvasStatus(String objectNo, String userId);
// 견적서 조회(id)
public List<CanvasStatusResponse> selectIdCanvasStatus(String objectNo, String userId);
// 견적서 등록
public void insertCanvasStatus(CanvasStatus cs);

View File

@ -2,6 +2,7 @@ package com.interplug.qcast.biz.canvasStatus;
import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatus;
import com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusResponse;
import com.interplug.qcast.config.Exception.CanvasStatusException;
import lombok.RequiredArgsConstructor;
@ -20,21 +21,37 @@ public class CanvasStatusService {
}
// 견적서 조회(objectNo)
public List<CanvasStatusResponse> selectObjectNoCanvasStatus(String objectNo) {
return canvasStatusMapper.selectObjectNoCanvasStatus(objectNo);
public List<CanvasStatusResponse> selectObjectNoCanvasStatus(String objectNo, String userId) {
return canvasStatusMapper.selectObjectNoCanvasStatus(objectNo, userId);
}
// 견적서 등록
public String insertCanvasStatus(CanvasStatus cs) {
public Integer insertCanvasStatus(CanvasStatus cs) throws CanvasStatusException {
Integer id = 0;
// 먼저 데이터가 존재하는지 확인
List<CanvasStatusResponse> existingStatus = canvasStatusMapper.selectObjectNoCanvasStatus(cs.getObjectNo(), cs.getUserId());
// 데이터가 이미 존재하면 저장하지 않고 예외를 던짐
if (existingStatus.size() > 0) {
throw new CanvasStatusException("해당 objectNo로 이미 견적서가 존재합니다.");
}
// 데이터가 없으면 저장
try {
canvasStatusMapper.insertCanvasStatus(cs);
// 데이터 저장 Max id 확인
List<CanvasStatusResponse> maxId = canvasStatusMapper.selectIdCanvasStatus(cs.getObjectNo(), cs.getUserId());
id = maxId.get(0).getId();
} catch (Exception e) {
System.out.println("오류 발생 : " + e.getMessage());
throw new CanvasStatusException("견적서 등록 중 오류 발생");
}
// 생성된 objectNo 반환
return cs.getObjectNo();
// 생성된 id 반환
return id;
}

View File

@ -0,0 +1,13 @@
package com.interplug.qcast.config.Exception;
import java.io.Serial;
public class CanvasStatusException extends BaseException{
@Serial
private static final long serialVersionUID = 6263785244527827114L;
public CanvasStatusException(String message) {
super(message);
}
}

View File

@ -45,8 +45,18 @@
, last_edit_datetime
FROM TB_CANVAS_STATUS
WHERE object_no = #{objectNo}
AND user_id = #{userId}
</select>
<select id="selectIdCanvasStatus" parameterType="string"
resultType="com.interplug.qcast.biz.canvasStatus.dto.CanvasStatusResponse">
/* sqlid : com.interplug.qcast.canvasStatus.selectIdCanvasStatus 견적서 조회 */
SELECT MAX(id) AS id
FROM TB_CANVAS_STATUS
WHERE object_no = #{objectNo}
AND user_id = #{userId}
</select>
<insert id="insertCanvasStatus" parameterType="com.interplug.qcast.biz.canvasStatus.dto.CanvasStatus">
/* sqlid : com.interplug.qcast.canvasStatus.insertCanvasStatus 견적서 등록 */
INSERT INTO TB_CANVAS_STATUS