qcast-api/src/main/java/com/interplug/qcast/biz/canvaspopupstatus/CanvasPopupStatusService.java

150 lines
5.6 KiB
Java

package com.interplug.qcast.biz.canvaspopupstatus;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.interplug.qcast.biz.canvasBasicSetting.CanvasBasicSettingMapper;
import com.interplug.qcast.biz.canvasBasicSetting.dto.CanvasBasicSettingResponse;
import com.interplug.qcast.biz.canvaspopupstatus.dto.CanvasPopupStatus;
import com.interplug.qcast.biz.estimate.dto.EstimateApiResponse;
import com.interplug.qcast.config.Exception.ErrorCode;
import com.interplug.qcast.config.Exception.QcastException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class CanvasPopupStatusService {
private final CanvasPopupStatusMapper canvasPopupStatusMapper;
private final CanvasBasicSettingMapper canvasBasicSettingMapper;
/**
* Canvas Popup Status 조회
*
* @param objectNo 조회할 object 번호
* @param planNo 조회할 plan 번호
* @param popupType 조회할 popup 타입
* @return 조회된 CanvasPopupStatus 객체, 조회된 데이터가 없을 경우 빈 객체 반환
*/
public CanvasPopupStatus selectCanvasPopupStatus(
String objectNo, Integer planNo, String popupType) throws QcastException {
CanvasPopupStatus request =
CanvasPopupStatus.builder().objectNo(objectNo).planNo(planNo).popupType(popupType).build();
CanvasPopupStatus cps = canvasPopupStatusMapper.selectCanvasPopupStatus(request);
return cps != null ? cps : CanvasPopupStatus.builder().build();
}
/**
* Canvas Popup Status 저장 - 이미 존재하는 데이터인 경우 수정, 없는 경우 생성
*
* @param cps 저장할 CanvasPopupStatus 객체
* @throws QcastException 저장 중 예외 발생 시
*/
@Transactional
public void saveCanvasPopupStatus(CanvasPopupStatus cps) throws QcastException {
CanvasPopupStatus chk = canvasPopupStatusMapper.selectCanvasPopupStatus(cps);
if (chk == null) {
createCanvasPopupStatus(cps);
} else {
updateCanvasPopupStatus(cps);
}
//기초정보 업데이트 (roofHajebichi)
String hajebichi = cps.getHajebichi();
if(hajebichi != null && !hajebichi.isEmpty()){
CanvasBasicSettingResponse canvasBasicSettingResponse = new CanvasBasicSettingResponse();
canvasBasicSettingResponse.setObjectNo(cps.getObjectNo());
canvasBasicSettingResponse.setPlanNo(cps.getPlanNo());
canvasBasicSettingResponse.setRoofHajebichi(Integer.valueOf(hajebichi));
canvasBasicSettingMapper.updateHajebichRoofMaterialsAdd(canvasBasicSettingResponse);
}
// String popupStatus = cps.getPopupStatus();
// List<Integer> hajebichiList = new ArrayList<>();//getHajebichiValues(popupStatus, 0, 1); // roofIndex=0, planNo=1인 hajebichi 값들 조회
//
// try {
// ObjectMapper mapper = new ObjectMapper();
// JsonNode rootNode = mapper.readTree(popupStatus);
// JsonNode roofConstructions = rootNode.get("roofConstructions");
// if (roofConstructions.isArray()) {
// for (JsonNode construction : roofConstructions) {
// JsonNode addRoof = construction.get("addRoof");
// if (addRoof != null
// && addRoof.get("roofIndex").asInt() == 0
// && addRoof.get("planNo").asInt() == cps.getPlanNo()) {
// hajebichiList.add(addRoof.get("hajebichi").asInt());
// }
// }
// }
//
// } catch (JsonProcessingException e) {
// throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR, "JSON 파싱 오류");
// }
// if(!hajebichiList.isEmpty()){
// CanvasBasicSettingResponse canvasBasicSettingResponse = new CanvasBasicSettingResponse();
// canvasBasicSettingResponse.setObjectNo(cps.getObjectNo());
// canvasBasicSettingResponse.setPlanNo(cps.getPlanNo());
// canvasBasicSettingResponse.setRoofHajebichi(hajebichiList.get(0));
//
// if(canvasBasicSettingResponse.getRoofHajebichi() > 0){
// canvasBasicSettingMapper.updateHajebichRoofMaterialsAdd(canvasBasicSettingResponse);
// }
//
// }
}
/**
* Canvas Popup Status 생성
*
* @param cps 생성할 CanvasPopupStatus 객체
* @throws QcastException 생성 중 예외 발생 시
*/
@Transactional
public void createCanvasPopupStatus(CanvasPopupStatus cps) throws QcastException {
try {
canvasPopupStatusMapper.insertCanvasPopupStatus(cps);
} catch (Exception e) {
throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR, e.getMessage());
}
}
/**
* Canvas Popup Status 수정
*
* @param cps 수정할 CanvasPopupStatus 객체
* @throws QcastException 수정 중 예외 발생 시
*/
public void updateCanvasPopupStatus(CanvasPopupStatus cps) throws QcastException {
try {
canvasPopupStatusMapper.updateCanvasPopupStatus(cps);
} catch (Exception e) {
throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR, e.getMessage());
}
}
/**
* Canvas Popup Status 삭제
*
* @param cps 삭제할 CanvasPopupStatus 객체
* @throws QcastException 삭제 중 예외 발생 시
*/
public void deleteCanvasPopupStatus(CanvasPopupStatus cps) throws QcastException {
try {
canvasPopupStatusMapper.deleteCanvasPopupStatus(cps);
} catch (Exception e) {
throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR, e.getMessage());
}
}
}