150 lines
5.6 KiB
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());
|
|
}
|
|
}
|
|
}
|