import { useAxios } from '@/hooks/useAxios' import { useMessage } from '@/hooks/useMessage' import { useSwal } from '@/hooks/useSwal' import { getQueryString } from '@/util/common-utils' /** * 마스터 컨트롤러 훅 * @returns */ export function useMasterController() { const { get, post, put } = 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) => { 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) => { return await post({ url: '/api/v1/master/getPcsAutoRecommendList', data: params }).then((res) => { return res }) } const getPcsManualConfChk = async (params = null) => { return await post({ url: '/api/v1/master/getPcsMenualConfChk', data: params }).then((res) => { return res }) } /** * PCS로 회로 구성 가능 여부 체크 * @param {Max접속(과적)여부} maxConnYn * @param {동일회로도여부} smpCirYn * @param {한랭지여부} coldZoneYn * @param {사용된 모듈 아이템 List} useModuleItemList * @param {지붕면별 목록} roofSurfaceList * @param {PCS 제품 목록} pcsItemList * @returns */ const getPcsVoltageChk = async (params = null) => { return await post({ url: '/api/v1/master/getPcsVoltageChk', data: params }).then((res) => { return res }) } /** * PCS 승압설정 정보 조회 * @param {Max접속(과적)여부} maxConnYn * @param {동일회로도여부} smpCirYn * @param {한랭지여부} coldZoneYn * @param {사용된 모듈아이템 목록} useModuleItemList * @param {지붕면 목록} roofSurfaceList * @param {PCS 아이템 목록} pcsItemList * @returns */ const getPcsVoltageStepUpList = async (params2 = null) => { // roofSurfaceList의 moduleList에서 circuit 속성을 제외 const modifiedRoofSurfaceList = params2.roofSurfaceList.map((surface) => ({ ...surface, moduleList: surface.moduleList.map((module) => ({ itemId: module.itemId, uniqueId: module.uniqueId, })), })) const params = { ...params2, maxConnYn: params2.maxConnYn, smpCirYn: params2.smpCirYn, coldZoneYn: params2.coldZoneYn, useModuleItemList: params2.useModuleItemList, roofSurfaceList: modifiedRoofSurfaceList, pcsItemList: params2.pcsItemList, } return await post({ url: '/api/v1/master/getPcsVoltageStepUpList', data: params }).then((res) => { return res }) } const getQuotationItem = async (params) => { return await post({ url: '/api/v1/master/getQuotationItem', data: params }) .then((res) => { return res }) .catch((error) => { console.log('🚀 ~ getQuotationItem ~ error:', error) setIsGlobalLoading(false) }) } /** * 물건 정보 업데이트 api 호출 * @param {objectNo standardWindSpeedId verticalSnowCover surfaceType installHeight userId} params * @param {물건번호 기준풍속코드 적설량 면조도구분 설치높이 작성자아아디 } params * @returns */ const updateObjectDate = async (params = null) => { return await put({ url: '/api/object/update-object-date', data: params }) } /** * PCS 접속함 및 옵션 목록 조회 * @param {사용된 모듈 아이템 목록} useModuleItemList * @param {PCS 제품 목록} pcsItemList * @returns */ const getPcsConnOptionItemList = async (params = null) => { return await post({ url: '/api/v1/master/getPcsConnOptionItemList', data: params }).then((res) => { return res }) } return { getRoofMaterialList, getModuleTypeItemList, getTrestleList, getConstructionList, getTrestleDetailList, getPcsMakerList, getPcsModelList, getPcsAutoRecommendList, getPcsVoltageChk, getPcsManualConfChk, getPcsVoltageStepUpList, updateObjectDate, getQuotationItem, getPcsConnOptionItemList, } }