qcast-front/src/hooks/common/useMasterController.js
2025-01-21 11:07:47 +09:00

183 lines
6.1 KiB
JavaScript

import { useAxios } from '@/hooks/useAxios'
import { useMessage } from '@/hooks/useMessage'
import { useSwal } from '@/hooks/useSwal'
import { getQueryString } from '@/util/common-utils'
import { trestleRequest, constructionRequest, trestleDetailRequest } from '@/models/apiModels'
import { POST } from '@/app/api/image-upload/route'
import { canvasState } from '@/store/canvasAtom'
import { useRecoilValue } from 'recoil'
/**
* 마스터 컨트롤러 훅
* @returns
*/
export function useMasterController() {
const { get, post } = useAxios()
const { getMessage } = useMessage()
const { swalFire } = useSwal()
/**
* 지붕재 목록 조회
* @returns
*/
const getRoofMaterialList = async () => {
return await get({ url: '/api/v1/master/getRoofMaterialList' }).then((res) => {
console.log('🚀🚀 ~ getRoofMaterialList ~ res:', res)
return res
})
}
/**
* 모듈 타입별 아이템 목록 조회
* @param {지붕재 코드 목록} arrRoofMatlCd
* @returns
*/
const getModuleTypeItemList = async (paramArr) => {
if (!Array.isArray(paramArr) || paramArr.length === 0 || paramArr.length > 4 || paramArr.some((item) => !item || item.trim() === '')) {
swalFire({ text: getMessage('master.moduletypeitem.message.error'), type: 'alert', icon: 'error' })
return null
}
const paramString = `?${paramArr.map((item) => `arrRoofMatlCd=${item}`).join('&')}`
return await get({ url: `/api/v1/master/getModuleTypeItemList${paramString}` }).then((res) => {
// console.log('🚀🚀 ~ getModuleTypeItemList ~ res:', res)
return res
})
}
/**
* 가대 목록 조회
* @param {모듈타입코드} moduleTpCd
* @param {지붕재코드} roofMatlCd
* @param {서까래기초코드} raftBaseCd
* @param {가대메이커코드} trestleMkrCd
* @param {공법코드} constMthdCd
* @param {지붕기초코드} roofBaseCd
* @returns
*/
const getTrestleList = async (params) => {
const paramString = getQueryString(params)
// console.log('🚀🚀 ~ getTrestleList ~ paramString:', paramString)
return await get({ url: '/api/v1/master/getTrestleList' + paramString }).then((res) => {
// console.log('🚀🚀 ~ getTrestleList ~ res:', res)
return res
})
}
/**
* 모듈 시공법 목록 조회
* @param {모듈타입코드} moduleTpCd
* @param {지붕재코드} roofMatlCd
* @param {가대메이커코드} trestleMkrCd
* @param {공법코드} constMthdCd
* @param {지붕기초코드} roofBaseCd
* @param {면조도} illuminationTp
* @param {설치높이} instHt
* @param {풍속} stdWindSpeed
* @param {적설량} stdSnowLd
* @param {경사도코드} inclCd
* @param {서까래기초코드} raftBaseCd
* @param {하제(망둥어)피치} roofPitch
*
* @returns
*/
const getConstructionList = async (params) => {
const paramString = getQueryString(params)
// console.log('🚀🚀 ~ getConstructionList ~ paramString:', paramString)
return await get({ url: '/api/v1/master/getConstructionList' + paramString }).then((res) => {
// console.log('🚀🚀 ~ getConstructionList ~ res:', res)
return res
})
}
/**
* 가대 상세 조회
* @param {모듈타입코드} moduleTpCd
* @param {지붕재코드} roofMatlCd
* @param {가대메이커코드} trestleMkrCd
* @param {공법코드} constMthdCd
* @param {지붕기초코드} roofBaseCd
* @param {면조도} illuminationTp
* @param {설치높이} instHt
* @param {풍속} stdWindSpeed
* @param {적설량} stdSnowLd
* @param {경사도코드} inclCd
* @param {시공법} constTp
* @param {혼합모듈번호} mixMatlNo
* @param {하제(망둥어)피치}roofPitch
* @returns
*/
const getTrestleDetailList = async (params) => {
// const paramString = getQueryString(params)
return await post({ url: '/api/v1/master/getTrestleDetailList', data: params }).then((res) => {
return res
})
}
/**
* PCS 메이커, 시리즈 목록 조회
* @param {PCS 메이커코드} pcsMkrCd
* @param {혼합모듈번호} mixMatlNo
* @returns
*/
const getPcsMakerList = async (params = null) => {
let paramString = ''
if (params) {
paramString = getQueryString(params)
}
return await get({ url: '/api/v1/master/pcsMakerList' + paramString }).then((res) => {
return res
})
}
/**
* 모듈 타입별 아이템 목록 조회
* @param {PCS 메이커코드} pcsMkrCd
* @param {PCS시리즈코드 목록} pcsSerList
* @param {모듈아이템 ID 목록} moduleItemList
* @returns
*/
const getPcsModelList = async (params = null) => {
const test = {
pcsMkrCd: 'MKR003',
pcsSerList: [{ pcsSerCd: 'SER007' }, { pcsSerCd: 'SER009' }, { pcsSerCd: 'SER010' }],
moduleItemList: [
{ itemId: '107015', mixMatlNo: null },
{ itemId: '107077', mixMatlNo: null },
{ itemId: '107015', mixMatlNo: null },
],
}
return await post({ url: '/api/v1/master/getPcsSeriesItemList', data: params }).then((res) => {
return res
})
}
/**
* 시리즈중 자동으로 추천 PCS 정보 조회
* @param {Max접속(과적)여부} maxConnYn
* @param {동일회로도여부} smpCirYn
* @param {한랭지여부} coldZoneYn
* @param {사용된 모듈 아이템 List} useModuleItemList
* @param {지붕면별 목록} roofSurfaceList
* @param {PCS 제품 목록} pcsItemList
* @returns
*/
const getPcsAutoRecommendList = async (params = null) => {
const paramString = getQueryString(params)
return await post({ url: '/api/master/pcsAutoRecommendList', data: params }).then((res) => {
console.log('🚀🚀 ~ getPcsAutoRecommendList ~ res:', res)
return res
})
}
return {
getRoofMaterialList,
getModuleTypeItemList,
getTrestleList,
getConstructionList,
getTrestleDetailList,
getPcsMakerList,
getPcsModelList,
getPcsAutoRecommendList,
}
}