배치면초기설정 유무 추가 및 수정

This commit is contained in:
changkyu choi 2024-12-23 11:00:40 +09:00
parent cc6ed2ea43
commit b953998a19
6 changed files with 145 additions and 48 deletions

View File

@ -2,6 +2,7 @@ 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.config.Exception.QcastException;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -23,22 +24,29 @@ public class CanvasBasicSettingController {
private final CanvasBasicSettingService canvasBasicSettingService;
@Operation(description = "Canvas Basic Setting 정보를 조회 한다.")
@GetMapping("/canvas-basic-settings/by-object/{objectNo}")
public List<CanvasBasicSettingResponse> selectCanvasBasicSetting(@PathVariable String objectNo) {
@GetMapping("/canvas-basic-settings/by-object/{objectNo}/{roofApply}")
public List<CanvasBasicSettingResponse> selectCanvasBasicSetting(@PathVariable String objectNo, @PathVariable String roofSeq) {
log.debug("Basic Setting 조회 ::::: " + objectNo);
log.debug("Basic Setting 조회 ::::: " + objectNo + " " + roofSeq);
return canvasBasicSettingService.selectCanvasBasicSetting(objectNo);
return canvasBasicSettingService.selectCanvasBasicSetting(objectNo, roofSeq);
}
@Operation(description = "Canvas Basic Setting 정보를 등록 한다.")
@PostMapping("/canvas-basic-settings")
@ResponseStatus(HttpStatus.CREATED)
public Map<String, String> insertCanvasBasicSetting(@RequestBody CanvasBasicSettingInfo csi) {
public Map<String, String> insertCanvasBasicSetting(@RequestBody CanvasBasicSettingInfo csi) throws QcastException {
log.debug("Basic Setting 등록 ::::: " + csi.getObjectNo());
return canvasBasicSettingService.insertCanvasBasicSetting(csi);
}
@Operation(description = "Canvas 지붕재추가 Setting 정보를 삭제 한다.")
@DeleteMapping("/canvas-basic-settings/delete-RoofMaterials/{objectNo}/{roofApply}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void deleteRoofMaterialsAdd(@PathVariable String objectNo, @PathVariable String roofSeq) throws QcastException {
canvasBasicSettingService.deleteRoofMaterialsAdd(objectNo, roofSeq);
}
}

View File

@ -11,16 +11,28 @@ import com.interplug.qcast.biz.canvasBasicSetting.dto.RoofMaterialsAddInfo;
@Mapper
public interface CanvasBasicSettingMapper {
// Canvas Basic Setting 유무 조회
public CanvasBasicSettingInfo getCanvasBasicSettingCnt(String objectNo);
// Canvas Basic Setting 조회(objectNo)
public List<CanvasBasicSettingResponse> selectCanvasBasicSetting(String objectNo);
public List<CanvasBasicSettingResponse> selectCanvasBasicSetting(String objectNo, String roofSeq);
// Canvas Basic Setting 등록
public void insertCanvasBasicSetting(CanvasBasicSettingInfo csi);
// Canvas Basic Setting 수정
public void updateCanvasBasicSetting(CanvasBasicSettingInfo csi);
// Canvas 지붕재추가 Setting 유무 조회
public RoofMaterialsAddInfo getRoofMaterialsCnt(String objectNo, String roofSeq);
// Canvas 지붕재추가 Setting 등록
public void insertRoofMaterialsAdd(RoofMaterialsAddInfo rma);
// Canvas 지붕재추가 Setting 수정
public void updateRoofMaterialsAdd(RoofMaterialsAddInfo rma);
// Canvas 지붕재추가 Setting 삭제
public void deleteRoofMaterialsAdd(String objectNo);
public void deleteRoofMaterialsAdd(String objectNo, String roofSeq);
}

View File

@ -11,6 +11,8 @@ 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;
import com.interplug.qcast.config.Exception.ErrorCode;
import com.interplug.qcast.config.Exception.QcastException;
@Service
@RequiredArgsConstructor
@ -18,35 +20,57 @@ public class CanvasBasicSettingService {
private final CanvasBasicSettingMapper canvasBasicSettingMapper;
// Canvas Basic Setting 조회(objectNo)
public List<CanvasBasicSettingResponse> selectCanvasBasicSetting(String objectNo) {
return canvasBasicSettingMapper.selectCanvasBasicSetting(objectNo);
public List<CanvasBasicSettingResponse> selectCanvasBasicSetting(String objectNo, String roofSeq) {
return canvasBasicSettingMapper.selectCanvasBasicSetting(objectNo, roofSeq);
}
// Canvas Basic Setting 등록
public Map<String, String> insertCanvasBasicSetting(CanvasBasicSettingInfo csi) {
public Map<String, String> insertCanvasBasicSetting(CanvasBasicSettingInfo csi) throws QcastException {
Map<String, String> response = new HashMap<>();
if (csi.getObjectNo() == null) {
throw new QcastException (ErrorCode.INVALID_INPUT_VALUE ,"올바르지 않은 입력값입니다.");
}
try {
// 도면/치수/각도 정보 insert/update
canvasBasicSettingMapper.insertCanvasBasicSetting(csi);
// 먼저 데이터가 존재하는지 확인
CanvasBasicSettingInfo cntData = canvasBasicSettingMapper.getCanvasBasicSettingCnt(csi.getObjectNo());
// 기존 지붕재추가 정보 삭제 insert
canvasBasicSettingMapper.deleteRoofMaterialsAdd(csi.getObjectNo());
int roofSeq = 1;
// for-each 루프를 사용하여 지붕재추가 Setting
for (RoofMaterialsAddInfo rma : csi.getRoofMaterialsAddList()) {
rma.setObjectNo(csi.getObjectNo());
rma.setRoofSeq(roofSeq++); //roofSeq는 순차적으로 새로 생성하여 insert
// 신규 지붕재추가 정보 insert
canvasBasicSettingMapper.insertRoofMaterialsAdd(rma);
}
response.put("objectNo", csi.getObjectNo());
response.put("returnMessage", "common.message.confirm.mark");
// 데이터가 존재하지 않으면 insert
if (cntData.getRoofCnt().intValue() < 1) {
// 도면/치수/각도 정보 insert
canvasBasicSettingMapper.insertCanvasBasicSetting(csi);
// for-each 루프를 사용하여 지붕재추가 Setting
for (RoofMaterialsAddInfo rma : csi.getRoofMaterialsAddList()) {
rma.setObjectNo(csi.getObjectNo());
// 신규 지붕재추가 정보 insert
canvasBasicSettingMapper.insertRoofMaterialsAdd(rma);
}
response.put("objectNo", csi.getObjectNo());
response.put("returnMessage", "common.message.confirm.mark");
} else {
// 도면/치수/각도 정보 update
canvasBasicSettingMapper.updateCanvasBasicSetting(csi);
// for-each 루프를 사용하여 지붕재추가 Setting
for (RoofMaterialsAddInfo rma : csi.getRoofMaterialsAddList()) {
rma.setObjectNo(csi.getObjectNo());
// 신규 지붕재추가 정보 insert
canvasBasicSettingMapper.updateRoofMaterialsAdd(rma);
}
response.put("objectNo", csi.getObjectNo());
response.put("returnMessage", "common.message.confirm.mark");
}
} catch (Exception e) {
response.put("objectNo", csi.getObjectNo());
@ -57,5 +81,24 @@ public class CanvasBasicSettingService {
return response;
}
// 지붕재추가 삭제
public void deleteRoofMaterialsAdd(String objectNo, String roofSeq) throws QcastException {
if (objectNo == null || objectNo.trim().isEmpty() || roofSeq == null || roofSeq.trim().isEmpty()) {
throw new QcastException (ErrorCode.INVALID_INPUT_VALUE ,"올바르지 않은 입력값입니다.");
}
// 먼저 데이터가 존재하는지 확인
RoofMaterialsAddInfo cntData = canvasBasicSettingMapper.getRoofMaterialsCnt(objectNo, roofSeq);
// 데이터가 존재하지 않으면 수정하지 않고 예외를 던짐
if (cntData.getRoofCnt().intValue() > 0) {
canvasBasicSettingMapper.deleteRoofMaterialsAdd(objectNo, roofSeq);
} else {
throw new QcastException (ErrorCode.NOT_FOUND ,"삭제할 지붕재가 존재하지 않습니다.");
}
}
}

View File

@ -11,8 +11,9 @@ import lombok.Setter;
public class CanvasBasicSettingInfo {
private String objectNo; //견적서 번호
private int roofSizeSet; //치수(복사도/실측값/육지붕)
private Integer roofSizeSet; //치수(복사도/실측값/육지붕)
private String roofAngleSet; //각도(경사/각도)
private Integer roofCnt; //존재여부
private Date registDatetime; //생성일시
private Date lastEditDatetime; //수정일시

View File

@ -11,13 +11,14 @@ public class RoofMaterialsAddInfo {
private String objectNo; //견적서 번호
private boolean roofApply; //적용
private int roofSeq; //순번 SEQ
private Integer roofSeq; //순번 SEQ
private String roofMatlCd; //타입
private int roofWidth; //넓이
private int roofHeight; //높이
private int roofHajebichi; //하제비치
private Integer roofWidth; //넓이
private Integer roofHeight; //높이
private Integer roofHajebichi; //하제비치
private String roofGap; //간격
private String roofLayout; //방식
private Integer roofCnt; //존재여부
private Date registDatetime; //생성일시
private Date lastEditDatetime; //수정일시

View File

@ -2,6 +2,14 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.interplug.qcast.biz.canvasBasicSetting.CanvasBasicSettingMapper">
<select id="getCanvasBasicSettingCnt" parameterType="string"
resultType="com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingInfo">
/* sqlid : com.interplug.qcast.canvasBasicSetting.getCanvasBasicSettingCnt Canvas Basic Setting 유무 */
SELECT COUNT(1) AS cnt
FROM TB_CANVAS_BASIC_SETUP
WHERE object_no = #{objectNo}
</select>
<select id="selectCanvasBasicSetting" parameterType="string"
resultType="com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingResponse">
@ -20,22 +28,12 @@
FROM TB_CANVAS_BASIC_SETUP cbs
LEFT JOIN TB_CANVAS_ROOF_MATERIALS_ADD crma
ON cbs.object_no = crma.object_no
WHERE cbs.object_no = #{objectNo}
WHERE cbs.object_no = #{objectNo}
</select>
<insert id="insertCanvasBasicSetting" parameterType="com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingInfo">
/* 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_size_set = #{roofSizeSet}
, roof_angle_set = #{roofAngleSet}
, last_edit_datetime = GETDATE()
WHEN NOT MATCHED THEN
INSERT
/* sqlid : com.interplug.qcast.canvasBasicSetting.insertCanvasBasicSetting Canvas Basic Setting 등록 */
INSERT INTO TB_CANVAS_BASIC_SETUP
(
object_no
, roof_size_set
@ -52,7 +50,25 @@
);
</insert>
<insert id="insertRoofMaterialsAdd" parameterType="com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingInfo">
<update id="updateCanvasBasicSetting" parameterType="com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingInfo">
/* sqlid : com.interplug.qcast.canvasBasicSetting.updateCanvasBasicSetting Canvas Basic Setting 수정 */
UPDATE TB_CANVAS_BASIC_SETUP
SET roof_size_set = #{roofSizeSet}
, roof_angle_set = #{roofAngleSet}
, last_edit_datetime = GETDATE()
WHERE object_no = #{objectNo}
</update>
<select id="getRoofMaterialsCnt" parameterType="string"
resultType="com.interplug.qcast.biz.canvasBasicSetting.dto.RoofMaterialsAddInfo">
/* sqlid : com.interplug.qcast.canvasBasicSetting.getRoofMaterialsCnt Canvas 지붕재추가 Setting 유무 */
SELECT COUNT(1) AS cnt
FROM TB_CANVAS_BASIC_SETUP
WHERE object_no = #{objectNo}
AND roof_seq = #{roofSeq}
</select>
<insert id="insertRoofMaterialsAdd" parameterType="com.interplug.qcast.biz.canvasBasicSetting.dto.RoofMaterialsAddInfo">
/* sqlid : com.interplug.qcast.canvasBasicSetting.insertRoofMaterialsAdd Canvas 지붕재추가 Setting 등록 */
INSERT INTO TB_CANVAS_ROOF_MATERIALS_ADD
(
@ -65,7 +81,7 @@
, roof_hajebichi
, roof_gap
, roof_layout
, regist_datetime
, regist_datetime
, last_edit_datetime
)
VALUES (
@ -83,11 +99,27 @@
);
</insert>
<update id="updateRoofMaterialsAdd" parameterType="com.interplug.qcast.biz.canvasBasicSetting.dto.RoofMaterialsAddInfo">
/* sqlid : com.interplug.qcast.canvasBasicSetting.updateRoofMaterialsAdd Canvas 지붕재추가 Setting 수정 */
UPDATE TB_CANVAS_ROOF_MATERIALS_ADD
SET roof_apply
, roof_seq = #{roofSeqv}
, roof_matl_cd = #{roofMatlCd}
, roof_width = #{roofWidth}
, roof_height = #{roofHeight}
, roof_hajebichi = #{roofHajebichi}
, roof_gap = #{roofGap}
, roof_layout = #{roofLayout}
, last_edit_datetime = GETDATE()
WHERE object_no = #{objectNo}
AND roof_seq = #{roofApply}
</update>
<delete id="deleteRoofMaterialsAdd" parameterType="string">
/* sqlid : com.interplug.qcast.canvasBasicSetting.deleteRoofMaterialsAdd Canvas 지붕재추가 Setting 삭제 */
DELETE FROM TB_CANVAS_ROOF_MATERIALS_ADD
WHERE object_no = #{objectNo}
AND roof_seq = 1
AND roof_seq = #{roofSeq}
</delete>
</mapper>